ITPub博客

首页 > 数据库 > MySQL > 【新炬网络名师大讲堂】MySQL复制与监控系列文章(3)——二进制文件简介

【新炬网络名师大讲堂】MySQL复制与监控系列文章(3)——二进制文件简介

原创 MySQL 作者:shsnchyw 时间:2014-12-01 14:49:21 0 删除 编辑
新炬网络定期推出“名师大讲堂”专业IT技术知识分享,内容涉及Oracle数据库、性能测试、软件自动化测试等,与工作在技术前线的小伙伴们一起探讨实践中出现的技术难题,提供有效解决方案,大家通过交流共同成长

重点

1、复制过程需要二进制日志(binlog),它记录了数据库上的所有改变


2、Slave是通过日志来获取Master上的改变的
3、二进制日志只记录数据库的改动,所以对那些不改动数据的语句则不会写入二进制日志
4、通过show binlog events;查询二进制日志中记录的事件

Log_Name:用来存储事件的文件名,一个事件不会同时存储在两份文件中
Pos:事件在文件中开始的位置
Event_type:事件的类型
Server_id:创建时间的服务器id
End_log_pos:存储事件在文件中的结束位置
Info:事件信息的可读文本
5、查询指定的二进制日志事件:show binlog  events in ‘master-bin.000001′
6、重置二进制日志及二进制日志文件索引
Master:
    reset master;
Slave:
    stop slave;
    reset slave;

思考

最先碰到的一个问题是show binlog  events的时候死活查不到一些的日志事件,后来发现这玩意做了日志的写入的轮换,写着写着就会换到另外一份日志文件里面去了,而且我直接打show binlog events的话他也不会把轮换的日志给显示出来。要自己指定一下才显示,不带这样玩的。。。。

其次在断开reset了主从服务器之后又踩了一个坑。。又死活连不上了。服务器先是报了个Error(具体什么的忘记了),百度之后把Master和Slave的日志都干掉。再来,又报错了(你就不能给我顺利点么-.-)。。。这回是Access Denied,忽然想起,reset了之后,Slave是不是要重新指定一下master呢。重新指定之后又来报错了。。。这回是有一条SQL过不去,说是没指定列名。汗。。。又重置了一回Master和Slave,这回好了。
鉴于不知道还会踩上什么坑,以下收集了一些常见的主从配置错误,方便查找

一般的异常

slave stop;
SET GLOBAL sql_slave_skip_counter = 1;
slave start;

断电导致主从不能同步

通主库的最后一个bin-log日志进行恢复,
在主库服务器上,找到二进制日志最后一个postion值
然后在从库上,change host to 相应正确的值
slave stop;
change master to master_host=’ip’, master_user=’username’, master_password=’password’, master_log_file=’mysql-bin.xxxx’, master_log_pos=xxxx;
slave start;
show slave status;

主键冲突

可以在mysql主配置文件指定略过此类异常并继续下条sql同步,这样也可以避免很多主从同步的异常中断
[mysqld]
slave-skip-errors = 1062,1032,1060

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/29960155/viewspace-1352798/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2014-10-16

  • 博文量
    147
  • 访问量
    268239