mysql主从同步异常原因及恢复syncnavigator

mysql数据库做主从复制,不仅可以为数据库的数据做实时备份,保证数据的完整性,还能做为读写分离,提升数据库的整体性能。但是,mysql主从复制经常会因为某些原因使主从数据同步出现异常。因此,下面介绍的是mysql主从同步异常的原因及恢复的方法。




这个问题是在部署主从复制的时候,可能会遇到的


回到顶部

Last_IO_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


回到顶部

当mysql做了主从时,每个mysql都会有个uuid 作为唯一标识的。上面是由于主从复制的mysql数据库了相同的UUID,所以,只需要修改auto.cnf配置文件即可。


回到顶部

<1>查找auto.cnf文件的位置(位置一般为:/var/lib/mysql/auto.cnf)

find / -iname auto.cnf


<2>将文件中的uuid修改为不同数值。




这个问题也是在部署主从复制的时候,可能会遇到的


回到顶部

Last_IO_Error: Fatal error: The slave I/O thread stops because master and slave have equal MySQL server ids; these ids must be different for replication to work (or the –replicate-same-server-id option must be used on slave but this does not always make sense; please check the manual before using it).


回到顶部

在mysql的主从配置中,每台mysql数据库的my.cnf中的server-id 必须是唯一,但是有的时候可能因为粗心而配成了相同的数值,也有可能mysql没有加载到my.cnf 文件中的server-id。


回到顶部

<1>找到mysql的配置文件my.cnf(默认位置为:/etc/my.cnf)

find / -name my.cnf


<2>修改从服务器的my.cnf配置文件中的server-id(注意要改为与主服务器不同的)


<3>在从服务器的数据库中直接添加server_id(此server_id数值与my.cnf中的一致)

mysql> set global server_id=2; 
mysql> start slave;




重点问题

这个问题常见于运维mysql数据库主从的过程中,一般都是由于数据库的误操作引起的,也有可能是数据库服务器因某些原因宕机或重启引起的。

数据库备份一定要定期进行,确保数据万无一失 .


回到顶部

Last_IO_Error: Got fatal error 1236 from master when reading data from binary log: ‘binlog truncated in the middle of event; consider out of disk space on master; the first event ‘mysql-bin.001989’ at 9179, the last event read from ‘https://www.cnblogs.com/HKROnline-SyncNavigator/p/mysql-bin.001989’ at 9179, the last byte read from ‘https://www.cnblogs.com/HKROnline-SyncNavigator/p/mysql-bin.001989’ at 9179.’


回到顶部

由报错可看出是由于从库的二进制文件位置与主库的不一致导致的


回到顶部

<1>查看主库的二进制文件的位置

mysql -uroot -p’…..’ 进入数据库

show master status; 查看主库

重点关注: 
File 与 Position


<2>查看从库的状态

show slave status\G ;

重点关注下列两个的状态[yes/no]: 
Slave_IO_Running 
Slave_SQL_Running


<3>解决方法一:

忽略错误后,继续同步 
(适用于主库与从库数据相差不大;要求数据可以不完全统一,数据要求不严格的情况)

{1}进入从库操作: 
mysql -uroot -p‘…’


{2}停止从库同步 
stop slave;


{3}跳过1步错误(后面的数字可更改) 
set global sql_slave_skip_counter=1;


{4}开启从库 
start slave;


{5}查看从库状态 
show slave status\G;

Slave_IO_Running: Yes 
Slave_SQL_Running: Yes 
即为正常


<4>解决方法二

重新做主从,完全同步 
(适用于主库从库的数据相差较大;要求数据完全统一的情况 )

{1}先进入主库,进行锁表,此处锁定为只读状态,防止数据写入 (可选,因如有数据库备份,可直接利用备份) 
flush tables with read lock;


{2}进行数据备份,把数据备份为.sql的文件(可选,因如有数据库备份,可直接利用备份)

mysqldump -uroot -p‘密码’ –all-databases > mysql.back.sql


{3}进入主库,进行解锁(可选,因如有数据库备份,可直接利用备份)

unlock tables;


{4}把mysql的备份文件传输到从库服务器上(位置任意,但要能找到)

scp -r /root/mysql.bask.sql [email protected]:/tmp/


{5}进入从库,停止从库的状态

stop slave;

清除slave上的同步位置,删除所有旧的同步日志,使用新的日志重新开始.(使用前先停止slave服务)

reset slave;(可选)


{6}在从库中导入数据备份

source /tmp/mysql.back.sql ;

mysql -uroot -p‘….’ database -f < /tmp/mysql.bask.sql 
(-f 为跳过错误的Sql,继续往下执行,可不加)


{7}设置从库同步

change master to master_host=‘主库的IP’, master_user=‘设置主从时设定的主库的用户’, master_port=主库的端口, master_password=’主库设定的密码’, master_log_file=‘mysqld-bin.001989’, master_log_pos=24110520;

注意: 
master_log_file与master_log_pos 是主库show master status信息里的| File与Position


{8}重新开启从库同步 
start slave;


{9}查看同步状态 
mysql> show slave status\G 查看: 
Slave_IO_Running: Yes 
Slave_SQL_Running: Yes

原文地址:https://www.cnblogs.com/sqlserver-my/p/11013827.html

时间: 2024-10-29 19:08:08

mysql主从同步异常原因及恢复syncnavigator的相关文章

mysql主从同步延迟原因及解决方法

MySQL主从延迟原因以及解决方案:谈到MySQL数据库主从同步延迟原理,得从mysql的数据库主从复制原理说起,mysql的主从复制都是单线程的操作(mysql5.6版本之前),主库对所有DDL和DML产生binlog,binlog是顺序写,所以效率很高. slave的Slave_IO_Running线程会到主库取日志,效率会比较高,slave的Slave_SQL_Running线程将主库的DDL和DML操作都在slave实施.DML和DDL的IO操作是随机的,不是顺序的,因此成本会很高,还可

MySQL主从同步延迟原因及解决办法

MySQL主从延迟原因以及解决方案:谈到MySQL数据库主从同步延迟原理,得从mysql的数据库主从复制原理说起,mysql的主从复制都是单线程的操作(mysql5.6版本之前),主库对所有DDL和DML产生binlog,binlog是顺序写,所以效率很高. slave的Slave_IO_Running线程会到主库取日志,效率会比较高,slave的Slave_SQL_Running线程将主库的DDL和DML操作都在slave实施.DML和DDL的IO操作是随机的,不是顺序的,因此成本会很高,还可

mysql主从同步异常

查看主从状态 主服务器 mysql> show master status; +------------------+-----------+--------------+------------------+-------------------+ | File ? ? ? ? ? ? | Position ?| Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set | +------------------+-----------+-----

《Mycat学习笔记》 第三篇. MySql 主从同步异常后,主从切换

1)系统环境说明 MySql 5.5 主从节点 127.0.0.1:3306   主结点,为验证主从切换效果,手动停止服务 127.0.0.1: 3307    从结点 1 127.0.0.1:338     从结点 2 ,为验证主从切换效果,在主结点停止后,新增两个记录. MyCat 1.5 schema.xml 配置 具体配置说明,参考上篇: <Mycat学习笔记> 第二篇. MySql 读写分离与日志分析——主从多结点 <dataHost name="localhost1

监控mysql主从同步状态是否异常,如果异常,则发生短信或邮寄给管理员

阶段1:开发一个守护进程脚本每30秒实现检测一次. 阶段2:如果同步出现如下错误号(1158,1159,1008,1007,1062),请跳过错误 阶段3:请使用数组技术实现上述脚本(获取主从判断及错误号部分) [[email protected] ~]# mysql -u root -proot -e "show slave status\G;" *************************** 1. row ***************************       

监控MySQL主从同步是否异常并报警企业案例模拟

企业面试题1:(生产实战案例):监控MySQL主从同步是否异常,如果异常,则发送短信或者邮件给管理员.提示:如果没主从同步环境,可以用下面文本放到文件里读取来模拟:阶段1:开发一个守护进程脚本每30秒实现检测一次.阶段2:如果同步出现如下错误号(1158,1159,1008,1007,1062),则跳过错误.阶段3:请使用数组技术实现上述脚本(获取主从判断及错误号部分) 此题来自:http://oldboy.blog.51cto.com/2561410/1632876 解答参考1: #!/bin

关于SQLyog操作Mysql双主、主从同步异常问题

本人遇到的问题发生在mysql 5.6.21 M-M中: Master1 Server version: 5.6.21-enterprise-commercial-advanced-log MySQL Enterprise Server - Advanced Edition (Commercial) Master2 Server version: 5.6.21-enterprise-commercial-advanced-log MySQL Enterprise Server - Advance

mysql 主从同步详细配置教程

8.10 Mysql 主从同步 8.10.1 主从原理mysql主从同步的原理:1.在master上开启bin-log日志,用于记录master上的更改删的一些记录.2.主从各开启io线程,从上开启io线程和sql线程.同时都配置好主从上的serveid唯一性3.主上配置好授权用户,从上设置change master授权连接的命令3. 从上io线程通过授权连接master,master通过io线程检查到slav的请求的日志.postsion点位置.4.master将这些相应的请求内容发送给sla

mysql主从同步(4)-同步延迟状态考量(seconds_behind_master和pt-heartbea)

一般情况下,我们是通过"show slave status \G;"提供的Seconds_Behind_Master值来衡量mysql主从同步的延迟情况.具体说明见:mysql主从同步(4)-Slave延迟状态监控,这种方法在大多数情况下确实是可行的.但是经验告诉我,仅仅依靠Seconds_Behind_Master的值来监测主从同步数据是否延迟是绝对不可靠的!!! 曾经遇到过的一个坑:Mysql主从环境部署后,刚开始主从数据同步是没问题的,也是通过监控Seconds_Behind_M