原文:基于Mariadb 10.6.4在CentOS 7环境下配置Galera Cluster集群。
这篇文章主要内容是MariaDB Galera Cluster集群搭建过程,至于这个集群的工作原理、优缺点比较,不在这里讨论。
环境信息:
- CentOS Linux release 7.9.2009 (Core);
- mariadb-10.6.4;
集群搭建,至少3台机器,信息如下:
IP地址 | 节点名称 |
---|---|
10.200.67.27 | MariaDB-Node1 |
10.200.67.29 | MariaDB-Node2 |
10.200.67.26 | MariaDB-Node3 |
需要安装的组件:MariaDB-server
、MariaDB-client
。从MariaDB版本10.1开始,MariaDB Server
和 MariaDB Galera Server
安装包已经合并了。安装MariaDB-server会自动安装Galera及其依赖。
具体步骤如下:
一、仓库配置
执行下面命令配置mariadb仓库:
[xiaofang@sd-vm-0004432 ~]$ curl -sS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup | sudo bash
[info] Checking for script prerequisites.
[info] Repository file successfully written to /etc/yum.repos.d/mariadb.repo
[info] Adding trusted package signing keys...
/etc/pki/rpm-gpg /home/xiaofang
/home/xiaofang
[info] Successfully added trusted package signing keys
[info] Cleaning package cache...
Loaded plugins: fastestmirror
Cleaning repos: base extras mariadb mariadb-main mariadb-maxscale mariadb-tools updates
Cleaning up list of fastest mirrors
然后,将上述步骤,在其余两台机器上照着执行一遍。
二、下载安装包并安装
安装包的下载地址:https://archive.mariadb.org/mariadb-10.6.4/yum/centos7-amd64/rpms/ 。
2.1 依赖文件下载
执行下载:
wget https://archive.mariadb.org/mariadb-10.6.4/yum/centos7-amd64/rpms/MariaDB-common-10.6.4-1.el7.centos.x86_64.rpm
wget https://archive.mariadb.org/mariadb-10.6.4/yum/centos7-amd64/rpms/MariaDB-compat-10.6.4-1.el7.centos.x86_64.rpm
执行安装:
[xiaofang@sd-vm-0004433 mariadb]$ ll
total 2292
-rw-rw-r-- 1 xiaofang xiaofang 83116 Aug 5 02:57 MariaDB-common-10.6.4-1.el7.centos.x86_64.rpm
-rw-rw-r-- 1 xiaofang xiaofang 2257544 Aug 5 02:57 MariaDB-compat-10.6.4-1.el7.centos.x86_64.rpm
[xiaofang@sd-vm-0004433 mariadb]$
[xiaofang@sd-vm-0004433 mariadb]$
[xiaofang@sd-vm-0004433 mariadb]$ sudo yum -y install MariaDB-com*
2.2 安装MariaDB-client
wget https://archive.mariadb.org/mariadb-10.6.4/yum/centos7-amd64/rpms/MariaDB-client-10.6.4-1.el7.centos.x86_64.rpm
执行安装:
sudo yum -y install MariaDB-client-10.6.4-1.el7.centos.x86_64.rpm
2.3 安装MariaDB-server
wget https://archive.mariadb.org/mariadb-10.6.4/yum/centos7-amd64/rpms/MariaDB-server-10.6.4-1.el7.centos.x86_64.rpm
执行安装:
sudo yum -y install MariaDB-server-10.6.4-1.el7.centos.x86_64.rpm
2.4 启动mariadb
安装完成之后,启动mariadb,命令如下:
sudo systemctl start mariadb
2.5 设置root用户密码
sudo mysql -uroot
MariaDB[(none)]> set password = password("your_password");
MariaDB[(none)]> quit;
2.6 确认rsync和policycoreutils-python已安装
sudo yum install rsync policycoreutils-python
然后,将上述步骤,在其余两台机器上照着执行一遍。
三、配置Galera各节点
3.1 MariaDB-Node1(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.27,10.200.67.29,10.200.67.26"
# Galera Synchronization Configuration
wsrep_sst_method=rsync
# Galera Node Configuration
wsrep_node_address="10.200.67.27"
wsrep_node_name="MariaDB-Node1"
3.2 MariaDB-Node2(10.200.67.29)节点配置
执行编辑命令:
vi /etc/my.cnf.d/galera.cnf
内容如下:
3.3 MariaDB-Node3(10.200.67.26)节点配置
执行编辑命令:
vi /etc/my.cnf.d/galera.cnf
内容如下:
四、配置防火墙
如果没有开启防火墙可以跳过此步骤。
需要开放的端口有四个:
- 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
6.1启动第一个节点
在第一个服务器节点执行:
sudo galera_new_cluster
查看注册节点状态:
mysql -u root -p -e "SHOW STATUS LIKE 'wsrep_cluster_size'"
输出如下
+--------------------+-------+
| Variable_name | Value |
+--------------------+-------+
| wsrep_cluster_size | 1 |
+--------------------+-------+
6.2启动第二个节点
sudo systemctl start mariadb
查看注册节点:
mysql -u root -p -e "SHOW STATUS LIKE 'wsrep_cluster_size'"
输出如下:
Output
+--------------------+-------+
| Variable_name | Value |
+--------------------+-------+
| wsrep_cluster_size | 2 |
+--------------------+-------+
6.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;
八、集群测试
在某一个节点创建测试数据库,看是否能同步。
参考文章:
最新评论
网飞没问题, 迪士尼+有解决方案么?
pp助手是安卓手机用的,根本下载用不来苹果
已解决
这样的话数据库里的结构为{"attachment":{"content":"xxx"}}, 要怎么才能变成{"content":"xxx"},从而使结构保持一致?
赞! make test不过的坑都写到的,谢谢楼主~
谢谢你
用了root用户还是一直502是怎么回事呢
student id 是空的