1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

CentOS7,MySQL8でクローンとレプリケーションしてみた

Posted at

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;
⇒こちらはリレーログ

##感想
クローン便利で良いなと思いました。
ダンプリストアに比べてサーバで直接やりとりしているので、手間も速さも異なりますね。

ありがとうございました。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?