仅用于记录MySQL数据库运维过程所处理过的典型问题及总结


MYSQL主从库不同步问题处理

问题表现:

业务写入主库的数据,从库短时间内(>5min)查询不到;

影响范围:

测试环境数据库做了读写分离的所有业务;

如何定位:

查看测试环境主从状态,检查是否出现主从复制延时;如果出现延时,确认出现延时的原因和对应的进程执行了哪些操作,是否有报错;

解决方法:
  1. 在从库执行
    mysql> show slave status\G;
    
  2. 检查 Seconds_Behind_Master 的值是否为0,是否有报错;非0即存在主从复制延时;
  3. 参看进程:
    mysql> show processlist;
    
  4. 找到报错的进程,确认所在的库和所属的业务,找到业务的负责人,确认该操作是对应的业务引起的,通知整改并评估杀掉该数据库进程是否对业务数据的影响;
  5. 杀掉进程:
    mysql> kill + 进程id;
    
  6. 从库跳过该条报错记录:
    mysql> stop slave;set global sql_slave_skip_counter = 1;start slave;
    
  7. 确认报错是否已解除:
    mysql> show slave status\G;
    
  8. 正常情况主从复制延时会持续降低至0,如还有报错或延时下不来,重复4-6;

MySQL主从同步忽略特定库

背景:

因业务做数据建模,需要从线上同步大批量数据到测试环境数据库(超过200G),这些数据没有需要同步到从库的需求,因此需要对主从做忽略特定库;

具体实施:
  1. 检查从库 my.ini 是否有配置 replicate-wild-ignore-table 参数值;如有,需要评估修改配置后对其他业务主从的影响;
  2. 修改从库 my.ini, 添加:
    replicate-wild-ignore-table=db_ignore.%  # db_ignore 为所需要忽略的库
    
  3. 重启mysql服务
    /etc/init.d/mysql.server restart  or  service mysqld restart
    
  4. 测试是否配置成功。