mysql sql running no_mysql 主从数据不一致,提示: Slave_SQL_Running: No 的解决方法

本文介绍了MySQL主从数据不一致的问题及两种解决方案:忽略错误继续同步与重新配置主从同步,确保数据一致性。

本文实例讲述了mysql 主从数据不一致,提示: Slave_SQL_Running No 的解决方法。分享给大家供大家参考,具体如下:

在slave服务器上通过如下命令

mysql> show slave status\G;

显示如下情况:

Slave_IO_Running: Yes

Slave_SQL_Running: No

表示slave不同步

解决方法一(忽略错误,继续同步):

1、先停掉slave

mysql> stop slave;

2、跳过错误步数,后面步数可变

mysql> set global sql_slave_skip_counter=1;

3、再启动slave

mysql> start slave;

4、查看同步状态

mysql> show slave status\G;

解决方法二(重新做主从,完全同步):

1、先进入主库进行锁表,注意窗口不要关闭

mysql> flush table with read lock;

2、把数据进行备份

> mysqldump -uroot -p --opt -R 数据库 > /data/bak.sql

3、再新开个窗口,查看主数据库信息

mysql> show master status;

+------------------+----------+--------------+------------------+-------------------+

| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |

+------------------+----------+--------------+------------------+-------------------+

| mysql-bin.000005 | 1158 | | | |

+------------------+----------+--------------+------------------+-------------------+

4、在从库上停止slave

mysql> stop slave;

5、导入备份的数据文件

mysql> source /data/bak.sql

6、重置同步

mysql> reset slave;

7、重新设置同步节点

mysql> CHANGE MASTER TO

MASTER_HOST='192.168.137.233',

MASTER_PORT=3306,

MASTER_USER='sync',

MASTER_PASSWORD='123456',

MASTER_LOG_FILE='mysql-bin.000005',

MASTER_LOG_POS=1158;

host,port,user,password请根据你的主库设置相应修改,log_file和log_pos根据主库中master status相应修改。

8、开启slave

mysql> start slave;

9、查看slave状态

mysql> show slave status\G;

显示如下信息则表示正常

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

10、对主数据库解锁

mysql> unlock tables;

11、再次在主库中添加或修改数据,看从库数据是否同步。

希望本文所述对大家MySQL数据库计有所帮助。

### 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、付费专栏及课程。

余额充值