MySQLのグループレプリケーションの作成手順を記載してみる。
注意:
もし2台構成でグループレプリケーションを組んだ場合
スプリットブレイン現象が発生するので、仮に片系がダウンした場合に
正常に稼働しているDBにも、書き込みができなくなる恐れがあるので
可能であれば、最低3台構成にするのが望ましい。
1)MariaDBの削除を行う
# yum -y remove mariadb-libs.x86_64
# rm -rf /var/lib/mysql/
2)MySQLのインストールを行う。
# yum -y localinstall https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm
# yum -y install mysql-community-common-5.7.18-1.el7.x86_64
# yum -y install mysql-community-libs-5.7.18-1.el7.x86_64
# yum -y install mysql-community-client-5.7.18-1.el7.x86_64
# yum -y install mysql-community-server-5.7.18-1.el7.x86_64
3)MySQLのプロセスを起動させる。
# systemctl enable mysqld
# systemctl start mysqld
4)以下のログからpassで検索して、初期値のパスを探す.
# vi /var/log/mysqld.log
5)MySQLのパスワードの初期化を行う
# mysql_secure_installation
①上記で調べた初期値を入力
②新規のパスワードを入力 (例:Pass_1234)
③聞かれる質問に対して全て"YES"を選択
6)MySQLにログインを行う
#mysql -u root -p
Enter password: "作成したパスワード"
今回、作成したパスワード:Pass_1234
7)レプリケーションユーザの作成
mysql> ALTER USER root@'localhost' identified by 'Pass_1234';
mysql> CREATE USER rpl_user IDENTIFIED BY 'Pass_1234';
mysql> GRANT REPLICATION SLAVE ON *.* TO 'rpl_user'@'%';
rpl_user :レプリケーション用のユーザー
Pass_1234 :レプリケーション用のパスワード
8)DB1のmy.cnfの編集を行う
# vi /etc/my.cnf
----------------- my.cnf (DB1)-----------------------------------------------------------------------
server_id=1
gtid_mode=ON
enforce_gtid_consistency=ON
master_info_repository=TABLE
relay_log_info_repository=TABLE
binlog_checksum=NONE
log_slave_updates=ON
log_bin=binlog
binlog_format=ROW
#①Group Replication settings
transaction_write_set_extraction=XXHASH64
#②Describe any UUID
loose-group_replication_group_name="87e5ed8c-cd83-11e6-bc3c-fa163e83e8e7"
loose-group_replication_start_on_boot=off
#③My IP address
loose-group_replication_local_address= "db1:33061"
#④Describe all servers
loose-group_replication_group_seeds= "db1:33061,db2:33061,db3:33061"
loose-group_replication_bootstrap_group= off
loose-group_replication_single_primary_mode= FALSE
#⑤Allow network to use for communication between servers
loose-group_replication_ip_whitelist = 192.168.1.0/24
--------------------------------------------------------------------------------------------------
①XXHASH64"を入力する。
②対象のMySQLに、同一のUUIDの値にしないとレプリケーションの設定が
出来ないので注意すること!
③自分のホスト名を入力する
※ポート番号は、同一の番号(33061)を使用する。
④対象のサーバのホスト名を記載する
※ポート番号は、同一の番号(33061)を使用する。
⑤ネットワークアドレスを入力する。
9)DB2のmy.cnfの編集を行う
# vi /etc/my.cnf
----------------- my.cnf (DB2)-----------------------------------------------------------------------
server_id=2
gtid_mode=ON
enforce_gtid_consistency=ON
master_info_repository=TABLE
relay_log_info_repository=TABLE
binlog_checksum=NONE
log_slave_updates=ON
log_bin=binlog
binlog_format=ROW
#①Group Replication settings
transaction_write_set_extraction=XXHASH64
#②Describe any UUID
loose-group_replication_group_name="87e5ed8c-cd83-11e6-bc3c-fa163e83e8e7"
loose-group_replication_start_on_boot=off
#③My IP address
loose-group_replication_local_address= "db2:33061"
#④Describe all servers
loose-group_replication_group_seeds= "db1:33061,db2:33061,db3:33061"
loose-group_replication_bootstrap_group= off
loose-group_replication_single_primary_mode= FALSE
#⑤Allow network to use for communication between servers
loose-group_replication_ip_whitelist = 192.168.1.0/24
--------------------------------------------------------------------------------------------------
①XXHASH64"を入力する。
②対象のMySQLに、同一のUUIDの値にしないとレプリケーションの設定が
出来ないので注意すること!
③自分のホスト名を入力する
※ポート番号は、同一の番号(33061)を使用する。
④対象のサーバのホスト名を記載する
※ポート番号は、同一の番号(33061)を使用する。
⑤ネットワークアドレスを入力する。
10)DB3のmy.cnfの編集を行う
# vi /etc/my.cnf
----------------- my.cnf (DB3)-----------------------------------------------------------------------
server_id=3
gtid_mode=ON
enforce_gtid_consistency=ON
master_info_repository=TABLE
relay_log_info_repository=TABLE
binlog_checksum=NONE
log_slave_updates=ON
log_bin=binlog
binlog_format=ROW
#①Group Replication settings
transaction_write_set_extraction=XXHASH64
#②Describe any UUID
loose-group_replication_group_name="87e5ed8c-cd83-11e6-bc3c-fa163e83e8e7"
loose-group_replication_start_on_boot=off
#③My IP address
loose-group_replication_local_address= "db3:33061"
#④Describe all servers
loose-group_replication_group_seeds= "db1:33061,db2:33061,db3:33061"
loose-group_replication_bootstrap_group= off
loose-group_replication_single_primary_mode= FALSE
#⑤Allow network to use for communication between servers
loose-group_replication_ip_whitelist = 192.168.1.0/24
--------------------------------------------------------------------------------------------------
①XXHASH64"を入力する。
②対象のMySQLに、同一のUUIDの値にしないとレプリケーションの設定が
出来ないので注意すること!
③自分のホスト名を入力する
※ポート番号は、同一の番号(33061)を使用する。
④対象のサーバのホスト名を記載する
※ポート番号は、同一の番号(33061)を使用する。
⑤ネットワークアドレスを入力する。
11)DB1のグループレプリケーションの設定を行う。
--------------------------------<DB1>--------------------------------------------------------------
①ログインを行う
# mysql -u root -p
②ユーザ名(rpl_user)とパスワード(Pass_1234)を入力する
mysql> CHANGE MASTER TO MASTER_USER='rpl_user', MASTER_PASSWORD='Pass_1234' FOR CHANNEL 'group_replication_recovery';
③レプリケーションのプラグインをインストールする
mysql> INSTALL PLUGIN group_replication SONAME 'group_replication.so';
④不要なプラグインを削除する
mysql> UNINSTALL PLUGIN validate_password;
⑤グループレプリケーションの実行を行う
mysql> SET GLOBAL group_replication_bootstrap_group=ON;
mysql> START GROUP_REPLICATION;
mysql> SET GLOBAL group_replication_bootstrap_group=OFF;
-------------------------------------------------------------------------------------------------------
11)DB2,DB3のグループレプリケーションの設定を行う。
--------------------------------<DB2><DB3>--------------------------------------------------------
①ログインを行う
# mysql -u root -p
②ユーザ名(rpl_user)とパスワード(Pass_1234)を入力
mysql> CHANGE MASTER TO MASTER_USER='rpl_user', MASTER_PASSWORD='Pass_1234' FOR CHANNEL 'group_replication_recovery';
③レプリケーションのプラグインをインストールする
mysql> INSTALL PLUGIN group_replication SONAME 'group_replication.so';
④不要なプラグインを削除する
mysql> UNINSTALL PLUGIN validate_password;
⑤グループレプリケーションの実行を行う
mysql> START GROUP_REPLICATION;
---------------------------------------------------------------------------------------------------------
12)グループレプリケーションの状態を確認する。
mysql> SELECT * FROM performance_schema.replication_group_members;
◇確認
MEMBER_STATEの表示がONLINEになっていること
◆メモ
MEMBER_STATEの表示がOFFLINEになっている場合は
mysql> reset master; を各dbで実行して、以下を実施すること
[DB1]
mysql> SET GLOBAL group_replication_bootstrap_group=ON;
mysql> START GROUP_REPLICATION;
mysql> SET GLOBAL group_replication_bootstrap_group=OFF;
[DB2/DB3]
mysql> START GROUP_REPLICATION;
0 件のコメント:
コメントを投稿