Galera
Galera は MySQL/InnoDB データベースのマルチマスター同期クラスタです。プロダクトと機能の詳細は 公式ウェブページ を参照してください。
インストール
MariaDB のバージョン 10.1 以上ではすぐに Galera と wsrep が使えるようになっています [1]。
設定
galera パッケージをインストールしたら、クラスタを設定する必要があります。
各ノードの /etc/mysql/my.cnf
を編集して wsrep_cluster_address
変数にクラスタの全てのノードを記述してください:
wsrep_cluster_address="gcomm://192.168.1.4,192.168.1.5,192.168.1.6"
そして wsrep_node_address
と wsrep_node_name
変数を各ノードの IP アドレス/ホストネームと名前 (一意である必要はありません) に変更してください。例:
wsrep_node_address='192.168.1.4' wsrep_node_name='node1'
wsrep_cluster_name
変数には全てのクラスタノードで同じ名前を指定してください:
wsrep_cluster_name='my_galera_cluster'
wsrep_sst_method
で使用したいスナップショットの転送方法を設定してください。rsync が推奨されています:
wsrep_sst_method=rsync
/etc/mysql/my.cnf
の設定を完了したら、最初のノードで mysqld サービスを起動してください:
# systemctl start mysqld-bootstrap.service
上記のコマンドでクラスタが機能します。MySQL のコマンドラインツールを使って MySQL サーバーに root でログインしてください:
$ mysql -p -u root
クラスタの状態を確認:
mysql> SHOW STATUS LIKE 'wsrep_%';
wsrep 関連の状態変数が表示されます:
... | wsrep_local_state | 4 | | wsrep_local_state_comment | Synced | | wsrep_cert_index_size | 0 | | wsrep_causal_reads | 0 | | wsrep_incoming_addresses | 192.168.1.4:3306 | | wsrep_cluster_conf_id | 1 | | wsrep_cluster_size | 1 | | wsrep_cluster_state_uuid | 6cd96745-2ea8-11e3-bbc8-d666651b51ef | | wsrep_cluster_status | Primary | | wsrep_connected | ON | | wsrep_local_index | 0 | | wsrep_provider_name | Galera | ...
xtrabackup や mysqldump の SST を使用する場合、SST 転送のための MySQL ユーザーを作成する必要gああります。
最初のノードを設定したら、以下のコマンドで他のノードも起動できるはずです:
# systemctl start mysqld.service
Galera のコンパイル
- GitHub から Galera をダウンロード。
- 中身を展開してルートディレクトリで scons を実行:
$ tar xvfz release_*.tar.gz && cd galera_release_* && scons
- ライブラリを
/usr/lib/galera/libgalera_smm.so
にコピー:
# mkdir /usr/lib/galera && cp libgalera_smm.so /usr/lib/galera/