MySQL 数据库 组复制搭建与管理

MySQL 数据库阿木 发布于 2025-07-07 14 次阅读


MySQL 组复制搭建与管理

MySQL 组复制(Group Replication)是一种高可用性的复制解决方案,它允许多个MySQL服务器作为一个复制组协同工作。组复制提供了自动故障转移、数据一致性和无单点故障的特性。本文将围绕MySQL组复制的搭建与管理展开,通过代码示例和配置说明,帮助读者深入了解这一技术。

环境准备

在开始搭建组复制之前,我们需要准备以下环境:

1. 服务器:至少需要三台服务器,用于搭建主从复制。

2. 操作系统:推荐使用Linux系统,如CentOS、Ubuntu等。

3. MySQL版本:推荐使用5.7或更高版本。

组复制搭建

1. 安装MySQL

在每台服务器上安装MySQL,以下以CentOS为例:

bash

安装MySQL Yum仓库


sudo rpm -Uvh https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm

安装MySQL服务器


sudo yum install mysql-community-server


2. 配置MySQL

在每台服务器上配置MySQL,以下以CentOS为例:

bash

启动MySQL服务


sudo systemctl start mysqld

获取临时密码


sudo grep 'temporary password' /var/log/mysqld.log

修改root密码


mysql -u root -p


3. 创建复制用户

在每台服务器上创建复制用户,以下为创建用户`replication_user`,密码为`replication_password`:

sql

CREATE USER 'replication_user'@'%' IDENTIFIED BY 'replication_password';


GRANT REPLICATION SLAVE ON . TO 'replication_user'@'%';


FLUSH PRIVILEGES;


4. 配置组复制

在每台服务器上配置组复制,以下以CentOS为例:

bash

修改my.cnf配置文件


sudo vi /etc/my.cnf

[mysqld]


server-id = 1


log-bin = mysql-bin


binlog-format = ROW


gtid_mode = ON


enforce-gtid-consistency = ON


wsrep_on = ON


wsrep_provider_name = group_replication


wsrep_cluster_address = "gcrpc://node1:19002,node2:19002,node3:19002"


wsrep_sst_method = rsync


wsrep_slave_threads = 2


wsrep_retried_join = 10


wsrep_node_address = "192.168.1.1:19002"


wsrep_node_name = "node1"


5. 启动组复制

在每台服务器上启动MySQL服务,以下以CentOS为例:

bash

sudo systemctl start mysqld


6. 加入组复制

在第二台服务器上执行以下命令,加入组复制:

bash

mysql -u root -p


输入临时密码后,执行以下命令:

sql

mysql> STOP GROUP_REPLICATION;


mysql> SET GLOBAL group_replication_recovery = 'ON';


mysql> SET GLOBAL group_replication_bootstrap_group = 'ON';


mysql> START GROUP_REPLICATION;


在第三台服务器上执行以下命令,加入组复制:

bash

mysql -u root -p


输入临时密码后,执行以下命令:

sql

mysql> STOP GROUP_REPLICATION;


mysql> SET GLOBAL group_replication_recovery = 'ON';


mysql> SET GLOBAL group_replication_bootstrap_group = 'ON';


mysql> START GROUP_REPLICATION;


组复制管理

1. 查看组复制状态

在任意一台服务器上执行以下命令,查看组复制状态:

sql

mysql> SHOW STATUS LIKE 'Group_replication%';


2. 故障转移

当主节点发生故障时,从节点会自动进行故障转移。在故障转移过程中,从节点会等待主节点恢复或等待新的主节点选举。

3. 添加新节点

在需要添加新节点时,执行以下命令:

sql

mysql> STOP GROUP_REPLICATION;


mysql> SET GLOBAL group_replication_recovery = 'ON';


mysql> SET GLOBAL group_replication_bootstrap_group = 'ON';


mysql> START GROUP_REPLICATION;


4. 移除节点

在需要移除节点时,执行以下命令:

sql

mysql> STOP GROUP_REPLICATION;


mysql> SET GLOBAL group_replication_recovery = 'ON';


mysql> SET GLOBAL group_replication_bootstrap_group = 'ON';


mysql> START GROUP_REPLICATION;


总结

MySQL组复制是一种高可用性的复制解决方案,它为MySQL数据库提供了强大的数据一致性和故障转移能力。读者应该对MySQL组复制的搭建与管理有了基本的了解。在实际应用中,可以根据具体需求对组复制进行优化和调整。