window 部署主从mysql
一、常见问题
1、Slave_IO_Running 为Connecting
主要原因:从库配置主库的信息不对,比如端口
STOP SLAVE; -- 先停止 Slave 服务(如果是新配置可跳过) CHANGE MASTER TO MASTER_HOST='127.0.0.1', -- 主库服务器 IP 或主机名(本地可用 127.0.0.1) MASTER_USER='slave_user', -- 主库创建的复制账号 MASTER_PASSWORD='admin123', -- 复制账号的密码 MASTER_PORT=3306, -- 主库 MySQL 端口 MASTER_LOG_FILE='mysql-bin.000005', -- 前面主库 SHOW MASTER STATUS 看到的 File MASTER_LOG_POS=154; -- 前面主库 SHOW MASTER STATUS 看到的 Position START SLAVE; -- 启动 Slave 服务 SHOW SLAVE STATUS; -- 查看 Slave 状态(\G 使输出更易读)
2、配置之后从库不同步,且从库中通过命令SHOW SLAVE STATUS;发现Last_IO_Error 和 Last_SQL_Error 显示错误信息
Fatal error: The slave I/O thread stops because master and slave have equal MySQL server UUIDs; these UUIDs must be different for replication to work.
主要原因:主从Server UUID冲突错误,把data目录下的auto.cnf删除,并重启mysql即可
部署步骤
1、主库配置
[mysqld] server-id = 1 # 设置服务器唯一ID,主从不能相同,主库通常设为1 log-bin = mysql-bin # 开启二进制日志,指定日志文件前缀 binlog-do-db = your_database_name # 指定要同步的数据库(可选,不设置则同步所有库) binlog-ignore-db = mysql # 指定不同步的系统库(可选) binlog-ignore-db = information_schema binlog-ignore-db = performance_schema # 如果使用 MySQL 8.0,可能还需要设置:cite[5] binlog-format = ROW
1.1、创建复制账号
重启主库 MySQL 服务后,登录 MySQL 命令行,创建一个专门用于主从复制的用户并授权:
mysql> CREATE USER 'slave_user'@'%' IDENTIFIED BY 'your_password'; -- 创建用户 mysql> GRANT REPLICATION SLAVE ON *.* TO 'slave_user'@'%'; -- 授予复制权限 mysql> FLUSH PRIVILEGES; -- 刷新权限
1.2、查看主库状态
记下 File (如 mysql-bin.000001) 和 Position (如 154) 的值
mysql> CREATE USER 'slave_user'@'%' IDENTIFIED BY 'your_password'; -- 创建用户 mysql> GRANT REPLICATION SLAVE ON *.* TO 'slave_user'@'%'; -- 授予复制权限 mysql> FLUSH PRIVILEGES; -- 刷新权限
2、从库配置
2.1修改配置文件
[mysqld] server-id = 2 # 设置从库的唯一ID,必须与主库不同 relay-log = relay-log-bin # 中继日志名称(可选,默认通常有效) replicate-do-db = your_database_name # 指定要复制的数据库(需与主库设置同步) # 如果主库使用了 binlog-ignore-db,从库也可对应设置 replicate-ignore-db
2.2 配置主库连接信息
重启从库 MySQL 服务后,登录从库 MySQL 命令行,执行 CHANGE MASTER TO 命令配置主库连接(请替换为你自己的参数):
mysql> STOP SLAVE; -- 先停止 Slave 服务(如果是新配置可跳过) mysql> CHANGE MASTER TO -> MASTER_HOST='192.168.1.100', -- 主库服务器 IP 或主机名(本地可用 127.0.0.1) -> MASTER_USER='slave_user', -- 主库创建的复制账号 -> MASTER_PASSWORD='your_password', -- 复制账号的密码 -> MASTER_PORT=3306, -- 主库 MySQL 端口 -> MASTER_LOG_FILE='mysql-bin.000001', -- 前面主库 SHOW MASTER STATUS 看到的 File -> MASTER_LOG_POS=154; -- 前面主库 SHOW MASTER STATUS 看到的 Position
2.3 启动并检查复制状态
mysql> START SLAVE; -- 启动 Slave 服务 mysql> SHOW SLAVE STATUS \G; -- 查看 Slave 状态(\G 使输出更易读)
2.4 配置成功标识
关键检查点:在 SHOW SLAVE STATUS 的输出中,确保以下两个字段值为 Yes:
-
Slave_IO_Running: Yes -
Slave_SQL_Running: Yes
如果其中任一为 No,或者看到 Last_IO_Error/Last_SQL_Error,请根据错误提示排查问题

浙公网安备 33010602011771号