PerconaClusterの構築
公式ページ(https://www.percona.com/doc/percona-xtradb-cluster/LATEST/install/yum.html#yum)参照
3台のサーバでマルチレプリケーション環境の構築
事前準備
Selinux無効化(3台で実施)
色々面倒なのでEnforcingからPermissiveに変更する。
[root@percona1 ~]# getenforce Enforcing [root@percona1 ~]# setenforce 0 [root@percona1 ~]# getenforce Permissive [root@percona1 ~]#
Install
Repository追加(3台で実施)
[root@percona1 ~]# yum install http://www.percona.com/downloads/percona-release/redhat/0.1-4/percona-release-0.1-4.noarch.rpm Loaded plugins: fastestmirror ry) Installed: percona-release.noarch 0:0.1-4 Complete!
yum install(3台で実施)
[root@percona1 ~]# yum install Percona-XtraDB-Cluster-full-57 ry) perl-parent.noarch 1:0.225-244.el7 perl-podlators.noarch 0:2.5.1-3.el7 perl-threads.x86_64 0:1.87-4.el7 perl-threads-shared.x86_64 0:1.43-6.el7 qpress.x86_64 0:11-1.el7 socat.x86_64 0:1.7.3.2-2.el7 zlib-devel.x86_64 0:1.2.7-17.el7 Replaced: mariadb-libs.x86_64 1:5.5.56-2.el7 Complete!
設定
config作成(3台で実施)
wsrep_node_name
と wsrep_node_address
の値はノード毎に変更する
[mysqld] wsrep_provider=/usr/lib64/galera3/libgalera_smm.so wsrep_cluster_name=pxc-cluster wsrep_cluster_address=gcomm://192.168.1.11,192.168.1.12,192.168.1.13 wsrep_node_name=pxc1 wsrep_node_address=192.168.1.11 wsrep_sst_method=xtrabackup-v2 wsrep_sst_auth=sstuser:P@ssw0rd pxc_strict_mode=ENFORCING binlog_format=ROW default_storage_engine=InnoDB innodb_autoinc_lock_mode=2
初期ノード起動と初期設定
まず1台のノードを初期ノードとして起動してrootパスワード変更、sstユーザ作成を行う
初期ノード起動
# systemctl start mysql@bootstrap.service
初期パスワード確認
# grep 'temporary password' /var/log/messages
rootパスワード変更
# mysql -uroot -p > ALTER USER 'root'@'localhost' IDENTIFIED BY 'P@ssw0rd';
ステータス確認
下記の値確認しておく。
mysql> show status like 'wsrep%'; +----------------------------------+--------------------------------------+ | Variable_name | Value | +----------------------------------+--------------------------------------+ | wsrep_local_state_uuid | e40a427f-1634-11e8-a20d-8fbb0f3aacf4 | > ノードのUUID ry) | wsrep_local_state | 4 | > 1:Joining, 2:Donor/Desynced, 3:Joined, 4:Synced | wsrep_local_state_comment | Synced | > Synced:同期されてる状態 ry) | wsrep_cluster_size | 1 | > クラスタ内のノードの数 | wsrep_cluster_state_uuid | e40a427f-1634-11e8-a20d-8fbb0f3aacf4 | > wsrep_local_state_uuid と同じ値になってれば同期されてる | wsrep_cluster_status | Primary | > Primary,Non-Primary,Disconnectedのどれか | wsrep_connected | ON | > クラスタ接続されてればON ry) | wsrep_ready | ON | > ONならクエリ受け付けられる状態 +----------------------------------+--------------------------------------+ 68 rows in set (0.01 sec) mysql>
SSTユーザ作成
レプリケーションで使用するユーザを作成する。
my.cnfに記載した値と同じにする。
mysql> CREATE USER 'sstuser'@'localhost' IDENTIFIED BY 'P@ssw0rd'; Query OK, 0 rows affected (0.00 sec) mysql> GRANT RELOAD, LOCK TABLES, PROCESS, REPLICATION CLIENT ON *.* TO 'sstuser'@'localhost'; Query OK, 0 rows affected (0.00 sec) mysql> FLUSH PRIVILEGES; Query OK, 0 rows affected (0.00 sec) mysql>
2台目以降のノード起動と確認
1台目をbootstrapで起動してればmysql起動すると自動クラスタ参加される。
2台目以降のノード起動
# systemctl start mysql
確認
初期ノード確認した時と同様に3台それぞれで確認しておく。
mysql> show status like 'wsrep%'; +----------------------------------+-------------------------------------------------------+ | Variable_name | Value | +----------------------------------+-------------------------------------------------------+ | wsrep_local_state_uuid | e40a427f-1634-11e8-a20d-8fbb0f3aacf4 | ry) | wsrep_local_state | 4 | | wsrep_local_state_comment | Synced | ry) | wsrep_cluster_size | 3 | | wsrep_cluster_state_uuid | e40a427f-1634-11e8-a20d-8fbb0f3aacf4 | | wsrep_cluster_status | Primary | | wsrep_connected | ON | ry) | wsrep_ready | ON | +----------------------------------+-------------------------------------------------------+ 68 rows in set (0.01 sec) mysql>
初期ノードもbootstrapでなく普通に起動しておく
その方が管理しやすいと思うので。
# systemctl stop mysql@bootstrap # systemctl start mysql