リンク元ページ
pikesaku.hatenablog.com
コントローラ基本セットアップ実施後に、以下作業をコントローラ3台に実施する。
①MariaDBセットアップ
$ sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8 $ sudo add-apt-repository 'deb [arch=amd64,i386,ppc64el] http://ftp.yz.yamagata-u.ac.jp/pub/dbms/mariadb/repo/10.2/ubuntu xenial main' $ sudo apt update $ sudo apt -y install mariadb-server python-pymysql
③設定ファイル編集
以下ファイルを新規に作成
/etc/mysql/mariadb.conf.d/galera.cnf
※bind-address, wsrep_node_address, wsrep_node_nameはノード毎に適宜変更
※bind-addressを0.0.0.0はNG。後で設定するHAProxy・PacemakerのVIP設定をすると起動しなくなる。
Nov 04 14:35:46 cnt3 mysqld[1836]: 2017-11-04 14:35:44 140114370193600 [ERROR] Can't start server: listen() on TCP/IP port: Address already in use Nov 04 14:35:46 cnt3 mysqld[1836]: 2017-11-04 14:35:44 140114370193600 [ERROR] listen() on TCP/IP failed with error 98 Nov 04 14:35:46 cnt3 mysqld[1836]: 2017-11-04 14:35:44 140114370193600 [ERROR] Aborting'
galera.cnf内容
[galera] bind-address = 192.168.1.51 max_connections = 4096 collation_server = utf8mb4_general_ci character_set_server = utf8mb4 binlog_format = row wsrep_on = ON wsrep_provider = "/usr/lib/libgalera_smm.so" wsrep_provider_options = "pc.recovery=TRUE;gcache.size=300M" wsrep_cluster_name = mycluster wsrep_cluster_address = "gcomm://192.168.1.51,192.168.1.52,192.168.1.53" wsrep_sst_method = rsync wsrep_node_address = 192.168.1.51 wsrep_node_name = cnt1 wsrep_slave_threads = 1 default_storage_engine = InnoDB innodb_flush_log_at_trx_commit = 0 innodb_autoinc_lock_mode = 2 innodb_file_per_table = on
④1号機でサービス起動
$ sudo galera_new_cluster
⑤2,3号機でサービス起動
$ sudo systemctl start mariadb
⑥クラスタ確認
3台のコントローラで以下コマンド実行。valueが3であることを確認。
$ mysql -uroot -p[DB_PASSWORD] -e "SHOW STATUS LIKE 'wsrep_cluster_size';" +--------------------+-------+ | Variable_name | Value | +--------------------+-------+ | wsrep_cluster_size | 3 | +--------------------+-------+
補足
システム起動時はサービス起動に失敗する。以下作業が必要。
①一番最後に停止したサーバで以下コマンドを実行
$ sudo galera_new_cluster
②他サーバで以下コマンドを実行
$ sudo systemctl start mariadb
※一番最後に停止してないサーバで、galera_new_clusterを実行するとエラーになる。ログメッセージは以下。
WSREP: It may not be safe to bootstrap the cluster from this node. It was not the last one to leave the cluster and may not contain all the updates. To force cluster bootstrap with this node, edit the grastate.dat file manually and set safe_to_bootstrap to 1 .
※3台のサーバを同時に停止すると、一番最後に停止したサーバでgalera_new_clusterを実行しても上記エラーになる。この場合は、ログに従い/var/lib/mysql/grastate.datのsafe_to_bootstrapパラメタを1にして、再度galera_new_clusterを実行する。