优米格
分享有营养的

基于Mariadb 10.6.8在CentOS 7环境下配置Galera Cluster集群

BraUndress.png

这篇文章主要内容是MariaDB Galera Cluster集群搭建过程,至于这个集群的工作原理、优缺点比较,不在这里讨论。

环境信息:

  • CentOS Linux release 7.9.2009 (Core);
  • mariadb-10.6.8;

集群搭建,至少3台机器,假设信息如下:

IP地址 节点名称
10.200.67.26 MariaDB-Node1
10.200.67.27 MariaDB-Node2
10.200.67.28 MariaDB-Node3

需要安装的组件:MariaDB-serverMariaDB-client。从MariaDB版本10.1开始,MariaDB ServerMariaDB Galera Server安装包已经合并了。安装MariaDB-server会自动安装Galera及其依赖。

接下来是正式的安装过程:

一、卸载已安装的MariaDB和依赖

#查看是否已安装

rpm -qa MariaDB*

rpm -qa galera*

#卸载

rpm -e `rpm -qa MariaDB*`

rpm -e `rpm -qa gelera*`

二、仓库配置

可以去官网自行选择你的系统版本和仓库镜像位置:https://mariadb.org/download/?t=repo-config,然后将生成的内容复制下来即可。

编辑仓库文件,并将内容粘贴进去:

sudo vi /etc/yum.repos.d/mariadb.repo

如下:

# MariaDB 10.6 CentOS repository list - created 2022-08-07 16:05 UTC
# https://mariadb.org/download/
[mariadb]
name = MariaDB
baseurl = https://mirrors.aliyun.com/mariadb/yum/10.6/centos7-amd64
gpgkey=https://mirrors.aliyun.com/mariadb/yum/RPM-GPG-KEY-MariaDB
gpgcheck=1

更新仓库:

sudo yum makecache --disablerepo='*' --enablerepo='mariadb'

如果更新出错,可以清空,重新缓存仓库文件,解决方式参考:yum install primary.sqlite.bz2错误

sudo yum clean all

sudo yum makecache

三、安装

执行安装命令,相关依赖也会同步安装:

sudo yum install MariaDB-server MariaDB-client

四、设置开机启动

启动MariaDB并设置为开机自启:

# 启动
sudo systemctl start mariadb

# 开机自启

sudo systemctl enable mariadb

五、修改密码

# 登录
sudo mysql -uroot

# 设置密码

set password = password("your_password");

六、安装同步工具

sudo yum install rsync policycoreutils-python

七、配置集群

开始之前,请确保上面的一、二、三、四、五、六步骤在各个节点上执行完毕。

7.1 MariaDB-Node1(10.200.67.26)节点配置

执行编辑命令:

vi /etc/my.cnf.d/galera.cnf 

内容如下:

[mysqld]
binlog_format=ROW
default-storage-engine=innodb
innodb_autoinc_lock_mode=2
bind-address=0.0.0.0
max_connections=1000
thread_concurrency=1200

# Galera Provider Configuration
wsrep_on=ON
wsrep_provider=/usr/lib64/galera-4/libgalera_smm.so

# Galera Cluster Configuration
wsrep_cluster_name="Galera_Cluster"
wsrep_cluster_address="gcomm://10.200.67.26,10.200.67.27,10.200.67.28"

# Galera Synchronization Configuration
wsrep_sst_method=rsync

# Galera Node Configuration
wsrep_node_address="10.200.67.26"
wsrep_node_name="MariaDB-Node1"

7.2 MariaDB-Node2(10.200.67.27)节点配置

执行编辑命令:

vi /etc/my.cnf.d/galera.cnf 

内容如下:

[mysqld]
binlog_format=ROW
default-storage-engine=innodb
innodb_autoinc_lock_mode=2
bind-address=0.0.0.0
max_connections=1000
thread_concurrency=1200

# Galera Provider Configuration
wsrep_on=ON
wsrep_provider=/usr/lib64/galera-4/libgalera_smm.so

# Galera Cluster Configuration
wsrep_cluster_name="Galera_Cluster"
wsrep_cluster_address="gcomm://10.200.67.26,10.200.67.27,10.200.67.28"

# Galera Synchronization Configuration
wsrep_sst_method=rsync

# Galera Node Configuration
wsrep_node_address="10.200.67.27"
wsrep_node_name="MariaDB-Node2"

7.3 MariaDB-Node3(10.200.67.28)节点配置

执行编辑命令:

vi /etc/my.cnf.d/galera.cnf 

内容如下:

[mysqld]
binlog_format=ROW
default-storage-engine=innodb
innodb_autoinc_lock_mode=2
bind-address=0.0.0.0
max_connections=1000
thread_concurrency=1200

# Galera Provider Configuration
wsrep_on=ON
wsrep_provider=/usr/lib64/galera-4/libgalera_smm.so

# Galera Cluster Configuration
wsrep_cluster_name="Galera_Cluster"
wsrep_cluster_address="gcomm://10.200.67.26,10.200.67.27,10.200.67.28"

# Galera Synchronization Configuration
wsrep_sst_method=rsync

# Galera Node Configuration
wsrep_node_address="10.200.67.28"
wsrep_node_name="MariaDB-Node3"

八、配置防火墙

如果没有开启防火墙可以跳过此步骤。

需要开放的端口有四个:

  • 3306: mariadb连接端口;
  • 4567: Galera Cluster复制同步端口;
  • 4568: 增量传输,其他节点状态检测端口;
  • 4444: 其他节点加入状态检测等作用;
sudo firewall-cmd --permanent --zone=public --add-port=3306/tcp
sudo firewall-cmd --permanent --zone=public --add-port=4567/tcp
sudo firewall-cmd --permanent --zone=public --add-port=4568/tcp
sudo firewall-cmd --permanent --zone=public --add-port=4444/tcp
sudo firewall-cmd --permanent --zone=public --add-port=4567/udp
sudo firewall-cmd --permanent --zone=public --add-source=10.200.67.27/32
sudo firewall-cmd --permanent --zone=public --add-source=10.200.67.29/32
sudo firewall-cmd --permanent --zone=public --add-source=10.200.67.26/32

重启防火墙:

sudo firewall-cmd --reload

九、创建SELinux安全策略

如果你没有开启SELinux安全策略,可以略过这一步。

在三个服务器上,分别执行:

sudo semanage port -a -t mysqld_port_t -p tcp 4567
sudo semanage port -a -t mysqld_port_t -p udp 4567
sudo semanage port -a -t mysqld_port_t -p tcp 4568
sudo semanage port -a -t mysqld_port_t -p tcp 4444

接下来,在所有三台服务器上运行以下命令,将 MySQL SELinux 域临时设置为许可模式。

sudo semanage permissive -a mysqld_t

十、启动集群

依次在第三、第二、第一个服务器上执行如下命令,并使用systemctl status mariadb确认服务已关闭:

sudo systemctl stop mariadb

10.1启动第一个节点

在第一个服务器节点执行:

sudo galera_new_cluster

查看注册节点状态:

mysql -u root -p -e "SHOW STATUS LIKE 'wsrep_cluster_size'"

输出如下

+--------------------+-------+
| Variable_name      | Value |
+--------------------+-------+
| wsrep_cluster_size | 1     |
+--------------------+-------+

10.2启动第二个节点

sudo systemctl start mariadb

查看注册节点:

mysql -u root -p -e "SHOW STATUS LIKE 'wsrep_cluster_size'"

输出如下:

Output
+--------------------+-------+
| Variable_name      | Value |
+--------------------+-------+
| wsrep_cluster_size | 2     |
+--------------------+-------+

10.3启动第三个节点

sudo systemctl start mariadb

查看集群大小:

mysql -u root -p -e "SHOW STATUS LIKE 'wsrep_cluster_size'"

输出如下:

+--------------------+-------+
| Variable_name      | Value |
+--------------------+-------+
| wsrep_cluster_size | 3     |
+--------------------+-------+

十一、配置远程访问

MariaDB [(none)]> use mysql;
MariaDB [mysql]> grant all privileges  on *.* to root@'localhost' identified by "your_password";
MariaDB [mysql]> grant all privileges  on *.* to root@'%' identified by "your_password";
MariaDB [mysql]> FLUSH PRIVILEGES;

十二、集群测试

在某一个节点创建测试数据库,看是否能同步。

参考文章:

  1. MariaDB Galera Cluster集群搭建
  2. How To Configure a Galera Cluster with MariaDB on CentOS 7 Servers
  3. MariaDB Installation (Version 10.1.21) via RPMs on CentOS 7
赞(1)
未经允许禁止转载:优米格 » 基于Mariadb 10.6.8在CentOS 7环境下配置Galera Cluster集群

评论 抢沙发

合作&反馈&投稿

商务合作、问题反馈、投稿,欢迎联系

广告合作侵权联系