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

发布于:2024-12-06 ⋅ 阅读:(95) ⋅ 点赞:(0)

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

1. 使用 root 用户登录

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

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

[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 或命令提示符:

net stop mysql80
net start mysql80

或者使用服务管理器:

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

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

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

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

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

[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 或命令提示符:

net stop mysql80
net start mysql80

或者使用服务管理器:

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

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

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

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

SHOW MASTER STATUS;

记下 FilePosition 的值,例如:

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

4. 配置 master1 连接到 master2

4.1 停止复制线程

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

STOP SLAVE;
RESET SLAVE ALL;
4.2 配置 master1 连接到 master2

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

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 停止复制线程

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

STOP SLAVE;
RESET SLAVE ALL;
5.2 配置 master2 连接到 master1

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

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 上检查:
SHOW SLAVE STATUS\G

关注以下字段:

  • Slave_IO_Running: 应该显示 Yes
  • Slave_SQL_Running: 应该显示 Yes
  • Last_IO_Error: 应该为空
  • Last_SQL_Error: 应该为空
master2 上检查:
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 主主复制的配置!


网站公告

今日签到

点亮在社区的每一天
去签到