MariaDB 集群,多主技术的快速上手

老思想总是认为 MySQL 就是一个 master 多个 Slave, 但是看完这篇文章, 将会颠覆你的“传统”思路,而且其配置之简单,令人惊讶!

在一台 Ubuntu18 的 物理机上用 KVM 安装(克隆)了多个 CentOS 7 的虚拟机。 以两台虚拟机(以下称节点) centos-02 (192.168.7.162/24) 和 centos-03 (192.168.7.163/24) 为例。

在 CentOS 7 上首先准备清华大学的 MariaDB 源,官方文档默认的都是国外的,下载速度呵呵。

然后就是 yum update; yum install mariadb-server galera-4; systemctl start mariadb;

以上需要在每个节点上都运行一遍,毕竟这个是基础,略过不表。

接下来我们在每个节点的 /etc/my.cnf.d/ 目录下创建一个 galera.cnf 的文件,截图是节点 02 的配置,如果是节点 03,只要修改 IP 和节点名即可。

[mysqld]
mysql settings
binlog_format=ROW
default-storage-engine=innodb
innodb_autoinc_lock_mode=2
query_cache_size=0
query_cache_type=0
innodb_flush_log_at_trx_commit=0
innodb_buffer_pool_size=256M
bind-address=192.168.7.162
# Galera settings
wsrep_provider=”/usr/lib64/galera-4/libgalera_smm.so”
# SSL for Galera
# wsrep_provider_options=”socket.ssl_key=/etc/mysql/ssl/server-key.pem;socket.ssl_cert=/etc/mysql/ssl/server-cert.pem;socket.ssl_ca=/etc/mysql/ssl/ca-cert.pem”
wsrep_cluster_name=”yj_cluster”
wsrep_cluster_address=”gcomm://192.168.7.162,192.168.7.163″
wsrep_sst_method=rsync
wsrep_on=ON
wsrep_node_address=”192.168.7.162″
wsrep_node_name=”centos-02″

配置好以上,在第一个节点 02 上运行 galera_new_cluster ,进入命令行 mysql 界面,运行 show status like ‘wsrep%’ 就可以看到 cluster 的情况了。 wsrep_cluster_size 就是集群里的活动节点数量。

如果所有的节点都 down 了, 第一个启动的节点,必须先运行 galera_new_cluster 才能启动集群。直接用 systemctl start mariadb 会报错,因为它在尝试连接集群。

多主技术就这么简单!数据库在内网复制的话,无需安装证书相关,十分简便。 IPtables 和 SELinux 这些烦人的东西,只要关闭即可,所谓 眼不见为净。

为了防止偶数节点产生集群的脑裂(split brain),我们需要另外找一个节点安装 Galera Arbitrator(仲裁器) 服务。
假设新节点为: centos-01(192.168.7.161) 我们只要往 /etc/sysconfig/garb 文件写入以下两行:
GALERA_NODES=”192.168.7.162 192.168.7.163 192.168.7.164″
GALERA_GROUP=”yj_cluster”
然后运行 systemctl start garb 即可。
然后用 MySQL 客户端,查看 wsrep_cluster_size 可以看到新加了一个数字。
这个能有效防止集群 down 机。

作者: 甬洁网络

--移动互联网&物联网技术提供商