本文共 2392 字,大约阅读时间需要 7 分钟。
SHOW MASTER LOGS;
查看主库当前有哪些二级制日志,其logname是其他命令的入参, file_size是偏移量也是入参。假设我们知道日志的偏移量(来源于上面的命令)使用:
SHOW BINLOG EVENTS IN ‘mysql-bin.0000023’ FROM 13634; 能查看最后执行的sql语句。SHOW SLAVE STATUS命令,但是会有问题:
pt-table-checksum检查主备是否一致的工具
移除备库,重新同步一个出来
使用mysqldump命令。 这个命令需要锁住表之后再操作 pt-table-sync工具计划内
计划外
这种会面临,主库数据丢失, 不同步。 备库间也不同步主库意外宕机
如果没有设置sync_binlog,那么有一定的可能崩溃前几个二进制日志没有刷进磁盘。 重启之后备库线程再次连上来。主库会告诉他偏移量不存在。 解决方式是,让备库从下一个二进制日志的开头读,然后用工具查看主备一致性。 或者开启sync_binlog避免丢失,但是会带来性能损失 。。。 还有很多,具体的不赘述了要保证主库重启前,运行了STOP SLAVE否则有可能数据不一致。
主要是基于语句的复制,这个开发的时候就要注意。考虑到有可能产生这种现象的原因。
INSERT… SELECT操作会引起读锁,会使串行化。
可以拆分成小命令 使用SELECT INTO OUTFILE,, LOAD DATA INFILE代替INSERT..SELECT.更快,不加锁。注意,应用设计上要允许出现延迟
延迟一般都是突然出现的很不好监测可以用些手段来提升备库的性能:
如果主备的 max_allowed_packet 不匹配,有可能主库传来过大的包。 可能造成报错或者日志损坏等等。
可以通过开启备库的 slave_compressed_protocol选项,来让传输时对数据进行压缩及解压。
测试:
INSERT INTO lag_test(now_usec) VALUES (NOW_USEC())//要保证主从库时间同步// 注意库必须是varchar列,因为时间列的精确度可能是到秒
然后使用TIMESTAMPDIFF方法来查询时间差异
可以插入1000比输入,然后根据数量级进行分组,或者求下平均值。看下一般的延迟是多久 一般情况下都是在0.几毫秒以内Percona Toolkit和Percona Xtrabackup都提供了基于复制或者帮助复制的功能
Tungsten Java的开源中间件复制产品。提供了自动数据分片,并发执行,数据复制,款平台复制,多源复制等功能。 他很实用,一些优点: - 内建一致性检查 - 插件特性 - 全局事务ID,不用再去匹配日致命和偏移量了 - 能快速的将备库提升为主库 - 异构复制 比如Mysql到PostgreSQL - 不同版本之间 - 并行 缺点则是要学习,更复杂,效率稍低。总结一下:
转载地址:http://yopvo.baihongyu.com/