我在 CentOS-6.5 64bits 上配置了带有三个节点的 MariaDB galera 集群:
db1 - 192.168.1.111
db2 - 192.168.1.112
db3 - 192.168.1.113
我的 /etc/my.cnf.d/server.cnf 文件配置如下:
[galera]
binlog_format=ROW
default-storage-engine=innodb
innodb_autoinc_lock_mode=2
innodb_locks_unsafe_for_binlog=1
query_cache_size=0
query_cache_type=0
bind-address=0.0.0.0
datadir=/var/lib/mysql
innodb_log_file_size=100M
innodb_file_per_table
innodb_flush_log_at_trx_commit=2
wsrep_provider=/usr/lib64/galera/libgalera_smm.so
wsrep_cluster_address="gcomm://192.168.1.111,192.168.1.112,192.168.1.113"
wsrep_cluster_name='galera_cluster'
wsrep_node_address='192.168.1.112'
wsrep_node_name='db2'
wsrep_sst_method=xtrabackup
wsrep_sst_auth=username:password
所有三个节点都具有相同的配置(相应地更改了 wsrep_node_address 和 wsrep_node_name)。当我从第一个节点开始并使用以下任一命令启动 MariaDB 时,它工作正常,并且表明集群正在运行一个节点:
#/etc/init.d/mysql bootsrap
#/etc/init.d/mysql start --wsrep-new-cluster
但是当我尝试使用 /etc/init.d/mysql start 在第二个节点上启动 MariaDB 时,它无法启动。当我从上面的配置中注释掉 wsrep_cluster_address=... 时,第二个节点上的 MariaDB 将启动,但该节点不是集群的一部分。我以前做过这个配置并且工作得很好。但是当我关闭集群进行维护并尝试再次启动它时,只有第一个节点会启动。关于为什么会发生这种情况的任何建议?
您没有提供太多信息,因此我从您所说的内容中推断出来,并将其与常见的 Galera/Percona XtraDB Cluster/MariaDB Cluster 误解和错误相匹配:
当您完全停止集群时(在正常情况下不应该发生的事情),您需要以相反的顺序启动集群。这意味着:要关闭的最后一个节点必须是第一个启动的节点。为什么?因为如果您在所有节点上进行更改,最后一个失败的节点将在事务 UUID 方面领先于另一个节点。当您正常关闭一个节点时,其他节点会继续存在并继续接收更新。如果您现在开始并从头开始创建它本质上是一个新集群,galera 无法知道您启动的第一个节点不是“最新的”,因为您正在引导它。
所以简而言之,请始终检查您是否在不是最后一个关闭的节点上引导集群。如果您不知道,这里有一个关于如何操作的指南(以及有关重新启动 Galera 集群和其他陷阱的其他有用信息)。
希望这可以帮助。