CentOS7,MySQL8.0でクローンとレプリケーションしてみた
はい皆さんこんにちは
今回はタイトルの環境でマスタースレーブのレプリケーション設定を行ったので記載していきます。
レプリケーションが壊れた時の手順も載せてあります。
詳細
初めてクローン技術を触ったため以下のサイトを参考にしました。
https://www.server-world.info/query?os=CentOS_8&p=mysql8&f=5
https://qiita.com/greedy/items/de175713baddb57f9f88
環境:
masterサーバ:CentOS7、mysql-community-server-8.0.21-1.el7.x86_64
slaveサーバ:CentOS7、mysql-community-server-8.0.21-1.el7.x86_64
注意事項:
今回は単純な準同期レプリケーションです。
いわゆるInnoDBクラスタみたいなことはしてないです。
##まずはクローンする
マスター側準備
vi /etc/my.cnf
これらを入れる
log-bin=mysql-bin
server-id=203
plugin-load=mysql_clone.so
mysql -u root -p
create user 'repl_user'@'%' identified by 'password';
grant replication slave on *.* to repl_user@'%';
create user 'clone_user'@'%' identified by 'password';
grant backup_admin on *.* to 'clone_user'@'%';
flush privileges;
SELECT user, host, plugin FROM mysql.user;
2ユーザーが追加されていること。
スレーブ側準備
vi /etc/my.cnf
これらを入れる
log-bin=mysql-bin
relay-log=node01-relay-bin
relay-log-index=node01-relay-bin
server-id=202
plugin-load=mysql_clone.so
read_only=1
mysql -u root -p
create user 'clone_user'@'%' identified by 'password';
grant clone_admin on *.* to 'clone_user'@'%';
flush privileges;
スレーブでクローンする
mysql -u root -p
set global clone_valid_donor_list = 'master:3306';
clone instance from clone_user@master:3306 identified by 'password';
select ID,STATE,SOURCE,DESTINATION,BINLOG_FILE,BINLOG_POSITION from performance_schema.clone_status;
[Completed] であればコピー完了
##続いてレプリケーション実施
これもスレーブで行う
mysql -u root -p
mysql> change master to
-> master_host='master',
-> MASTER_PORT=3306,
-> MASTER_USER='repl_user',
-> MASTER_PASSWORD='password',
-> MASTER_AUTO_POSITION=1;
※mysql_native_password がどうたらっていうエラーが出る時、以下のSQLを実施しておいてください。
SELECT user, host, plugin FROM mysql.user;
⇒plugin 列を確認
ALTER USER repl_user@'%' IDENTIFIED WITH mysql_native_password BY 'password';
SELECT user, host, plugin FROM mysql.user;
⇒mysql_native_password に変わっていること
start slave;
show slave status\G
以下のようになっていること
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
略
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
##色々あって壊れたレプリケーションを再作成するとき
マスターもスレーブも両方実施する
mysql -u root -p
stop slave;
reset slave all;
reset master;
show master status\G
⇒何も出ない
show slave status\G
⇒Empty set (0.0058 sec)のように出る
続いてレプリケーション実施 の手順をスレーブ側で実施する。
##レプリケーション情報の保存先
mysql -u root -p
use mysql;
select * from slave_master_info;
⇒この中にあるHostが対象のもの。
select * from slave_relay_log_info;
⇒こちらはリレーログ
##感想
クローン便利で良いなと思いました。
ダンプリストアに比べてサーバで直接やりとりしているので、手間も速さも異なりますね。
ありがとうございました。