Mariadb Galera Cluster 部署

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介:

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


启动集群

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

1
2
3
4
5
6
7
8
9
10
11
12
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]部分:

1
2
3
4
5
6
7
8
9
10
11
12
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


1
2
3
4
5
6
7
8
9
10
11
12
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为空,否则无法启动。

1
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.

1
$ systemctl start mariadb

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

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

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

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

1
2
3
4
5
6
7
MariaDB [(none)]> show status like  "wsrep_cluster_status" ;
+----------------------+---------+
| Variable_name     | Value   |
+----------------------+---------+
| wsrep_cluster_status | Primary |
+----------------------+---------+
1 row  in  set  (0.00 sec)
1
2
3
4
5
6
7
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状态,则应仅引导集群。在选择采取的行动时应该小心,否则可能会导致拆分集群或丢失数据。  


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


参考文档:  

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

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




 本文转自 酥心糖 51CTO博客,原文链接:http://blog.51cto.com/tryingstuff/1922986
相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
Cloud Native 关系型数据库 数据库
云原生之使用Docker部署Mariadb数据库
云原生之使用Docker部署Mariadb数据库
455 0
云原生之使用Docker部署Mariadb数据库
|
SQL 关系型数据库 MySQL
Docker 部署离线版 Nginx 镜像容器,Tomcat 镜像容器,Mariadb 镜像容器
Docker 部署离线版 Nginx 镜像容器,Tomcat 镜像容器,Mariadb 镜像容器
1511 0
Docker 部署离线版 Nginx 镜像容器,Tomcat 镜像容器,Mariadb 镜像容器
|
8月前
|
运维 负载均衡 关系型数据库
【运维知识进阶篇】用Ansible Roles重构LNMP架构(Linux+Nginx+Mariadb+PHP),实现4个项目一键部署
【运维知识进阶篇】用Ansible Roles重构LNMP架构(Linux+Nginx+Mariadb+PHP),实现4个项目一键部署
112 0
|
7月前
|
关系型数据库 MySQL Linux
如何在CentOS 7服务器上配置使用MariaDB的Galera集群:
如何在CentOS 7服务器上配置使用MariaDB的Galera集群:
|
弹性计算 安全 关系型数据库
阿里云部署javaWeb项目依赖软件(jdk、tomcat、Mariadb数据库)的安装
阿里云部署javaWeb项目(jdk、tomcat、Mariadb数据库)的安装 🍅 程序员小王的博客:程序员小王的博客 🍅 欢迎点赞 👍 收藏 ⭐留言 📝 🍅 如有编辑错误联系作者,如果有比较好的文章欢迎分享给我,我会取其精华去其糟粕 🍅java自学的学习路线:java自学的学习路线
303 0
阿里云部署javaWeb项目依赖软件(jdk、tomcat、Mariadb数据库)的安装
|
弹性计算 安全 关系型数据库
阿里云部署javaWeb项目依赖软件(jdk、tomcat、Mariadb数据库)的安装
阿里云部署javaWeb项目(jdk、tomcat、Mariadb数据库)的安装
阿里云部署javaWeb项目依赖软件(jdk、tomcat、Mariadb数据库)的安装
|
关系型数据库 网络安全 数据库
|
关系型数据库 数据库
mysql 多实例部署 Centos7.6 部署3个Mariadb 实例
mysql 多实例部署 Centos7.6 部署3个Mariadb 实例[root@localhost ~]# yum install mariadb-server -y 创建对应的目录文件 [root@localhost ~]# mkdir /mysql/{3306,3307,3308}/{data,etc,socket,log,bin,pid} -p chown -R mysql.
1431 0
|
关系型数据库
下载安装MariaDB Galera 10.1
因为无法访问外网, 配置官网的yum无法下载MariaDB Galera(在MariaDB 10.1 及之后内置了Galera, 不像之前那样需要独立安装) 需要在下载的包 MariaDB-10.1.31-centos73-x86_64-client.
1466 0

推荐镜像

更多