MySQL Group Replication(简称MGR)是MySQL 5.7.17版本引入的一种插件,用于实现高可用性和数据一致性的分布式数据库集群,它基于原生复制和Paxos协议,支持自动故障转移和多主模式,本文将详细介绍如何在三台服务器上安装和配置MGR控制平面服务。
一、环境准备
在开始之前,需要准备三台服务器,每台服务器分配公网IP,并开放必要的端口(22、3306、24901),以下是服务器的配置:
IP | 角色 | 主机名 | MySQL版本 | DB端口 | MGR端口 |
172.21.180.98 | Master | n0 | 8.0.26 | 3306 | 24901 |
172.21.180.99 | Slave | n1 | 8.0.26 | 3306 | 24901 |
172.21.180.100 | Slave | n2 | 8.0.26 | 3306 | 24901 |
二、系统环境和网络配置
1. 配置Hosts文件
在所有节点上执行以下命令,将内网IP与主机名进行关联:
sudo cat > /etc/hosts <<-'EOF' 172、21.180.98 n0 172、21.180.99 n1 172、21.180.100 n2 EOF
2. 设置主机名称
分别在三台服务器上设置主机名称:
第1台服务器 hostnamectl set-hostname n0 第2台服务器 hostnamectl set-hostname n1 第3台服务器 hostnamectl set-hostname n2
三、安装MySQL
1. 下载并安装MySQL官方YUM仓库源
在三台服务器上执行以下命令:
cd /home/ wget --no-check-certificate https://repo.mysql.com/mysql80-community-release-el7-5.noarch.rpm yum localinstall -y mysql80-community-release-el7-5.noarch.rpm
2. 修改仓库配置
编辑/etc/yum.repos.d/mysql-community.repo
文件,将gpgcheck
设置为0:
[mysql80-community] name=MySQL 8.0 Community Server baseurl=http://repo.mysql.com/yum/mysql-8.0-community/el7/x86_64/ enabled=1 gpgcheck=0
3. 安装MySQL
在三台服务器上执行以下命令:
yum install -y mysql-community-server-8.0.26
四、配置MySQL
1. 修改MySQL配置文件
在所有节点上,编辑/etc/my.cnf
文件,添加以下内容:
[mysqld] default_authentication_plugin=mysql_native_password plugin_dir=/usr/lib64/mysql/plugin server_id=1 # 根据节点不同设置不同的server_id gtid_mode=ON enforce_gtid_consistency=ON binlog_format=ROW transaction_write_set_extraction=XXHASH64 loose-group_replication_start_on_boot=off loose-group_replication_local_address="n0:33061" # 根据实际节点IP和端口修改 loose-group_replication_group_name="aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa" # 使用UUID生成工具生成 loose-group_replication_group_seeds="n0:33061,n1:33061,n2:33061" loose-group_replication_bootstrap_group=off loose-group_replication_recovery_use_ssl=on
2. 初始化MySQL数据库
在所有节点上执行以下命令,初始化MySQL数据库:
mysqld --initialize --user=mysql --basedir=/usr/bin --datadir=/var/lib/mysql
3. 启动MySQL服务
在所有节点上执行以下命令,启动MySQL服务:
systemctl start mysqld systemctl enable mysqld
4. 配置防火墙(可选)
如果需要,可以配置防火墙以允许MySQL和MGR通信:
firewall-cmd --permanent --add-port=3306/tcp firewall-cmd --permanent --add-port=24901/tcp firewall-cmd --reload
五、安装MGR插件
在所有节点上登录MySQL,执行以下命令安装MGR插件:
INSTALL PLUGIN group_replication SONAME 'group_replication.so';
六、配置MGR
1. 创建复制用户并授权
在所有节点上执行以下SQL语句,创建复制用户并授予权限:
CREATE USER 'mgr_user'@'%' IDENTIFIED BY 'password'; GRANT CLONE_ADMIN, CLONE_NODE, REPLICATION_SLAVE_ADMIN, REPLICATION_CLIENT ON *.* TO 'mgr_user'@'%'; FLUSH PRIVILEGES;
2. 创建MGR集群
在其中一个节点上(例如n0),执行以下SQL语句,创建MGR集群:
SET GLOBAL group_replication_bootstrap_group=ON; START GROUP_REPLICATION; SET GLOBAL group_replication_bootstrap_group=OFF;
3. 添加其他节点到集群
在其他节点(n1和n2)上,执行以下SQL语句,将它们添加到MGR集群:
SET GLOBAL group_replication_bootstrap_group=OFF; START GROUP_REPLICATION;
七、验证MGR集群状态
在所有节点上执行以下SQL语句,检查MGR集群状态:
SHOW STATUS LIKE 'group_replication%';
八、常见问题及解答(FAQs)
Q1: 如果某个节点出现故障,MGR集群如何处理?
A1: MGR具有自动故障转移功能,如果某个节点出现故障,MGR会自动重新选举新的主节点,并恢复集群的正常运作,确保网络连接正常,避免因网络问题导致节点失联。
Q2: MGR支持哪些存储引擎?
A2: MGR仅支持InnoDB存储引擎,并且要求每张表必须有一个主键或唯一索引,以确保数据的一致性和冲突检测。
Q3: MGR集群最多支持多少个节点?
A3: MGR集群最多支持9个节点,这是经过测试确定的安全边界,超过此数量可能会导致性能下降或稳定性问题。
Q4: 如何更改单主模式为多主模式?
A4: MGR默认为单主模式,可以通过修改group_replication_single_primary_mode
参数来切换模式,在my.cnf
中添加或修改以下内容:
[mysqld] group_replication_single_primary_mode=OFF
然后重启MySQL服务即可生效,需要注意的是,多主模式下所有节点都可以处理更新操作,但可能会增加冲突的风险。
通过以上步骤,您已经成功搭建了一个基于MySQL Group Replication的高可用性数据库集群,MGR提供了强大的数据一致性保障和自动故障转移能力,适用于金融交易、重要数据存储等对数据一致性要求较高的场景,希望本文能帮助您更好地理解和部署MGR控制平面服务。
原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/1393609.html
本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。
发表回复