今天在测试环境的业务系统修改了条数据,数据库变化了,但是再次查询时候,数据却没有变化,甚至将数据库数据全部TRUNCATE了,还是可以查出数据,很奇怪。定位原因是:更新在主库,查询在从库,主从之间复制出现问题,导致修改数据不能及时展示。
解决思路方法如下:
- 先查询主从库状态:show master status,show slave status; 发现从库Slave_SQL_Running:No ,而且Last Error字段:Error \’Duplicate entry \’xxxx\’ for key on table\’.
- 然后把entry报错那行分别在主库和从库查询,发现主库不存在,但是从库存在,所以导致主从数据不同步,SQL线程不工作了,因为从库数据比主库多,所以怀疑从库可以写,于是检查从库只读状态,show variables like "%read_only%"; 发现从库只读的,因为测试环境,数据不是很重要,所以最终将Slave库比主库多的数据删除。
-
然后重新启动Slave. start slave; 等待主从同步完成,问题解决。
- 其他查询状态的SQL:
show variables like "%commit%";
show variables like "%sync%";