Mariadb Galera Cluster 部署
admin
2023-03-24 17:41:39
0

不同于标准的MySQL服务器和MySQL集群,MySQL / MariaDB Galera集群在启动方式上有一些细小的区别。Galera需要在集群启动一个节点作为参考点,剩余的节点才能加入形成集群。这个过程被称为集群引导。引导是一个初始步骤,引导数据库节点作为主节点,其它节点将主节点作为参考点同步数据。


启动集群

在三台机器上安装mariadb,并做初始化配置。在第一台节点上修改/etc/my.cnf.d/server.cnf 的内容,在[galera]部分添加集群配置:

wsrep_on=ON
wsrep_provider=/usr/lib64/galera/libgalera_smm.so
wsrep_cluster_address='gcomm://'    #第一个启动节点配置
wsrep_cluster_name='mariadb_cluster'
wsrep_node_address='192.168.0.56'   #本机IP地址
wsrep_node_name='mariadb_node1'    #集群节点名称
wsrep_sst_method=rsync
 
binlog_format=row
default_storage_engine=InnoDB
innodb_autoinc_lock_mode=2
bind-address=0.0.0.0


在第二台和第三台节点上配置/etc/my.cnf.d/server.cnf 文件的[galera]部分:

wsrep_on=ON
wsrep_provider=/usr/lib64/galera/libgalera_smm.so
wsrep_cluster_address='gcomm://192.168.0.56,192.168.0.58'
wsrep_cluster_name='mariadb_cluster'
wsrep_node_address='192.168.0.57'
wsrep_node_name='mariadb_node2'
wsrep_sst_method=rsync
 
binlog_format=row
default_storage_engine=InnoDB
innodb_autoinc_lock_mode=2
bind-address=0.0.0.0


wsrep_on=ON
wsrep_provider=/usr/lib64/galera/libgalera_smm.so
wsrep_cluster_address='gcomm://192.168.0.56,192.168.0.57'
wsrep_cluster_name='mariadb_cluster'
wsrep_node_address='192.168.0.58'
wsrep_node_name='mariadb_node3'
wsrep_sst_method=rsync
 
binlog_format=row
default_storage_engine=InnoDB
innodb_autoinc_lock_mode=2
bind-address=0.0.0.0

如果要启动Mariadb Galera Cluster ,首先选择node1节点为初始节点,将node1作为第一个启动节点,并且设置gcomm为空,否则无法启动。

wsrep_cluster_address='gcomm://'

nide1启动命令(不同版本的不同启动方式):

$ service mysql bootstrap # sysvinit$ service mysql start --wsrep-new-cluster # sysvinit$ galera_new_cluster # systemd $ mysqld_safe --wsrep-new-cluster # command line


node1启动之后,依次启动node2和node3. 之后修改node1 "wsrep_cluster_address"配置,添加上其它集群节点IP.

$ systemctl start mariadb

查看系统端口是否存在,默认情况下系统会监听3306,4567端口。

登录数据库,查看集群节点是否加入:

MariaDB [(none)]> SHOW STATUS LIKE"wsrep_cluster_size";
+--------------------+-------+
| Variable_name   | Value |
+--------------------+-------+
| wsrep_cluster_size | 3   |
+--------------------+-------+

可以通过 wsrep_cluster_status 和 wsrep_local_state_comment 查看节点的同步状态。

MariaDB [(none)]> show status like "wsrep_cluster_status";
+----------------------+---------+
| Variable_name     | Value   |
+----------------------+---------+
| wsrep_cluster_status | Primary |
+----------------------+---------+
1 row in set (0.00 sec)
MariaDB [(none)]> show status like "wsrep_local_state_comment";
+---------------------------+--------+
| Variable_name          | Value  |
+---------------------------+--------+
| wsrep_local_state_comment | Synced |
+---------------------------+--------+
1 row in set (0.00 sec)


警告:对一个已存在的集群添加新的节点时,不要使用引导的方式(bootstrap)启动这个节点,不能在一个集群中使用两个引导节点。


故障恢复和重启集群


当我们的mariadb Galera Cluster集群需要重启(意外宕机)时,未来保证数据的完整性,选择合适的主节点作为引导启动节点非常重要,如果启动顺序不正确可能会造成数据丢失或者无法启动。

当Galera以节点上的引导命令启动时该   特定节点将到达主状态(检查wsrep_cluster_status的值)。其余的节点只需要一个正常的启动命令,它们将自动查找集群中的现有主组件(PC)并加入组成一个集群。然后,数据同步通过加速器和供体之间的增量状态转移(IST)或快照状态转移(SST)发生。

因此,基本上,如果要启动新集群或集群中没有其他节点处于PRIMARY状态,则应仅引导集群。在选择采取的行动时应该小心,否则可能会导致拆分集群或丢失数据。

  

如果集群中主节点运行正常,我们只需要正常启动其他节点。所以做关键的一点是在集群全部宕机之后,我们要找到最后一个退出集群,并且数据是最完整的节点。通过启动这个节点,其他节点启动之后与这个节点同步数据才能保证数据库集群的数据不丢失。

1、找到最后一个停机的节点(seqno 数字最高的节点为下一次启动的主节点,应该首先启动):

# cat /maria-data/mysql/grastate.dat 
# GALERA saved state
version: 2.1
uuid:    8736f68d-0af7-11e7-aba5-9a9e6a4d342c
seqno:   15
safe_to_bootstrap: 0

提示: 如果所有的节点都是seqno的值都为-1,而且我们知道哪一个节点的优先级高,那么我们可以手动指定此节点为引导节点,修改grastate.dat文件的safe_to_bootstrap =1,然后启动此节点。


2、如果所有节点因为突然宕机导致数据库停止,我们需要找到数据同步最完整的节点作为启动节点,可以在每个节点上使用如下命令:

$ mysqld --wsrep-recover...2016-11-18 01:42:15 36311 [Note] InnoDB: Database was not shutdown normally!2016-11-18 01:42:15 36311 [Note] InnoDB: Starting crash recovery....2016-11-18 01:42:16 36311 [Note] WSREP: Recovered position: 8bcf4a34-aedb-14e5-bcc3-d3e36277729f:114428...


提示信息中,在Recovered position 后所指定的ID,就是我们需要首先启动的数据库节点。修改此节点grastate.dat 配置文件 “safe_to_bootstrap: 1”,启动此节点即可。





参考文档:  

https://severalnines.com/blog/how-bootstrap-mysqlmariadb-galera-cluster

http://galeracluster.com/documentation-webpages/restartingcluster.html 


上一篇:memcache配置

下一篇:用lnmp搭建discuz论坛

相关内容

热门资讯

玩家最新攻略“十三十三水经典比... 家人们!今天小编来为大家解答十三十三水经典比鸡透视挂怎么安装这个问题咨询软件客服徽9752949的挂...
今日重大通报“微乐三打哈怎么装... 网上科普关于“微乐三打哈有没有挂”话题很是火热,小编也是针对微乐三打哈作*弊开挂的方法以及开挂对应的...
自助寄存柜押金“有去难回”,记... 四川日报全媒体记者 文/图随着寄存柜在景区、地铁站、博物馆等公共场所日益普及,这项本该便利的服务,却...
玩家分享攻略“新超凡炸/金/花... 网上科普关于“新超凡炸/金/花有没有挂”话题很是火热,小编也是针对新超凡炸/金/花作*弊开挂的方法以...
【第一消息】“相约十五胡到底是... 【第一消息】“相约十五胡到底是不是挂?”(太坑了果然有挂)您好,相约十五胡这个游戏其实有挂的,确实是...
男子食道被腐蚀,知名老字号餐馆... 河南郑州一家知名餐馆的服务员图方便,竟然用84消毒液泡水壶,另一服务员不知情直接倒给顾客喝,导致顾客...
玩家最新攻略“科乐吉林麻将怎么... 家人们!今天小编来为大家解答科乐吉林麻将透视挂怎么安装这个问题咨询软件客服徽4282891的挂在哪里...
近期多个公路收费站提前停止收费... 澎湃新闻记者 钟煜豪近期,多个公路收费站宣布提前停止收费。其中,吉林长春公主岭市交通运输局12月20...
我来教教您“九点麻将怎么装挂?... 网上科普关于“九点麻将有没有挂”话题很是火热,小编也是针对九点麻将作*弊开挂的方法以及开挂对应的知识...
终于明白“哈灵麻将怎么开挂?”... 有 亲,根据资深记者爆料哈灵麻将是可以开挂的,确实有挂(咨询软件无需打开...