mysql 配置主从复制 及 Slave_SQL_Running = no问题排查

本文详细介绍了如何配置MySQL主数据库,包括设置server-id、启用二进制日志,以及为复制用户分配权限。同时,指导如何在从库中设置复制相关参数,检查并解决主从同步过程中可能遇到的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、配置主数据库
1、在mysql 配置文件my.cnf中设置主数据库配置

server-id=1 //唯一的标示符
log-bin=mysql-bin //开启二进制日志

2、重启数据库
3、安全规范的写法是新建一个用户给这个用户复制的权限(直接用root也可以不建议)

CREATE USER 'repl'@'%' IDENTIFIED BY 'password'; //repl用户名 //%代表可以链接的地址%表示任何IP都可以访问 可以把%替换为具体的ip password表示用户名
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';  # 授权复制权限

二、在从库中设置(my.cnf)
1、

server-id=2 //唯一的标示符
replicate-do-db = sys //需要同步的库

2、重启数据库
3、设置主库的连接信息

CHANGE MASTER TO
  MASTER_HOST='', //主库ip
  MASTER_USER='', //账号  
  MASTER_PASSWORD='', //密码
  MASTER_PORT=3306; //端口

4、重启数据库

三、检查主从状态
在从库上执行SHOW SLAVE STATUS 命令,查看复制状态。
Slave_IO_Running和Slave_SQL_Running都为Yes,表示复制进程正常运行。

==============================>问题排查
重新连接主从后
stop slave 关闭主从
START SLAVE; 开启主从
SHOW SLAVE STATUS; 显示状态

如果Slave_SQL_Running为no

一、去主库执行

show master status ; //记住Position
FLUSH PRIVILEGES; //刷新权限
再次执行记住Position
show master status ; //记住Position

二、去从库执行

stop slave;  //关闭主从
CHANGE MASTER to  
MASTER_HOST = '',
MASTER_USER = '',
MASTER_PASSWORD = '',
MASTER_PORT = 3306,
MASTER_LOG_POS = 3095; //上面主库的Position
START SLAVE;  //开启主从
### MySQL主从复制Slave_SQL_Running: No解决方案 当遇到MySQL主从复制中`Slave_SQL_Running: No`的情况时,通常意味着从库无法正常应用来自主库的二进制日志事件。以下是详细的排查和解决方法: #### 1. 停止从库同步 首先需要停止从库的同步操作以便进行调整: ```sql STOP SLAVE; ``` #### 2. 查看主库的状态 在主库上执行以下命令以获取当前二进制日志文件名及其位置: ```sql SHOW MASTER STATUS; ``` 这一步的结果非常重要,后续配置从库时需要用到这些参数。 #### 3. 配置从库连接到主库 根据主库返回的信息,在从库中重新设置主库的相关信息。假设主库IP地址为`192.168.2.177`,用户名为`slave`,密码为`123456`,日志文件名为`binlog.000071`,日志位置为`1672`,则可以执行以下语句[^3]: ```sql CHANGE MASTER TO MASTER_HOST='192.168.2.177', MASTER_USER='slave', MASTER_PASSWORD='123456', MASTER_LOG_FILE='binlog.000071', MASTER_LOG_POS=1672; ``` #### 4. 启动从库并检查状态 启动从库的同步功能,并验证其运行状态: ```sql START SLAVE; SHOW SLAVE STATUS\G; ``` 重点观察以下几个字段: - `Slave_IO_Running`: 表示I/O线程是否正在运行。 - `Slave_SQL_Running`: 表示SQL线程是否正在运行。 如果这两个值均为`Yes`,说明问题已解决;否则继续下一步。 #### 5. 跳过错误 如果发现存在某些不可恢复的错误导致SQL线程中断,则可以通过跳过指定数量的错误来解决问题。例如,跳过一条错误记录: ```sql SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; START SLAVE; ``` 此操作会忽略最近的一个错误并尝试重新开始同步过程[^4]。 #### 6. 排查其他可能原因 除了上述常见情况外,还需注意以下潜在因素可能导致`Slave_SQL_Running: No`: - **克隆虚拟机引起的UID冲突**: 若是从同一台机器克隆而来,可能存在重复的Server ID等问题[^2]。确保每台服务器都有唯一的server-id值。 - **网络连通性问题**: 检查从库能否访问主库以及相应的端口是否开放。 - **权限不足**: 确认用于复制的账户具有足够的权限。 通过以上步骤应该能够有效定位并修复大部分关于MySQL主从复制中的`Slave_SQL_Running: No`现象。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值