サーバ構築 ミドルウェア

PerconaCluster構築

更新日:

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_namewsrep_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

vagrant/ansibleのレシピ

github

-サーバ構築, ミドルウェア
-

Copyright© 明日から頑張ります。 , 2025 All Rights Reserved Powered by STINGER.