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
- Tablet
- Shard
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?
/Untitled-481.png)
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