MySQL 8.0 的主主复制(双向复制)

在 Windows Server 2022 Datacenter 上配置 MySQL 8.0 的主主复制(双向复制),步骤与 Linux 类似,但有一些特定的配置和路径需要注意。以下是详细的简化步骤:

1. 使用 root 用户登录

确保你以 root 用户登录到 MySQL 服务器。

shell 复制代码
mysql -u root -p

输入你的 root 密码后进入 MySQL 命令行界面。

2. 配置第一台主服务器 (master1)

2.1 编辑 my.ini

master1 上编辑 MySQL 配置文件 my.ini,通常位于 MySQL 安装目录下,例如 C:\ProgramData\MySQL\MySQL Server 8.0\my.ini

ini 复制代码
[mysqld]
# 设置唯一 server-id
server-id=1

# 启用二进制日志
log-bin=mysql-bin

# 允许其他主机连接
bind-address=0.0.0.0

# 自增 ID 增量和偏移量
auto-increment-increment=2
auto-increment-offset=1

# 可选:指定需要复制的数据库
binlog-do-db=mydatabase

# 可选:忽略不需要复制的数据库
binlog-ignore-db=mysql
2.2 重启 MySQL 服务

保存配置文件后,重启 MySQL 服务以应用更改。

通过 PowerShell 或命令提示符:

shell 复制代码
net stop mysql80
net start mysql80

或者使用服务管理器:

  1. 打开"服务"管理控制台 (services.msc)。
  2. 找到 MySQL80 服务。
  3. 右键点击并选择"重新启动"。
2.3 创建用于复制的用户

使用 root 用户登录到 MySQL master1 并创建一个专门用于复制的用户。

sql 复制代码
CREATE USER 'replicator'@'192.168.2.246' IDENTIFIED BY '123456';
GRANT REPLICATION SLAVE ON *.* TO 'replicator'@'192.168.2.246';
FLUSH PRIVILEGES;
2.4 获取二进制日志位置

获取当前的二进制日志文件名和位置。

sql 复制代码
SHOW MASTER STATUS;

记下 FilePosition 的值,例如:

+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000001 |      154 | mydatabase   | mysql            |
+------------------+----------+--------------+------------------+

3. 配置第二台主服务器 (master2)

3.1 编辑 my.ini

master2 上编辑 MySQL 配置文件 my.ini,通常位于 MySQL 安装目录下,例如 C:\ProgramData\MySQL\MySQL Server 8.0\my.ini

ini 复制代码
[mysqld]
# 设置唯一 server-id
server-id=2

# 启用二进制日志
log-bin=mysql-bin

# 允许其他主机连接
bind-address=0.0.0.0

# 自增 ID 增量和偏移量
auto-increment-increment=2
auto-increment-offset=2

# 可选:指定需要复制的数据库
binlog-do-db=mydatabase

# 可选:忽略不需要复制的数据库
binlog-ignore-db=mysql
3.2 重启 MySQL 服务

保存配置文件后,重启 MySQL 服务以应用更改。

通过 PowerShell 或命令提示符:

shell 复制代码
net stop mysql80
net start mysql80

或者使用服务管理器:

  1. 打开"服务"管理控制台 (services.msc)。
  2. 找到 MySQL80 服务。
  3. 右键点击并选择"重新启动"。
3.3 创建用于复制的用户

使用 root 用户登录到 MySQL master2 并创建一个专门用于复制的用户。

sql 复制代码
CREATE USER 'replicator'@'192.168.2.47' IDENTIFIED BY '123456';
GRANT REPLICATION SLAVE ON *.* TO 'replicator'@'192.168.2.47';
FLUSH PRIVILEGES;
3.4 获取二进制日志位置

获取当前的二进制日志文件名和位置。

sql 复制代码
SHOW MASTER STATUS;

记下 FilePosition 的值,例如:

+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000001 |      154 | mydatabase   | mysql            |
+------------------+----------+--------------+------------------+

4. 配置 master1 连接到 master2

4.1 停止复制线程

如果复制线程正在运行,先停止它们。

sql 复制代码
STOP SLAVE;
RESET SLAVE ALL;
4.2 配置 master1 连接到 master2

使用 root 用户登录到 MySQL master1 并配置复制信息。

sql 复制代码
CHANGE MASTER TO
 MASTER_HOST='192.168.2.246',
 MASTER_USER='replicator',
 MASTER_PASSWORD='123456',
 MASTER_LOG_FILE='mysql-bin.000001',  -- 替换为实际的 binlog 文件名
 MASTER_LOG_POS=154,                -- 替换为实际的 position
 GET_MASTER_PUBLIC_KEY=1;

START SLAVE;

MASTER_LOG_FILEMASTER_LOG_POS 替换为之前记录的二进制日志文件名和位置。

5. 配置 master2 连接到 master1

5.1 停止复制线程

如果复制线程正在运行,先停止它们。

sql 复制代码
STOP SLAVE;
RESET SLAVE ALL;
5.2 配置 master2 连接到 master1

使用 root 用户登录到 MySQL master2 并配置复制信息。

sql 复制代码
CHANGE MASTER TO
 MASTER_HOST='192.168.2.47',
 MASTER_USER='replicator',
 MASTER_PASSWORD='123456',
 MASTER_LOG_FILE='mysql-bin.000001',  -- 替换为实际的 binlog 文件名
 MASTER_LOG_POS=154,                -- 替换为实际的 position
 GET_MASTER_PUBLIC_KEY=1;

START SLAVE;

MASTER_LOG_FILEMASTER_LOG_POS 替换为之前记录的二进制日志文件名和位置。

6. 检查复制状态

在每台服务器上检查复制状态,确保一切正常。

master1 上检查:
sql 复制代码
SHOW SLAVE STATUS\G

关注以下字段:

  • Slave_IO_Running : 应该显示 Yes
  • Slave_SQL_Running : 应该显示 Yes
  • Last_IO_Error: 应该为空
  • Last_SQL_Error: 应该为空
master2 上检查:
sql 复制代码
SHOW SLAVE STATUS\G

关注相同的字段,确保没有错误信息。

总结

通过以上简化步骤,你应该能够成功配置 MySQL 主主复制。以下是关键点总结:

  1. 使用 root 用户登录:

    • 确保你以 root 用户登录到 MySQL 服务器,以执行创建和授权用户的操作。
  2. 编辑 my.ini 配置文件:

    • 设置唯一的 server-id
    • 启用二进制日志。
    • 允许其他主机连接。
    • 设置自增 ID 增量和偏移量。
  3. 重启 MySQL 服务:

    • 保存配置文件后,重启 MySQL 服务以应用更改。
  4. 创建用于复制的用户:

    • 使用 CREATE USERGRANT 命令创建并授予权限。
  5. 获取二进制日志位置:

    • 使用 SHOW MASTER STATUS; 获取当前的二进制日志文件名和位置。
  6. 配置 master1 连接到 master2:

    • 停止现有的复制线程(如果有)。
    • 使用 CHANGE MASTER TO 命令配置 master1 连接到 master2
    • 启动 master1 的复制进程并检查状态。
  7. 配置 master2 连接到 master1:

    • 停止现有的复制线程(如果有)。
    • 使用 CHANGE MASTER TO 命令配置 master2 连接到 master1
    • 启动 master2 的复制进程并检查状态。
  8. 检查复制状态:

    • 使用 SHOW SLAVE STATUS\G 命令检查复制线程的状态,确保 Slave_IO_RunningSlave_SQL_Running 都显示 Yes,并且没有错误信息。

希望这些简化步骤能帮助你在 Windows Server 2022 Datacenter 上顺利完成 MySQL 主主复制的配置!

相关推荐
CQU_JIAKE15 分钟前
11.5【算法】6-1 表彰优秀学生(多态)
数据库
Elastic 中国社区官方博客1 小时前
使用数据层进行数据生命周期管理
大数据·数据库·elasticsearch·搜索引擎·全文检索·时序数据库
我爱李星璇1 小时前
Spring Boot项目的创建
java·数据库·spring boot
锵锵锵锵~蒋1 小时前
实时数据开发|Flink异步IO--提升性能和吞吐量
jvm·数据库·flink·实时数据开发
小麦项目管理指南2 小时前
工程企业需要什么样的财务软件?
大数据·数据库·信息可视化·项目管理
涛思数据(TDengine)3 小时前
解密时序数据库的未来:TDengine Open Day技术沙龙精彩回顾
数据库·时序数据库·tdengine
cdut_suye3 小时前
Linux权限机制深度解读:系统安全的第一道防线
linux·运维·服务器·数据库·人工智能·系统安全·热榜
Elastic 中国社区官方博客4 小时前
使用历史索引监控 Elasticsearch 索引生命周期管理
大数据·数据库·elasticsearch·搜索引擎·全文检索·时序数据库
Lalolander8 小时前
2024信创数据库TOP30之华为Gauss DB
大数据·数据库·科技·华为·系统架构
莳花微语9 小时前
Oracle 11G DataGuard GAP 修复过程(通过主库scn增备恢复)
数据库·oracle