docs

https://debezium.io/blog/2020/11/04/streaming-vitess-at-bolt/

https://rancher.com/blog/2018/2018-08-31-intro-to-vitess-on-kubernetes/


Para criar um database:

  • Keyspace
    • Shard
      • Tablet
        • Schema

Aplicar schema:

vtctlclient ApplySchema -sql="$(cat schema.sql)" <keyspace>
  • Talvez seja necessário subir um pod ‘vttablet’ no k8s antes de criar um ‘tablet’ no vitess (a entidade ‘tablet’ representa o pod ‘vttablet’
  • Para provisionar pods vttablet, utilizar o planetscale/vitess-operator
  • O vitess-operator implementa o CRD

201_customer_tablets.yaml || https://vitess.io/docs/user-guides/migration/move-tables/

Helm:

topology:
  deploymentType: test
  cells:
    - name: "zone1"
      vtctld:
        replicas: 1
      vtgate:
        replicas: 1
      mysqlProtocol:
        enabled: true
        authType: "none"
      keyspaces:
        - name: "commerce"
          shards:
            - name: "0"
              tablets:
                - type: "replica"
                  vttablet:
                    replicas: 3
        - name: "customer"
          shards:
            - name: "0"
              tablets:
                - type: "replica"
                  vttablet:
                    replicas: 3
 
vttablet:
  terminationGracePeriodSeconds: 1
 
pmm:
  enabled: false
 
orchestrator:
  enabled: false (1)

Operator:

apiVersion: planetscale.com/v2
kind: VitessCluster
metadata:
  name: example
spec:
  images:
    vtctld: vitess/lite:v6.0.20-20200429
    vtgate: vitess/lite:v6.0.20-20200429
    vttablet: vitess/lite:v6.0.20-20200429
    vtbackup: vitess/lite:v6.0.20-20200429
    mysqld:
      mysql56Compatible: vitess/lite:v6.0.20-20200429
    mysqldExporter: prom/mysqld-exporter:v0.11.0
  cells:
  - name: zone1
    gateway:
      authentication:
        static:
          secret:
            name: example-cluster-config
            key: users.json
      replicas: 1
      resources:
        requests:
          cpu: 100m
          memory: 256Mi
        limits:
          memory: 256Mi
  vitessDashboard:
    cells:
    - zone1
    extraFlags:
      security_policy: read-only
    replicas: 1
    resources:
      limits:
        memory: 128Mi
      requests:
        cpu: 100m
        memory: 128Mi
 
  keyspaces:
  - name: commerce
    turndownPolicy: Immediate
    partitionings:
    - equal:
        parts: 1
        shardTemplate:
          databaseInitScriptSecret:
            name: example-cluster-config
            key: init_db.sql
          replication:
            enforceSemiSync: false
          tabletPools:
          - cell: zone1
            type: replica
            replicas: 2
            vttablet:
              extraFlags:
                db_charset: utf8mb4
              resources:
                requests:
                  cpu: 100m
                  memory: 256Mi
            mysqld:
              resources:
                requests:
                  cpu: 100m
                  memory: 256Mi
            dataVolumeClaimTemplate:
              accessModes: ["ReadWriteOnce"]
              resources:
                requests:
                  storage: 10Gi
  - name: customer
    turndownPolicy: Immediate
    partitionings:
    - equal:
        parts: 1
        shardTemplate:
          databaseInitScriptSecret:
            name: example-cluster-config
            key: init_db.sql
          replication:
            enforceSemiSync: false
          tabletPools:
          - cell: zone1
            type: replica
            replicas: 2
            vttablet:
              extraFlags:
                db_charset: utf8mb4
              resources:
                requests:
                  cpu: 100m
                  memory: 256Mi
            mysqld:
              resources:
                requests:
                  cpu: 100m
                  memory: 256Mi
            dataVolumeClaimTemplate:
              accessModes: ["ReadWriteOnce"]
              resources:
                requests:
                  storage: 10Gi
  updateStrategy:
    type: Immediate (1)

Como criar os tablets:

  • Aplicar novos nodes usando o yaml
  • Criar keyspace
  • Criar vtablet usando “InitTablet” com “vtctlclient”
vtctlclient InitTablet -parent -db_name_override=conformus -hostname=<vttablet_pod> -keyspace=conformus -port=15000 -grpc_port=15999 -mysql_port=3306 <cell-uid> master
## Shard path missmatch?

O bug acontece pq o deploy foi feito com vtgates independentes. Então o vtgate do exemplo não consegue acessar o keyspace dos novos tablets. Para isso, precisa trocar o vtgate do port foward

## COMO CRIAR O CLUSTER (mariadb):

Utilize o operator, apenas troque o yaml de “initial_cluster” para usar o mariadb: https://vitess.io/docs/get-started/operator/ 101_initial_cluster_mariadb103.yaml ## COMO AMPLIAR O CLUSTER (FINALMENTE):

- Crie o novo keyspace:
vtctlclient CreateKeyspace <keyspace_name>
- Use esse yaml para criar novos vttablets no seu novo keyspace (sem criar novos vtgates, etcd servers e etc):
kubectl -n vitess apply -f <name>.yaml
[[Computer $h1t/Databases/Vitess (MySQL)/new vttablets yaml]]

- Crie seu schema e seja feliz:
vtctlclient ApplySchema -sql="$(cat schema.sql)" conformus

🌱 Back to Garden

3 items under this folder.