在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语句,均会同步到对方。

 

posted on 2020-10-20 13:19  BoyTNT  阅读(592)  评论(0编辑  收藏  举报

导航