Vitess入門
インフラコースのインターンシップに参加させていただいた岩井です.今回はnendのDBについての検証作業を5日間取り組みました.
期間中は大きく分けてVitessのチュートリアルを使った主要機能の確認と,本番データを用いたVitessの動作検証を行いました.本ブログでは主に前者について紹介していきたいと思います.
Vitessとは
CNCFのGraduatedプロジェクトの一つで,シャーディングによって水平スケーリングが可能なMySQL互換のDBです.https://vitess.io/
Youtubeが開発したDBとなっており,YoutubeがGoogleに買収された後Borg(のちのKubernetes)をサポートするように改修されました.そのためローカル環境で構築することができるものの,Kubernetes上で動作させることが推奨されています.また,PlanetScale社がDBaaSを提供していたりします. https://www.planetscale.com/
Vitessのアーキテクチャは https://www.planetscale.com/のような構成になっております.
- VTTablet: K8s上ではMySQLコンテナとサードカー構成で設計されており,アプリケーションからはVTTabletを経由してMySQLへ接続される構成になっており,有害なクエリからMySQLを守ったりなどのアクセス制御をおこなっています. また,MySQLとVTTabletを合わせてTabletと読んでおり,Tabletは以下のような6種類の役割を果たすことができます.
- master
- replica
- rdonly
- backup
- restore
- drained
- Topology: Vitessのメタデータストアになっており,K8s上に構築される場合etcdが使用されます. Topologyにはシャーディングされたデータの配置状況やスキームの情報などが格納されており,vtctlやVTGateはTopologyの情報を見てデータにアクセスすることができます.
- VTGate: アプリケーションからのアクセスを一手に引き受けるStatelessなプロキシサーバです.アプリケーションからアクセスを受け取ったVTgateはTopologyのデータ配置状況を元にルーティングを行います. VTGateがデータの存在するTabletへ導いてくれるため,アプリケーションは特別な処理を必要とせずMySQLとほぼ同様にアクセスすることができます.
機能
Vitessにはhttps://vitess.io/docs/overview/architecture/のようにKeySpaceと呼ばれる論理的なグループがあり,水平シャーディングされた複数のTablet(MySQL+VTTablet)で構成されています.またキースペースは複数存在し,あるキースペースから別のキースペースへテーブルを分割する垂直シャーディングであるMovetableと呼ばれる機能も実装されており,Vitessはこのようなコンポーネントを使って以下の二種類のシャーディング機能を提供しています.
- 垂直シャーディング:あるキースペースから別のキースペースへテーブルを分割する.
- 水平シャーディング:DBを水平方向にスケーリングさせ,複数のTabletから構成されたKeySpace単位で扱う.
Vitessの構築
K8s上へVitessをデプロイする方法としては,Helmを使った方法とVitess-Operatorを使った方法があるのですが,今回はHelmを用いて構築していきます.また,EKSを使って構築した2workerノードのK8sクラスタを使用していきます. 本記事では主に水平シャーディングと垂直シャーディングの構築をおこなっていきます.全体的な作業の流れはチュートリアルと同じですが,異なる部分も多々あるので注意してください.
ツール類の準備
以下のツールを作業用マシンへ予めインストールしておいてください.
- kubectl
- kubens
- helm3
Vitessクラスタの構築
Vitess関連ツールのインストール
- mysql-client
$ sudo apt install -y mysql-client
$ mysql --version
mysql Ver 8.0.20-0ubuntu0.20.04.1 for Linux on x86_64 ((Ubuntu))
- vtctlclient
$ curl -OL https://github.com/vitessio/vitess/releases/download/v6.0.20-20200624/vitess-6.0.20-20200624-9438d77.tar.gz
$ tar xzf vitess-6.0.20-20200624-9438d77.tar.gz
$ sudo mv itess-6.0.20-20200624-9438d77/bin/vtctlclient /usr/bin/
- Vitess GitHubリポジトリ
$ git clone git@github.com:vitessio/vitess.git
構築
スキーマなどの適用はvtclientctlコマンドで行うこともできますが,今回はK8sのJobを作成し,実行させていきます.
単一キースペースクラスタの起動(水平シャーディングなし)
サンプルではデータがvarbinaryで保存されていますが,今回は可読性をあげるために101_initial_cluster.yamlを以下のように変更し,101_initial_cluster_improve.yamlを作成しました.
$ diff vitess/examples/helm/101_initial_cluster.yaml vitess/examples/helm/101_initial_cluster_improve.yaml
23,24c23,24
< sku varbinary(128),
< description varbinary(128),
---
> sku varchar(255),
> description varchar(255),
30c30
< email varbinary(128),
---
> email varchar(255),
36c36
< sku varbinary(128),
---
> sku varchar(255),
- 起動
$ cd vitess/examples/helm
$ kubectl create ns vitess
$ helm install vitess --namespace vitess ../../helm/vitess -f 101_initial_cluster_improve.yaml
$ kubectl ns vitess
# Jobの(shard-pod(pod/zone1-commerce-0-init-shard-master-xxxx)完了を確認
$ kubectl get pod -l initShardMasterJob=true
NAME READY STATUS RESTARTS AGE
zone1-commerce-0-init-shard-master-jpmc7 0/1 Completed 0 2m17s
- vtgateとvtctldの外部疎通性確保
ここではポートフォワードによる方法とNodePortサービスによる方法を紹介します.EKSを使用しているので,NodePortを使用する際はインスタンスの所定ポートを事前に開けておく必要があります.
- ポートフォワード
$ nohup kubectl port-forward svc/vtgate-zone1 3306:3306 &
$ nohup kubectl port-forward svc/vtctld 15999:15999 &
$ ps auxk -pcpu | grep "kubectl port-forward" | grep -v "grep"
y_iwai 95288 0.0 0.5 145136 41008 ? Sl 04:03 0:00 kubectl port-forward svc/vtgate-zone1 3306:3306
y_iwai 95312 0.0 0.4 145136 36976 ? Sl 04:03 0:00 kubectl port-forward svc/vtctld 15999:15999
- NodePort
Helmチャートの以下の部分を変更すると使用できるようになります.
_vtctld.tpl
31a32,34
> {{ if .serviceType | default $defaultVtctld.serviceType "NodePort" }}
> nodePort: {{ .webNodePort | default $defaultVtctld.webNodePort }}
> {{ end }}
33a37,39
> {{ if .serviceType | default $defaultVtctld.serviceType "NodePort" }}
> nodePort: {{ .grpcNodePort | default $defaultVtctld.grpcNodePort }}
> {{ end }}
_vtgate.tpl
> {{ if .serviceType | default $defaultVtgate.serviceType "NodePort" }}
> nodePort: {{ .webNodePort | default $defaultVtgate.webNodePort }}
> {{ end }}
33a37,39
> {{ if .serviceType | default $defaultVtgate.serviceType "NodePort" }}
> nodePort: {{ .grpcNodePort | default $defaultVtgate.grpcNodePort }}
> {{ end }}
36a43,45
> {{ if .serviceType | default $defaultVtgate.serviceType "NodePort" }}
> nodePort: {{ .mysqlNodePort | default $defaultVtgate.mysqlNodePort }}
> {{ end }}
values.yaml
189a190,191
> webNodePort: 31650
> grpcNodePort: 31651
201a204,206
> webNodePort: 32650
> grpcNodePort: 32651
> mysqlNodePort: 32652
- mysqlclientとvtctlclientのエイリアス設定
ポートフォワードの場合
$ echo "alias mysql=\"mysql -h 127.0.0.1 -P 3306\"" >> ~/.bashrc
$ echo "alias vtctlclient=\"vtctlclient -server=localhost:15999\"" >> ~/.bashrc
$ source ~/.bashrc
- NodePortの場合
$ echo "alias mysql=\"mysql -h ノードのExternal-IP -P 32652\"" >> ~/.bashrc
$ echo "alias vtctlclient=\"vtctlclient -server=ノードのExternal-IP:31651\"" >> ~/.bashrc
$ source ~/.bashrc
MoveTables有効化
- サンプルデータの読み込み
$ mysql < ../common/insert_commerce_data.sql
$ mysql --table < ../common/select_commerce_data.sql
Using commerce/0
Customer
+-------------+--------------------+
| customer_id | email |
+-------------+--------------------+
| 1 | alice@domain.com |
| 2 | bob@domain.com |
| 3 | charlie@domain.com |
| 4 | dan@domain.com |
| 5 | eve@domain.com |
+-------------+--------------------+
Product
+----------+-------------+-------+
| sku | description | price |
+----------+-------------+-------+
| SKU-1001 | Monitor | 100 |
| SKU-1002 | Keyboard | 30 |
+----------+-------------+-------+
COrder
+----------+-------------+----------+-------+
| order_id | customer_id | sku | price |
+----------+-------------+----------+-------+
| 1 | 1 | SKU-1001 | 100 |
| 2 | 2 | SKU-1002 | 30 |
| 3 | 3 | SKU-1002 | 30 |
| 4 | 4 | SKU-1002 | 30 |
| 5 | 5 | SKU-1002 | 30 |
- tabletの新規作成
tabletとはmysqldとvttabletの合わさったもので,通常同じマシン上で動作する.
$ helm upgrade vitess ../../helm/vitess/ -f 201_customer_tablets.yaml
$ kubectl get po -l initShardMasterJob=true
NAME READY STATUS RESTARTS AGE
zone1-commerce-0-init-shard-master-f4b8f 0/1 Completed 0 5m51s
zone1-customer-0-init-shard-master-rk6vb 0/1 Completed 0 98s
- 分割データを分割先テーブルへコピーする.
$ helm upgrade vitess ../../helm/vitess/ -f 202_move_tables.yaml
$ kubectl get po -l vtctlclientJob=true
NAME READY STATUS RESTARTS AGE
vtctlclient-move-tables-hk85q 0/1 Completed 0 4m35s
$ vtctlclient VDiff customer.commerce2customer
Summary for corder: {ProcessedRows:5 MatchingRows:5 MismatchedRows:0 ExtraRowsSource:0 ExtraRowsTarget:0}
Summary for customer: {ProcessedRows:5 MatchingRows:5 MismatchedRows:0 ExtraRowsSource:0 ExtraRowsTarget:0}
$ helm upgrade vitess ../../helm/vitess/ -f 203_switch_reads.yaml
$ kubectl get po -l vtctlclientJob=true
NAME READY STATUS RESTARTS AGE
vtctlclient-mswitch1-j6sl2 0/1 Completed 0 4m46s
vtctlclient-mswitch2-78tfd 0/1 Completed 0 4m46s
- 確認
$ mysql
mysql> show databases;
+-----------+
| Databases |
+-----------+
| commerce |
| customer |
+-----------+
2 rows in set (0.01 sec)
mysql> use commerce;
Database changed
mysql> show tables;
+--------------------+
| Tables_in_commerce |
+--------------------+
| corder |
| customer |
| product |
+--------------------+
3 rows in set (0.01 sec)
mysql> select * from corder;
+----------+-------------+----------+-------+
| order_id | customer_id | sku | price |
+----------+-------------+----------+-------+
| 1 | 1 | SKU-1001 | 100 |
| 2 | 2 | SKU-1002 | 30 |
| 3 | 3 | SKU-1002 | 30 |
| 4 | 4 | SKU-1002 | 30 |
| 5 | 5 | SKU-1002 | 30 |
+----------+-------------+----------+-------+
5 rows in set (0.01 sec)
mysql> select * from customer;
+-------------+--------------------+
| customer_id | email |
+-------------+--------------------+
| 1 | alice@domain.com |
| 2 | bob@domain.com |
| 3 | charlie@domain.com |
| 4 | dan@domain.com |
| 5 | eve@domain.com |
+-------------+--------------------+
5 rows in set (0.00 sec)
mysql>
mysql> use customer;
Database changed
mysql> show tables;
+--------------------+
| Tables_in_customer |
+--------------------+
| corder |
| customer |
+--------------------+
2 rows in set (0.01 sec)
mysql> select * from corder;
+----------+-------------+----------+-------+
| order_id | customer_id | sku | price |
+----------+-------------+----------+-------+
| 1 | 1 | SKU-1001 | 100 |
| 2 | 2 | SKU-1002 | 30 |
| 3 | 3 | SKU-1002 | 30 |
| 4 | 4 | SKU-1002 | 30 |
| 5 | 5 | SKU-1002 | 30 |
+----------+-------------+----------+-------+
5 rows in set (0.01 sec)
mysql> select * from customer;
+-------------+--------------------+
| customer_id | email |
+-------------+--------------------+
| 1 | alice@domain.com |
| 2 | bob@domain.com |
| 3 | charlie@domain.com |
| 4 | dan@domain.com |
| 5 | eve@domain.com |
+-------------+--------------------+
5 rows in set (0.01 sec)
- 分割後、DBを書き込み操作に対するルーティングにも適用させる.
$ helm upgrade vitess ../../helm/vitess/ -f 204_switch_writes.yaml
$ kubectl get po -l vtctlclientJob=true
NAME READY STATUS RESTARTS AGE
vtctlclient-mswitch3-bwvvd 0/1 Completed 0 81s
- 分割したデータの元データを削除する.
commerceタブレットからcustomerタブレットへcorderテーブルとcustomerテーブルを移動させたため, 元々あったcommerceタブレットのcorderテーブルとcustomerテーブルを削除する.
vtctlclientを直接実行する方法とK8sのJobリソースで行う方法がある. どちらか実行すれば良い.
$ helm upgrade vitess ../../helm/vitess/ -f 205_clean_commerce.yaml
$ kubectl get po -l vtctlclientJob=true
NAME READY STATUS RESTARTS AGE
vtctlclient-vclean1-gzzd7 0/1 Completed 0 2m55s
vtctlclient-vclean2-rf94s 0/1 Completed 0 2m54s
vtctlclient-vclean3-hvjkb 0/1 Completed 0 2m54s
vtctlclient-vclean4-kj9v8 0/1 Completed 0 2m54s
消えた確認
$ mysql
mysql> use commerce
Database changed
mysql> show tables;
+--------------------+
| Tables_in_commerce |
+--------------------+
| product |
+--------------------+
1 row in set (0.01 sec)
mysql>
mysql> show vitess_tablets;
+-------+----------+-------+------------+---------+------------------+-------------------------------------+----------------------+
| Cell | Keyspace | Shard | TabletType | State | Alias | Hostname | MasterTermStartTime |
+-------+----------+-------+------------+---------+------------------+-------------------------------------+----------------------+
| zone1 | commerce | 0 | MASTER | SERVING | zone1-1564760600 | zone1-commerce-0-replica-0.vttablet | 2020-07-21T06:26:12Z |
| zone1 | commerce | 0 | REPLICA | SERVING | zone1-1564760601 | zone1-commerce-0-replica-1.vttablet | |
| zone1 | commerce | 0 | REPLICA | SERVING | zone1-1564760602 | zone1-commerce-0-replica-2.vttablet | |
| zone1 | customer | 0 | MASTER | SERVING | zone1-0528462200 | zone1-customer-0-replica-0.vttablet | 2020-07-21T06:34:10Z |
| zone1 | customer | 0 | REPLICA | SERVING | zone1-0528462202 | zone1-customer-0-replica-2.vttablet | |
| zone1 | customer | 0 | REPLICA | SERVING | zone1-0528462201 | zone1-customer-0-replica-1.vttablet | |
+-------+----------+-------+------------+---------+------------------+-------------------------------------+----------------------+
6 rows in set (0.00 sec)
Resharding
- シーケンステーブルの作成
サンプルデータで"auto_increment"が使われているが, Vitessのリシャーディングは"auto_increment"非対応のためシーケンステーブルを代わりに使用する.
$ helm upgrade vitess ../../helm/vitess/ -f 301_customer_sharded.yaml
$ mysql
mysql> use commerce;
Database changed
mysql> show tables;
+--------------------+
| Tables_in_commerce |
+--------------------+
| customer_seq |
| order_seq |
| product |
+--------------------+
3 rows in set (0.00 sec)
- 新しいシャードの作成
$ helm upgrade vitess ../../helm/vitess/ -f 302_new_shards.yaml
$ kubectl get po -l initShardMasterJob=true
NAME READY STATUS RESTARTS AGE
zone1-commerce-0-init-shard-master-t8j84 0/1 Completed 0 146m
zone1-customer-0-init-shard-master-rjkr9 0/1 Completed 0 138m
zone1-customer-80-x-init-shard-master-wnwfh 0/1 Completed 0 7m6s
zone1-customer-x-80-init-shard-master-nlcgk 0/1 Completed 0 7m6s
$
$ kubectl get po -l copySchemaShardJob=true
NAME READY STATUS RESTARTS AGE
corder-copy-schema-40-80-dx6tp 0/1 Completed 0 8m48s
corder-copy-schema-80-c0-pmcxp 0/1 Completed 0 8m48s
corder-copy-schema-c0-x-ljnnw 0/1 Completed 0 8m48s
corder-copy-schema-x-40-477sk 0/1 Completed 0 8m48s
customer-copy-schema-40-80-pfp7k 0/1 Completed 0 8m49s
customer-copy-schema-c0-x-dnrjj 0/1 Completed 0 8m48s
customer-copy-schema-x-40-kl22d 0/1 Completed 0 8m49s
- リシャーディングを開始する.
$ helm upgrade vitess ../../helm/vitess/ -f 303_reshard.yaml
$ kubectl get po -l vtctlclientJob=true
NAME READY STATUS RESTARTS AGE
vtctlclient-reshard-hk7h5 0/1 Completed 0 31s
$ vtctlclient VDiff customer.cust2cust
Summary for corder: {ProcessedRows:5 MatchingRows:5 MismatchedRows:0 ExtraRowsSource:0 ExtraRowsTarget:0}
Summary for customer: {ProcessedRows:5 MatchingRows:5 MismatchedRows:0 ExtraRowsSource:0 ExtraRowsTarget:0}
- Read操作だけリシャーヂンング後、データにルーティングするようにする.
$ helm upgrade vitess ../../helm/vitess/ -f 304_switch_reads.yaml
$ kubectl get pod -l vtctlclientJob=true
NAME READY STATUS RESTARTS AGE
vtctlclient-rswitch1-p4pxc 0/1 Completed 0 25s
vtctlclient-rswitch2-zcvbq 0/1 Completed 0 25s
- リシャーディング前のデータ
$ mysql --table < ../common/select_customer0_data.sql
Using customer/0
Customer
+-------------+--------------------+
| customer_id | email |
+-------------+--------------------+
| 1 | alice@domain.com |
| 2 | bob@domain.com |
| 3 | charlie@domain.com |
| 4 | dan@domain.com |
| 5 | eve@domain.com |
+-------------+--------------------+
COrder
+----------+-------------+----------+-------+
| order_id | customer_id | sku | price |
+----------+-------------+----------+-------+
| 1 | 1 | SKU-1001 | 100 |
| 2 | 2 | SKU-1002 | 30 |
| 3 | 3 | SKU-1002 | 30 |
| 4 | 4 | SKU-1002 | 30 |
| 5 | 5 | SKU-1002 | 30 |
+----------+-------------+----------+-------+
- リシャーディング後のデータ
$ mysql --table < ../common/select_customer-80_data.sql
Using customer/-80
Customer
+-------------+--------------------+
| customer_id | email |
+-------------+--------------------+
| 1 | alice@domain.com |
| 2 | bob@domain.com |
| 3 | charlie@domain.com |
| 5 | eve@domain.com |
+-------------+--------------------+
COrder
+----------+-------------+----------+-------+
| order_id | customer_id | sku | price |
+----------+-------------+----------+-------+
| 1 | 1 | SKU-1001 | 100 |
| 2 | 2 | SKU-1002 | 30 |
| 3 | 3 | SKU-1002 | 30 |
| 5 | 5 | SKU-1002 | 30 |
+----------+-------------+----------+-------+
$ mysql --table < ../common/select_customer80-_data.sql
Using customer/80-
Customer
+-------------+----------------+
| customer_id | email |
+-------------+----------------+
| 4 | dan@domain.com |
+-------------+----------------+
COrder
+----------+-------------+----------+-------+
| order_id | customer_id | sku | price |
+----------+-------------+----------+-------+
| 4 | 4 | SKU-1002 | 30 |
+----------+-------------+----------+-------+
- 書き込み操作もシャーディングされたデータにルーティングさせる.
$ helm upgrade vitess ../../helm/vitess/ -f 305_switch_writes.yaml
$ kubectl get po -l vtctlclientJob=true
NAME READY STATUS RESTARTS AGE
vtctlclient-rswitch3-lclqt 0/1 Completed 0 20s
- シャーディング前のデータをダウンさせる.
削除前のクラスタ状況
$ kubectl get po -l keyspace=customer
NAME READY STATUS RESTARTS AGE
customer-copy-schema-80-x-8qb7s 0/1 Completed 0 22h
customer-copy-schema-x-80-4ks7l 0/1 Completed 0 22h
zone1-customer-0-init-shard-master-rjkr9 0/1 Completed 0 24h
zone1-customer-0-replica-0 1/2 Running 0 24h
zone1-customer-0-replica-1 2/2 Running 0 24h
zone1-customer-0-replica-2 2/2 Running 0 24h
zone1-customer-80-x-init-shard-master-wnwfh 0/1 Completed 0 22h
zone1-customer-80-x-replica-0 2/2 Running 0 22h
zone1-customer-80-x-replica-1 2/2 Running 0 22h
zone1-customer-80-x-replica-2 2/2 Running 0 22h
zone1-customer-x-80-init-shard-master-nlcgk 0/1 Completed 0 22h
zone1-customer-x-80-replica-0 2/2 Running 0 22h
zone1-customer-x-80-replica-1 2/2 Running 0 22h
zone1-customer-x-80-replica-2 2/2 Running 0 22h
削除
$ helm upgrade vitess ../../helm/vitess/ -f 306_down_shard_0.yaml
削除後のクラスタの確認
$ kubectl get po -l keyspace=customer
NAME READY STATUS RESTARTS AGE
zone1-customer-80-x-init-shard-master-wnwfh 0/1 Completed 0 22h
zone1-customer-80-x-replica-0 2/2 Running 0 22h
zone1-customer-80-x-replica-1 2/2 Running 0 22h
zone1-customer-80-x-replica-2 2/2 Running 0 22h
zone1-customer-x-80-init-shard-master-nlcgk 0/1 Completed 0 22h
zone1-customer-x-80-replica-0 2/2 Running 0 22h
zone1-customer-x-80-replica-1 2/2 Running 0 22h
zone1-customer-x-80-replica-2 2/2 Running 0 22h
- シャーディング前のデータを削除する.
削除前のvitess tabletsの様子
$ mysql
mysql> show vitess_tablets;
+-------+----------+-------+------------+-------------+------------------+----------------------------------------+----------------------+
| Cell | Keyspace | Shard | TabletType | State | Alias | Hostname | MasterTermStartTime |
+-------+----------+-------+------------+-------------+------------------+----------------------------------------+----------------------+
| zone1 | commerce | 0 | MASTER | SERVING | zone1-1564760600 | zone1-commerce-0-replica-0.vttablet | 2020-07-21T06:26:12Z |
| zone1 | commerce | 0 | REPLICA | SERVING | zone1-1564760601 | zone1-commerce-0-replica-1.vttablet | |
| zone1 | commerce | 0 | REPLICA | SERVING | zone1-1564760602 | zone1-commerce-0-replica-2.vttablet | |
| zone1 | customer | -80 | MASTER | SERVING | zone1-1581380800 | zone1-customer-x-80-replica-0.vttablet | |
| zone1 | customer | -80 | REPLICA | SERVING | zone1-1581380801 | zone1-customer-x-80-replica-1.vttablet | |
| zone1 | customer | -80 | REPLICA | SERVING | zone1-1581380802 | zone1-customer-x-80-replica-2.vttablet | |
| zone1 | customer | 0 | MASTER | NOT_SERVING | zone1-0528462200 | zone1-customer-0-replica-0.vttablet | 2020-07-21T06:34:10Z |
| zone1 | customer | 0 | REPLICA | NOT_SERVING | zone1-0528462201 | zone1-customer-0-replica-1.vttablet | |
| zone1 | customer | 0 | REPLICA | NOT_SERVING | zone1-0528462202 | zone1-customer-0-replica-2.vttablet | |
| zone1 | customer | 80- | MASTER | SERVING | zone1-0822947600 | zone1-customer-80-x-replica-0.vttablet | 2020-07-21T08:46:31Z |
| zone1 | customer | 80- | REPLICA | SERVING | zone1-0822947601 | zone1-customer-80-x-replica-1.vttablet | |
| zone1 | customer | 80- | REPLICA | SERVING | zone1-0822947602 | zone1-customer-80-x-replica-2.vttablet | |
+-------+----------+-------+------------+-------------+------------------+----------------------------------------+----------------------+
12 rows in set (0.00 sec)
削除
$ helm upgrade vitess ../../helm/vitess/ -f 307_delete_shard_0.yaml
$ kubectl get po -l vtctlclientJob=true
NAME READY STATUS RESTARTS AGE
vtctlclient-delete-shard0-jx2g2 0/1 Completed 0 44s
$ mysql
mysql> show vitess_tablets;
+-------+----------+-------+------------+---------+------------------+----------------------------------------+----------------------+
| Cell | Keyspace | Shard | TabletType | State | Alias | Hostname | MasterTermStartTime |
+-------+----------+-------+------------+---------+------------------+----------------------------------------+----------------------+
| zone1 | commerce | 0 | MASTER | SERVING | zone1-1564760600 | zone1-commerce-0-replica-0.vttablet | 2020-07-21T06:26:12Z |
| zone1 | commerce | 0 | REPLICA | SERVING | zone1-1564760602 | zone1-commerce-0-replica-2.vttablet | |
| zone1 | commerce | 0 | REPLICA | SERVING | zone1-1564760601 | zone1-commerce-0-replica-1.vttablet | |
| zone1 | customer | -80 | MASTER | SERVING | zone1-1581380800 | zone1-customer-x-80-replica-0.vttablet | |
| zone1 | customer | -80 | REPLICA | SERVING | zone1-1581380801 | zone1-customer-x-80-replica-1.vttablet | |
| zone1 | customer | -80 | REPLICA | SERVING | zone1-1581380802 | zone1-customer-x-80-replica-2.vttablet | |
| zone1 | customer | 80- | MASTER | SERVING | zone1-0822947600 | zone1-customer-80-x-replica-0.vttablet | 2020-07-21T08:46:31Z |
| zone1 | customer | 80- | REPLICA | SERVING | zone1-0822947601 | zone1-customer-80-x-replica-1.vttablet | |
| zone1 | customer | 80- | REPLICA | SERVING | zone1-0822947602 | zone1-customer-80-x-replica-2.vttablet | |
+-------+----------+-------+------------+---------+------------------+----------------------------------------+----------------------+
9 rows in set (0.01 sec)
最後に
比較的短期間のインターンということもあり,まだまだやり残したことはたくさんありますが,非常に濃密で充実した日々でした.それも,私の面倒をみてくださった人事の方やメンターの方々,お世話になった部署の方々のおかげです.ありがとうございました.