公司有两个数据库服务器,使用的MySql的主从库同步功能定时同步数据。因为从库服务器搬迁,导致IP地址的更改,引起两个数据库不能同步。这时通过一下简单的几步恢复。
1,修改主库中同步账户的host属性,以允许新地址的用户可以登录。
2,使用
flush PRIVILEGES;
命令,在不重启主库的情况下使上部的配置生效。
3,从库重新启动同步服务,
start slave;
。
简单三部,主从库同步就恢复了。
查看主库和从库的状态可以使用
show master/slave status;
。也可以用
show processlist;
来查看数据库中的活跃线程。
实际肯定会有许多比这个更加复杂的情况出现。这里还需要不断补充。
补充一:
使用中发现从库的用户连接不上主机,这是因为主库中的用户没有配置访问权限所致。
grant select on your_db.* to user@your_ip identified by 'your_password'
。然后再刷新一下权限即可。
补充二:
公司物业停电检修,结果导致部署在公司内部的从服务器断点,从而造成了主从库数据不一致的情况出现。
早上来到公司执行
stop slave;start slave;
结果发现丛数据库并不能正常同步,报告主键冲突。查看《高性能Mysql官方文档》得知,这是因为从数据库在复制的过程中异常断电,没有记录正确的复制位置,然后重新启动复制后,仍然从上次开始的地方复制,导致重复插入同样的数据,造成主键冲突。
官方文档建议使用Maatkit的mk_slave_restart工具恢复从库。于是赶紧装了一个。
然后登录从库,先停止从库的同步,然后执行语句
set global sql_slave_skip_counter=1;
,然后重新启动同步。再次查看从库的状态
show slave status;
,发现已经能够正常同步数据了。搞定之。
如果set global sql_slave_skip_counter=1不起作用,可以试着将后面的数值改为2获取更大的数字试试,可能是因为重复的数据不止一条,看来只要将这些重复的数据忽略掉就好了。
补充三:
要搞定主从库同步,《高性能mysql》还是必须要有的。
很悲剧的物业再次停电检修,周一来公司一看果然数据库同步又坏了。上次仅仅是主键重复,说明同步的位置没有写入磁盘,通过“补充一”的简单几步就完成了。这次看来没有这么简单,竟然报告从库的同步日志损坏
引用
Relay log read failure: Could not parse relay log event entry. The possible reasons are: the master's binary log is corrupted (you can check this by running 'mysqlbinlog' on the binary log), the slave's relay log is corrupted (you can check this by running 'mysqlbinlog' on the relay log), a network problem, or a bug in the master's or slave's MySQL code. If you want to check the master's binary log or slave's relay log, you will be able to know their names by issuing 'SHOW SLAVE STATUS' on this slave.
果断查看高性能mysql,在主从库同步一章有这样的说明文字
引用
Relay logs corrupted on the slave
If the master’s binary logs are intact, you can use CHANGE MASTER TO to discard and
refetch the corrupt relay logs. Just point the slave at the same position from
which it’s currently replicating (Relay_Master_Log_File/Exec_Master_Log_Pos).
This will cause it to throw away any relay logs on disk.
看来已经同步的日志文件是不管用了,需要重新同步,首先
stop slave;
然后
show slave status
查看一下上次同步的日志文件名称和同步的位置
(Relay_Master_Log_File/Exec_Master_Log_Pos),然后重新使用change mater 进行同步
change master to master_host='你的主库地址',master_user='用户名',master_password='密码',master_log_file='上一步查询到的日志文件名称',master_pos=上步查到的同步的当前位置
,然后重新启动从库的同步
start slave;
,再次查看从库的同步状态,一切OK!
附件中是英文版的《高性能MySql》,有需要的同学自取。
分享到:
相关推荐
mysql主从,主库宕机,从库一键提升为主库shell脚本。
MYSQL主从数据库介绍__主库__从库.pdfMYSQL主从数据库介绍__主库__从库.pdfMYSQL主从数据库介绍__主库__从库.pdfMYSQL主从数据库介绍__主库__从库.pdfMYSQL主从数据库介绍__主库__从库.pdfMYSQL主从数据库介绍__主库...
MYSQL主从数据库介绍__主库__从库.docxMYSQL主从数据库介绍__主库__从库.docxMYSQL主从数据库介绍__主库__从库.docxMYSQL主从数据库介绍__主库__从库.docxMYSQL主从数据库介绍__主库__从库.docxMYSQL主从数据库介绍_...
最新的IP地址库,MYSQL5版,有GBK和UTF8两个库。
mysql主从库配置,mysql安装和环境变量设置以及主从库配置
LNH_MySQL 08-不停主库一键批量配置MySQL主从复制方案.mp4
两个mysql数据库之间实现同步,通过定时任务实现从主库到从库的同步,java代码实现,所有java项目包括配置都有,数据结构可以跟据自己的特定情况去改
主要介绍了mysql设置指定ip远程访问连接的方法,分别实例讲述了从任意主机和指定ip访问远程MySQL数据库的方法,代码简单功能实用,需要的朋友可以参考下
MySQL详解主从(主库升级).pdf
从MySQL获取ip,是一套非常适用的命令组成
MySQL单主库多继承从库数据备份测试,请阅读文章:https://blog.csdn.net/boonya/article/details/89714245
最新Mysql版的IP库,最后更新时间2009-12-25
tel&ip.sql文件,Mysql版本的IP地址库和手机归属地址库,使用时直接导入sql文件即可!
介绍了三种查看连接MYSQL数据库的IP信息方法,方法简单实用,需要的朋友可以参考下
mysql版的IP地址库 sql文件 保存的不是准确的ip地址 而是IP段 比如101.000.000.123~101.000.000.155 代表北京通州。。。。。各地区IP端都有保存
ip地址库mysql完整版,地址446660个
MySQL主从复制-主库已有数据的解决方案.docx
mysql查询判断是否为ip地址
Mycat高可用以及mycat实现mysql高可用以及mycat的mysql主从配置,负载均衡,读写分离,以及如何验证查询sql具体执行在主库还是从库上
在linux系统中一块网卡上配置多个ip