すべてのアクションは debian 7 仮想マシンで実行されます。2 つのノードがインストールされています: galera レプリケーター、コーダーシップの mysql galera、percona-xtrabackup、netcat-openbsd (percona-xtrabackup で必要)。3 番目のノードには galera レプリケーターのみがあり、garbd が実行されているアービトレーターとして機能します。
ノード #1 の構成 (192.168.0.102)
wsrep_provider=/usr/lib/galera/libgalera_smm.so
wsrep_provider_options="gcache.size=2G"
wsrep_cluster_name="clusterTest"
wsrep_cluster_address="gcomm://"
wsrep_node_name="node-1"
wsrep_node_address=192.168.0.102
wsrep_node_incoming_address=192.168.0.102
wsrep_slave_threads=16
wsrep_sst_method=xtrabackup
wsrep_sst_receive_address=192.168.0.102
wsrep_sst_auth=root:somepass
ノード #2 の構成 (192.168.0.103)
wsrep_provider=/usr/lib/galera/libgalera_smm.so
wsrep_provider_options="gcache.size=2G"
wsrep_cluster_name="clusterTest"
wsrep_cluster_address="gcomm://192.168.0.102"
wsrep_node_name="node-2"
wsrep_node_address=192.168.0.103
wsrep_node_incoming_address=192.168.0.103
wsrep_slave_threads=16
wsrep_sst_method=xtrabackup
wsrep_sst_receive_address=192.168.0.103
wsrep_sst_auth=root:somepass
wsrep_sst_donor="node-1"
最初の実行では、node-1 だけがテスト用のデータベースを持っています。これを testDB と呼びましょう。
私がやること:
1. node-1> service mysql start
Result: node is working, testDB is accessible from any host and the node itself.
2. node-3> garbd --address gcomm://192.168.0.102,192.168.0.103 --group "clusterTest"
Resutl: the cluster size is 2.
3. node-2> service mysql start
Result: the cluster size is 3, but the init-script reports that service start failed, however the processes are running, the sst is performed.
また、ノード 2 で実行されている mysql にアクセスできません。
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (111)
そしてリモートホストから:
PHP Warning: mysqli::mysqli(): (HY000/2003): Can't connect to MySQL server on '192.168.0.103' (111)
ノード 1 からのクラスターの状態:
wsrep_local_state_comment | Donor/Desynced
wsrep_incoming_addresses | 192.168.0.102:3306,,192.168.0.103:3306
wsrep_cluster_conf_id | 3
wsrep_cluster_size | 3
wsrep_provider を「none」に設定してノード 2 で mysql を起動すると、データベースはローカルおよびリモート ホストから完全にアクセス可能になり、ノード 1 のデータベースと同じになります。クラスターを再起動すると、この状況が繰り返され、ノード 2 は他のノードからしか見えず、クラスターは非同期になり、ノード 2 はコンソールからもリモート ホストからもアクセスできなくなります。