原因
主从数据库不同步一般是因为在主节点上做的一个操作在从节点上执行失败。
例如有一个表中有一个自增的主键primary_key, 在主从集群处于同步状态时,最大的primary_key是1000,现在在从节点上对这个表做一个插入操作A,那么从节点上最新的primary_key是1001,然后在主节点上做一个插入操作,那么主节点上的最新primary_key是1001。同步时,主节点上的操作会被复制到从节点上,但是从节点上已经有1001,那么插入操作失败了,从节点就没法继续和主节点保持一致了。
其他一些可能的操作:alter table table1…., 但是从节点上没有table1,那么这个操作无法同步到从节点上
如何判断数据库不同步
如果只有一个从节点,那么现象就是在主节点上做的写操作没有办法读出来,如果是多个从节点,那么当有某个节点不同步时,会出现客户端一会儿拿到的数据是正确的,一会是错误的(这个的前提是客户端是从从节点做读操作,并且开了负载均衡;如果是从主节点读,那么客户端是感觉不到的)。也可以按照以下步骤:
* 登录节点
mysql -u<user> -p<password>
* 查看从节点同步信息
show slave status\G;
如果Slave_SQL_Running_State
不是Slave has read all relay log; waiting for the slave I/O thread to update it
, 而是一条错误信息,那么这个时候数据