在 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
或者使用服务管理器:
- 打开"服务"管理控制台 (
services.msc
)。 - 找到
MySQL80
服务。 - 右键点击并选择"重新启动"。
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;
记下 File
和 Position
的值,例如:
+------------------+----------+--------------+------------------+
| 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
或者使用服务管理器:
- 打开"服务"管理控制台 (
services.msc
)。 - 找到
MySQL80
服务。 - 右键点击并选择"重新启动"。
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;
记下 File
和 Position
的值,例如:
+------------------+----------+--------------+------------------+
| 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_FILE
和 MASTER_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_FILE
和 MASTER_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 主主复制。以下是关键点总结:
-
使用
root
用户登录:- 确保你以
root
用户登录到 MySQL 服务器,以执行创建和授权用户的操作。
- 确保你以
-
编辑
my.ini
配置文件:- 设置唯一的
server-id
。 - 启用二进制日志。
- 允许其他主机连接。
- 设置自增 ID 增量和偏移量。
- 设置唯一的
-
重启 MySQL 服务:
- 保存配置文件后,重启 MySQL 服务以应用更改。
-
创建用于复制的用户:
- 使用
CREATE USER
和GRANT
命令创建并授予权限。
- 使用
-
获取二进制日志位置:
- 使用
SHOW MASTER STATUS;
获取当前的二进制日志文件名和位置。
- 使用
-
配置
master1
连接到master2
:- 停止现有的复制线程(如果有)。
- 使用
CHANGE MASTER TO
命令配置master1
连接到master2
。 - 启动
master1
的复制进程并检查状态。
-
配置
master2
连接到master1
:- 停止现有的复制线程(如果有)。
- 使用
CHANGE MASTER TO
命令配置master2
连接到master1
。 - 启动
master2
的复制进程并检查状态。
-
检查复制状态:
- 使用
SHOW SLAVE STATUS\G
命令检查复制线程的状态,确保Slave_IO_Running
和Slave_SQL_Running
都显示Yes
,并且没有错误信息。
- 使用
希望这些简化步骤能帮助你在 Windows Server 2022 Datacenter 上顺利完成 MySQL 主主复制的配置!