Galera

From ArchWiki
Jump to navigation Jump to search

Galera は MySQL/InnoDB データベースのマルチマスター同期クラスタです。プロダクトと機能の詳細は 公式ウェブページ を参照してください。

ノート: 現在、複製がサポートされているのは InnoDB テーブルだけです。

インストール

MariaDB のバージョン 10.1 以上ではすぐに Galera と wsrep が使えるようになっています [1]

galera パッケージをインストールしてください。

設定

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_addresswsrep_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/

参照