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 主主复制的配置!

相关推荐
lifewange11 小时前
数据库索引里面的游标是什么?
数据库·oracle
PhDTool12 小时前
计算机化系统验证(CSV)的前世今生
数据库·安全·全文检索
banpu12 小时前
Spring相关
数据库·spring·sqlserver
老年DBA12 小时前
Ora2Pg 迁移Oracle至 PostgreSQL 之实战指南
数据库·postgresql·oracle
我是苏苏12 小时前
MSSQL04: SQLserver的用户权限管理
数据库
l1t12 小时前
达梦数据库和Oracle兼容性和性能比较
数据库·sql·oracle·达梦
lkbhua莱克瓦2412 小时前
基础-事务
开发语言·数据库·笔记·mysql·事务
luoluoal12 小时前
基于python的自然语言处理技术的话题文本分类的研究(源码+文档)
python·mysql·django·毕业设计·源码
weixin_4365250712 小时前
NestJS-TypeORM QueryBuilder 常用 SQL 写法
java·数据库·sql
Cosolar12 小时前
MySQL EXPLAIN 执行计划分析:能否查看 JOIN 关联顺序
数据库·后端·mysql