お題
- MySQL 8.0 で導入された、Clone Plugin を利用してスレーブを作ってみる dev.mysql.com
やってみる
Clone プラグインをマスターとスレーブ、両方に設定しておきます。
※ MySQL 8.0 から plugin-load-add
という書き方がサポートされました。従来のplugin-load
と比較して設定ファイルが見やすく書けますね。
$ sudo vi /etc/my.cnf plugin_load_add = mysql_clone.so
SHOW PLUGINS
でプラグインがインストールできたことが確認できる。
mysql> pager grep -i clone PAGER set to 'grep -i clone' mysql> SHOW PLUGINS; | clone | ACTIVE | CLONE | mysql_clone.so | GPL | 47 rows in set (0.01 sec)
clone用のユーザを作ります。BACKUP_ADMIN
権限が必要です。
mysql> CREATE USER clone_user IDENTIFIED BY 'Password123!'; Query OK, 0 rows affected (0.05 sec) mysql> GRANT BACKUP_ADMIN ON *.* TO clone_user; Query OK, 0 rows affected (0.03 sec)
マスターの gtid_executed
は以下です。CLONE INSTANCE
でデータを正しくコピーできれば、スレーブの gtid_executed
も以下になるはずです。
mysql> SHOW GLOBAL VARIABLES LIKE 'gtid_executed'; +---------------+------------------------------------------+ | Variable_name | Value | +---------------+------------------------------------------+ | gtid_executed | e9ec3499-62a3-11ea-8abd-901b0e97e768:1-3 | +---------------+------------------------------------------+ 1 row in set (0.00 sec)
スレーブでCLONE INSTANCE
を実行しマスターのデータをコピーします。
mysql> SET GLOBAL clone_valid_donor_list = '192.168.10.3:3306'; Query OK, 0 rows affected (0.00 sec) mysql> CLONE INSTANCE FROM clone_user@192.168.10.3:3306 IDENTIFIED BY 'Password123!'; Query OK, 0 rows affected (9.60 sec)
データがコピーされ、gtid_executed
も一致しました。
mysql> SHOW GLOBAL VARIABLES LIKE 'gtid_executed'; +---------------+------------------------------------------+ | Variable_name | Value | +---------------+------------------------------------------+ | gtid_executed | e9ec3499-62a3-11ea-8abd-901b0e97e768:1-3 | +---------------+------------------------------------------+ 1 row in set (0.00 sec)
あとは、いつもどおり、CHANGE MASTER
するだけ。
mysql> CHANGE MASTER TO MASTER_HOST='master', MASTER_PORT=3306, MASTER_USER='repl', MASTER_PASSWORD='replpassword', MASTER_AUTO_POSITION=1, MASTER_HEARTBEAT_PERIOD=2, MASTER_CONNECT_RETRY=2, MASTER_RETRY_COUNT=86400, MASTER_SSL=1;
mysqldump
したり、手で物理コピーするのに比べて遥かに簡単にスレーブが作れてしまいました。ぱちぱちぱち。