windows下搭建MySql MGR集群

本文详细介绍了在Windows系统下如何搭建MySQL MGR(Group Replication)集群,从下载安装包到安装服务,修改配置,安装MGR插件,以及开启多主模式。在多主模式下需要注意外键约束和隔离级别的限制,以确保事务的兼容性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

windows下搭建MySql MGR集群

1、下载安装包

  1. 进入mysql官方下载网站
  2. 选择windows系统,点击下方下载,如下图在这里插入图片描述
  3. 下载压缩包后直接解压缩到自己目录,我这里的目录是C:\mysql-8.0.20-winx64
  4. 在C:\mysql-8.0.20-winx64(你自己的mysql目录)新建data文件夹,新建my.ini文件配置。my.ini文件内容如下
[mysqld]
port=3306
basedir=C:\mysql-8.0.20-winx64
datadir=C:\mysql-8.0.20-winx64\data
pid_file=C:\mysql-8.0.20-winx64\mysql.pid

server_id=1
gtid_mode=ON
enforce_gtid_consistency=ON
binlog_checksum=NONE

log_bin=binlog
log_slave_updates=ON
binlog_format=ROW
master_info_repository=TABLE
relay_log_info_repository=TABLE

transaction_write_set_extrac
<think>我们正在搭建MySQL Group Replication集群。根据引用内容,搭建过程涉及多台服务器(至少两台)的配置,且需要确保服务器间网络互通(特别是33061端口)。以下是基于引用[1]和[2]的步骤指南: ### 步骤1: 准备服务器 - 准备至少两台服务器(例如:10.5.2.103和10.5.2.104),并安装相同版本的MySQL(5.7以上版本)。 - 确保服务器间网络互通,开放3306(MySQL服务端口)和33061(Group Replication通信端口)。 ### 步骤2: 配置每台服务器的my.cnf 每台服务器需要配置`my.cnf`,以下为示例配置(以服务器1为例,IP:10.5.2.103): ```ini [mysqld] # 通用配置 server_id=1 # 每台服务器唯一ID gtid_mode=ON enforce_gtid_consistency=ON binlog_checksum=NONE # Group Replication配置 plugin_load_add='group_replication.so' group_replication_group_name="aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa" # 使用相同的UUID,可通过`SELECT UUID()`生成 group_replication_start_on_boot=OFF group_replication_local_address= "10.5.2.103:33061" group_replication_group_seeds= "10.5.2.103:33061,10.5.2.104:33061" group_replication_bootstrap_group=OFF ``` 注意: - `server_id` 每台必须不同。 - `group_replication_group_name` 所有节点必须相同,是一个UUID格式的字符串。 - `group_replication_local_address` 设置为当前服务器的IP和端口(33061)。 - `group_replication_group_seeds` 包含所有节点的地址。 ### 步骤3: 启动MySQL并配置复制用户 每台服务器上执行: ```sql -- 创建复制用户 SET SQL_LOG_BIN=0; CREATE USER 'repl'@'%' IDENTIFIED BY 'repl_password'; GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%'; FLUSH PRIVILEGES; SET SQL_LOG_BIN=1; -- 配置组复制通道 CHANGE MASTER TO MASTER_USER='repl', MASTER_PASSWORD='repl_password' FOR CHANNEL 'group_replication_recovery'; ``` ### 步骤4: 启动组复制 - **在第一个节点(引导节点)上**: ```sql -- 引导组(只在第一个节点执行) SET GLOBAL group_replication_bootstrap_group=ON; START GROUP_REPLICATION; SET GLOBAL group_replication_bootstrap_group=OFF; ``` - **在其他节点上**: ```sql -- 直接启动组复制 START GROUP_REPLICATION; ``` ### 步骤5: 检查集群状态 在任何节点上执行: ```sql SELECT * FROM performance_schema.replication_group_members; ``` 应看到所有节点状态为`ONLINE`。 ### 注意事项 - 如果使用Docker部署,确保网络配置正确(引用[2]提到使用host模式)。 - 新节点加入前,确保数据一致(可使用mysqldump或克隆插件,引用[3]提到mysqldump)。 ### 示例命令 生成UUID(用于`group_replication_group_name`): ```sql SELECT UUID(); ``` §§相关问题§§ 1. MySQL Group Replication集群的最小节点数是多少? 2. 如何向已有MySQL Group Replication集群中添加新节点? 3. MySQL Group Replication集群中节点故障如何处理?</think>### MySQL Group Replication集群搭建指南 #### **1. 环境准备** - **服务器要求**:至少2台互通的服务器(如10.5.2.103和10.5.2.104) - **MySQL版本**:5.7或更高(需支持Group Replication插件) - **端口开放**:确保3306(MySQL服务)和33061(Group Replication通信)端口互通 - **数据一致性**:初始搭建时所有节点数据需一致(可通过`mysqldump`导入,引用[3]) --- #### **2. 配置文件修改(每台服务器)** 修改`my.cnf`,以**10.5.2.103**为例: ```ini [mysqld] # 基础配置 server_id=1 # 每台服务器唯一ID datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock # 复制配置 gtid_mode=ON enforce_gtid_consistency=ON binlog_checksum=NONE log_slave_updates=ON log_bin=binlog # Group Replication核心配置 plugin_load_add='group_replication.so' group_replication_group_name="aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa" # 集群唯一UUID group_replication_start_on_boot=OFF group_replication_local_address= "10.5.2.103:33061" # 当前节点地址 group_replication_group_seeds= "10.5.2.103:33061,10.5.2.104:33061" # 所有节点地址 group_replication_bootstrap_group=off # 引导开关 ``` > ⚠️ 注意: > 1. `server_id` 每台必须不同 > 2. `group_replication_group_name` 所有节点必须相同(可通过`SELECT UUID()`生成) > 3. `group_replication_local_address` 需设置为当前服务器IP --- #### **3. 创建复制用户(所有节点执行)** ```sql -- 创建专用用户 SET SQL_LOG_BIN=0; CREATE USER 'repl'@'%' IDENTIFIED BY 'SecurePass123!'; GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%'; GRANT BACKUP_ADMIN ON *.* TO 'repl'@'%'; FLUSH PRIVILEGES; SET SQL_LOG_BIN=1; -- 配置Group Replication通道 CHANGE MASTER TO MASTER_USER='repl', MASTER_PASSWORD='SecurePass123!' FOR CHANNEL 'group_replication_recovery'; ``` --- #### **4. 启动集群** - **首个节点引导(10.5.2.103)**: ```sql SET GLOBAL group_replication_bootstrap_group=ON; -- 激活引导 START GROUP_REPLICATION; -- 启动组复制 SET GLOBAL group_replication_bootstrap_group=OFF; -- 关闭引导(引用[1]) ``` - **其他节点加入(10.5.2.104)**: ```sql START GROUP_REPLICATION; -- 直接加入集群 ``` --- #### **5. 验证集群状态** ```sql SELECT * FROM performance_schema.replication_group_members; ``` 正常输出示例: ``` | MEMBER_ID | MEMBER_HOST | MEMBER_PORT | MEMBER_STATE | |--------------------|------------------|-------------|--------------| | d4e... | 10.5.2.103 | 3306 | ONLINE | | 8a2... | 10.5.2.104 | 3306 | ONLINE | ``` --- #### **关键注意事项** 1. **防火墙**:确保节点间33061端口互通(引用[2]) 2. **数据初始化**:新节点加入前需通过`mysqldump`同步数据(引用[3]) ```bash mysqldump --all-databases --single-transaction --user=root > backup.sql ``` 3. **Docker部署**:建议使用`host`网络模式(引用[2]) 4. **错误处理**:若节点无法加入,检查`error_log`中SSL或网络错误 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值