负载突然拔高

优化和问题 - 图1

慢查询造成磁盘 io 爆炸

  • mysql 输出大量日志
  • mysql 进行大批量写
  • 慢查询产生大量磁盘临时表

主从复制异常

主从连接不上

  1. 主从服务器之间网络是否畅通
    1. ping
  2. 是否存在防火墙,过滤了数据库端口
    1. telnet
  3. 复制链路配置的用户名和密码是否正确,是否有对应的权限

主从复制不一致

  • 前提
    1. 主从数据延迟为 0
    2. show slave status; IO_THREAD 和 SQL_THREAD 状态都为 YES
    • 但是主从中相同查询查出来的结果不一致
  • 可能

    • 对从服务器进行了写操作
      • read_only=on
      • super_read_only=on (5.7后)
    • 使用了 statement 格式的复制
      • log_format=ROW
    • 使用了 sql_slave_skip_counter 或者 注入空事务的方式修复错误

      • 大杀器,percona toolkit 的 pt_table_sync 修复数据

        pt-table-sync —execute —charset=utf8mb4 \ —database=db —table=tb \ —sync-to-master \ h=, u=, p=

主从冲突

show slave status;

  • 发现提示主键冲突
    1. 跳过故障数据
    2. 检查主从数据一致性
    3. 直接删除从库主键冲突数据 (推荐)