新炬网络定期推出“名师大讲堂”专业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/
,如需转载,请注明出处,否则将追究法律责任。