在CentOS7上安装 MariaDB Galera Cluster 多主集群
1、MariaDB Galera Cluster介绍
MariaDB Galera Cluster 是一个用于同步 MariaDB 数据库的多 master 集群的工具。在数据方面完全兼容 MariaDB 和 MySQL。特性:
- 同步复制 Synchronous replication
- Active-active multi-master 拓扑逻辑
- 可对集群中任一节点进行数据读写
- 自动成员控制,故障节点自动从集群中移除
- 自动节点加入
- 真正并行的复制,基于行级
- 直接客户端连接,原生的 MySQL 接口
2、环境准备
准备两台虚拟机,分别安装CentOS7-1908(7.7)。
服务器A:193.168.12.9 db1
服务器B:193.168.12.10 db2
两台虚机上关闭防火墙:
systemctl stop firewalld
systemctl disable firewalld
两台虚机上关闭selinux:
setenforce 0
修改/etc/selinux/config,设置SELINUX=disabled,确保重启后也生效。
3、安装mariadb 10.5
默认centos的源里不带mariadb 10.5,需要自己配置,创建/etc/yum.repo.d/mariadb.repo文件,这里配置的是从阿里云镜像下载,速度比从官网快。内容如下:
[mariadb] name=MariaDB baseurl=https://mirrors.aliyun.com/mariadb/yum/10.5/centos7-amd64 pgpkey=https://mirrors.aliyun.com/mariadb/yum/RPM-GPG-KEY-MariaDB pgpcheck=0
下载并导入KEY:
wget --no-check-certificate https://mirrors.aliyun.com/mariadb/yum/RPM-GPG-KEY-MariaDB /etc/pki/rpm-gpg/ rpm --import /etc/pki/rpm-gpg/*
用yum安装:
yum install -y MariaDB-server MariaDB-client
如果之前配置过其它源导致安装失败,可以先清理一下再重试:
yum clean metadata
两台数据库服务器做同样操作。
4、配置mariadb
启动mariadb:
systemctl start mariadb
可按需执行初始化:
mysql_secure_installation
mariadb默认仅允许root本地登录,需要手工创建root远程管理权限,可以新建,也可以修改当前root,新建的话:
mysql -uroot -p use mysql create user root@'%' identified by 'mariadb'; flush privileges;
或者修改已有root的host:
mysql -u root -p use mysql update user set host='%' where user='admin' and host='localhost'; flush privileges;
两台数据库服务器做同样操作。
5、组建集群
两台独立的数据库都准备好后,开始组建galera cluster,先停mariadb服务:
systemctl stop mariadb
修改mariadb的配置:/etc/my.cnf.d/server.cnf
[galera] wsrep_on=ON wsrep_provider=/usr/lib64/galera-4/libgalera_smm.so wsrep_cluster_address=gcomm://193.168.12.9,193.168.12.10 wsrep_cluster_name=rvsdb wsrep_node_name=db1 wsrep_node_address=193.168.12.9 binlog_format=row default_storage_engine=InnoDB innodb_autoinc_lock_mode=2 wsrep_slave_threads=20 innodb_flush_log_at_trx_commit=0 bind-address=0.0.0.0
两台服务器的配置里除wsrep_node_name和wsrep_node_address外,其它配置项都相同。
以创建新集群的方式启动第一个节点:
galera_new_cluster
此时能看到mysqld进程以带参数的方式启动,并且同时监听4567和3306端口。
需要注意galera_new_cluster仅执行一次,以后这个节点重启按正常服务方式启动就行了。
以正常方式启动第二个节点:
systemctl start mariadb
如果启动没有报错,恭喜,集群组成完成。官方推荐集群至少3个节点,但2个也能工作,只是可能出现Split-Brain问题。
此时双方分别登录自己的mariadb,查看集群状态,可以看到有相同的cluster_status_uuid,集群数量cluster_size也是2,表示两台。
在两台上分别执行DDL或者SQL语句,均会同步到对方。