1 | MariaDB作为Mysql的一个分支,在开源项目中已经广泛使用,例如大热的openstack,所以,为了保证服务的高可用性,同时提高系统的负载能力,集群部署是必不可少的。 |
MariaDB Galera Cluster 介绍
1 | MariaDB集群是MariaDB同步多主机集群。它仅支持XtraDB/ InnoDB存储引擎(虽然有对MyISAM实验支持 - 看wsrep_replicate_myisam系统变量)。 |
主要功能
1 | - 同步复制 |
优势
1 | 因为是多主,所以不存在Slavelag(延迟) |
技术
1 | Galera集群的复制功能基于Galeralibrary实现,为了让MySQL与Galera library通讯,特别针对MySQL开发了wsrep API。 |
1 | 当客户端发出一个commit的指令,在事务被提交之前,所有对数据库的更改都会被 write-set 收集起来,并且将 write-set 记录的内容发送给其他节点。 |
集群部署
安装环境准备
1 | 安装MariaDB集群至少需要3台服务器(如果只有两台的话需要特殊配置,请参照官方文档) |
官方文档:链接
1 | 操作系统版本:CentOS7 |
3节点配置hosts
1 | 10.128.20.16 node1 |
禁用防火墙和selinux
1 | (1)为了保证节点间相互通信,需要禁用防火墙设置(如果需要防火墙,则参照官方网站增加防火墙信息设置) |
安装MariaDB
配置MariaDB YUM源
1 | 官方源配置向导:https://link.jianshu.com/?t=https://downloads.mariadb.org/mariadb/repositories |
1 | 官方源 |
1 | 国内源 |
安装MariaDB-10.0
1 | yum install -y mariadb mariadb-galera-server mariadb-galera-common galera rsync |
初始化服务(只在node1节点执行)
1 | systemctl start mariadb |
关闭node1节点数据库,修改 /etc/my.cnf.d/galera.cnf
1 | systemctl stop mariadb |
1 | [mysqld] |
1 | 将此文件复制到node2、node3,注意要把 wsrep_node_name 和 wsrep_node_address 改成相应节点的 hostname 和 ip。 |
启动集群
1 | node1 启动 MariaDB Galera Cluster 服务 |
1 | 观察日志: |
继续启动node2和node3节点
1 | systemctl start mariadb |
查看集群
1 | mysql -uroot -p |
1 | 我们可以关注几个关键的参数: |
验证数据同步
1 | 我们在 node1 上新建数据库 galera_test ,然后在 node2 和 node3 上查询,如果可以查询到 galera_test 这个库,说明数据同步成功,集群运行正常。 |
1 | [root@node1 ~]# mysql -uroot -proot -e "create database galera_test" |
1 | [root@node2 ~]# mysql -uroot -proot -e "show databases" |
1 | [root@node3 ~]# mysql -uroot -proot -e "show databases" |
至此,我们的 MariaDB Galera Cluster 已经成功部署。
参考:OpenARM
- 本文作者: GaryWu
- 本文链接: https://garywu520.github.io/2018/06/14/MariaDB-Galera-Cluster部署/
- 版权声明: 本博客所有文章除特别声明外,均采用 MIT 许可协议。转载请注明出处!