Maridb数据库管理系统是MySQL的一个分支,由MySQL的创始人Michael Widenius(英语:Michael Widenius)主导开发。作为MySQL替代产品,集群采用多主模式,节点之间数据通过wsrep接口进行自动同步,集群关机后重启的关键是找到Primary节点,步骤如下:
一、获取seqno编号
a、Mysql服务宕机时
方法1:
$ mysqld --wsrep-recover
查看如下行:
方法2:
查看grastate.dat文件:
$ tail /var/lib/mysql/grastate.dat
备注:grastate.dat只有在Mysql主进程关闭时才会记录seqno编号,运行状态下其值为:-1。
b、Mysql 服务运行时(由于网络故障导致集群分裂,但服务依旧在运行)
$ mysql -u root -p
Enter password: XXXXXX
执行命令:
MariaDB [(none)]> SHOW STATUS LIKE 'wsrep_last_committed';
+----------------------+---------+
| Variable_name | Value |
+----------------------+---------+
| wsrep_last_committed | 7286312 |
+----------------------+---------+
比较各节点 wsrep_last_committed 的值,即seqno值,该值最大的节点即为集群的引导节点;
MariaDB [(none)]> SHOW STATUS LIKE 'wsrep_cluster_status';
+----------------------+-------------+
| Variable_name | Value |
+----------------------+-------------+
| wsrep_cluster_status | non-Primary |
+----------------------+-------------+
集群正常状态下,节点的状态为:Primary
二、启动第一个节点(seqno值为最大):
service mysql start --wsrep-new-cluster
三、启动其他节点:
service mysql start
以上命令都启动不起来时
$ mysqld --wsrep_sst_donor=MariaC,强制所有节点与MariaC数据保持一致,这里MariaC应该是seqno编号最大节点,且服务运行正常,
根据实际调整,同步完成后使用 $ service mysql start 启动服务。
$ ps -ef |grep mysqld 数据库服务有时启动较慢,主要是同步过程需要花费时间,但只要存在mysqld主进程,则说明服务正常启动中。
参考文档:
MariaDB集群Galera Cluster的研究与测试
what is the right way to restart a mariadb galera cluster?
http://dba.stackexchange.com/questions/79996/what-is-the-right-way-to-restart-a-mariadb-galera-cluster
RESTARTING THE CLUSTER
http://galeracluster.com/documentation-webpages/restartingcluster.html
How to Bootstrap MySQL/MariaDB Galera Cluster
http://www.tuicool.com/articles/iAfque
http://severalnines.com/blog/how-bootstrap-mysqlmariadb-galera-cluster?utm_source=tuicool&utm_medium=referral (原文)
领取专属 10元无门槛券
私享最新 技术干货