MySQL 复制滞后增加

MySQL 复制滞后增加

我有简单的主从复制设置。一年多来,一切都运行良好,没有出现任何问题。

几天前,复制滞后开始增加,并且仍然在增加,但没有明显原因。

Seconds_Behind_Master 现已超过 4 天 6 小时。

SQL和IO从属线程都在工作,通信没有问题。

SHOW SLAVE STATUS\G
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: s1.my.pl
                  Master_User: root
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.001674
          Read_Master_Log_Pos: 10948252
               Relay_Log_File: mysqld-relay-bin.000509
                Relay_Log_Pos: 63370742
        Relay_Master_Log_File: mysql-bin.001638
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
              Replicate_Do_DB:
          Replicate_Ignore_DB:
           Replicate_Do_Table:
       Replicate_Ignore_Table:
      Replicate_Wild_Do_Table:
  Replicate_Wild_Ignore_Table:
                   Last_Errno: 0
                   Last_Error:
                 Skip_Counter: 0
          Exec_Master_Log_Pos: 63370596
              Relay_Log_Space: 3523067396
              Until_Condition: None
               Until_Log_File:
                Until_Log_Pos: 0
           Master_SSL_Allowed: No
           Master_SSL_CA_File:
           Master_SSL_CA_Path:
              Master_SSL_Cert:
            Master_SSL_Cipher:
               Master_SSL_Key:
        Seconds_Behind_Master: 371329
Master_SSL_Verify_Server_Cert: No
                Last_IO_Errno: 0
                Last_IO_Error:
               Last_SQL_Errno: 0
               Last_SQL_Error:
  Replicate_Ignore_Server_Ids:
             Master_Server_Id: 1
1 row in set (0.00 sec)

显示完整进程列表在一行中产生奇怪的输出“exit mysqld_lock_tables()”,我不确定它是什么意思

 SHOW FULL PROCESSLIST;
+-----+-------------+-----------+------+---------+--------+----------------------------------+-----------------------+-----------+---------------+-----------+
| Id  | User        | Host      | db   | Command | Time   | State                            | Info                  | Rows_sent | Rows_examined | Rows_read |
+-----+-------------+-----------+------+---------+--------+----------------------------------+-----------------------+-----------+---------------+-----------+
| 808 | system user |           | NULL | Connect |    892 | Waiting for master to send event | NULL                  |         0 |             0 |         1 |
| 809 | system user |           | NULL | Connect | 371477 | exit mysqld_lock_tables()        | NULL                  |         0 |             0 |         1 |
| 810 | root        | localhost | NULL | Query   |      0 | NULL                             | SHOW FULL PROCESSLIST |         0 |             0 |       401 |
+-----+-------------+-----------+------+---------+--------+----------------------------------+-----------------------+-----------+---------------+-----------+

SHOW_OPEN_TABLES 命令显示没有表被锁定

有什么提示我可以做什么来解决这个问题或者如何获得更详细的诊断?

答案1

MySQL 复制的一个问题是从服务器中 I/O 的序列化。虽然主服务器一次执行多个 I/O 任务,但它们会被写入单个中继日志,然后由从服务器执行,从而序列化 I/O。因此,从服务器的 I/O 吞吐量应始终高于主服务器。

要查看是否确实存在 I/O 问题,请安装io提示主页)。

就你的情况而言,可能存在另一个问题,你可能遇到了错误。你试过吗

stop slave;
start slave;

看看是否能解决问题?下一步尝试停止并启动 MySQL 从属进程。

相关内容