【CentOS】Galera Clusterの設定

複数台構成でDBを同期させるお話

大規模なサイト等ではサーバ構成を冗長化する場合があります。

メリットとしては負荷分散できるためアクセス集中時に1台構成よりも落ちにくい、メンテナンス時にサイトを停止しなくていい等があります。

デメリットはコストがかかるってことですかね。

例えば3台構成にした際にファイルの同期はlsyncdとかを使います。

DBの同期は構成によって様々ですが今回はMariaDBのGalera Clusterについてまとめます。

スポンサーリンク

Galera Cluster

MariaDBを各サーバに持っていてそれぞれを同期させます。

IPは下記とします。

db1
IP:***.***.***.10

db2
IP:***.***.***.20

db3
IP:***.***.***.30

まずは各DBを停止しておきます。

systemctl stop mysql

下記のように設定ファイルに記述していきます。

/etc/my.cnf.d/server.cnf

[galera]
wsrep_provider=/usr/lib64/galera/libgalera_smm.so
wsrep_cluster_address="gcomm://***.***.***.20,***.***.***.30"
binlog_format=row
default_storage_engine=InnoDB
innodb_autoinc_lock_mode=2
innodb_flush_log_at_trx_commit=0
bind-address=0.0.0.0
wsrep_cluster_name="KUSANAGI_DB_Cluster_v2"
wsrep_node_address="***.***.***.10"
wsrep_sst_method=rsync
wsrep_retry_autocommit=3
wsrep-sync-wait=0
wsrep_slave_threads=2
wsrep_on=ON

wsrep_node_addressに自サーバのIP、wsrep_cluster_addressに他サーバのIPを記述します。

最初にdb1を起動します。

1番目に起動する際は下記のコマンドを実施します。

galera_new_cluster

続けてdb2、db3を起動します。

systemctl start mariadb

それぞれDBに接続して下記コマンドを実施します。

show status like 'wsrep_%';

wsrep_local_state_commentがSyncedになっていて、wsrep_incoming_addressesに他サーバのIPが表示されていればOKです。

あとはテーブルを作成したりデータを追加・更新・削除したりして同期されるか確認して完了です。

手軽にサクッと構築できて便利です。

コメント

タイトルとURLをコピーしました