Mysql Slave卡在“系统锁定”中


8

我的MySQL奴隶花了很多时间在Slave_SQL_Running_State: System lock。我可以看到该系统当前处于I / O写绑定状态,并且正在处理日志,尽管速度很慢。Show processlist处于此状态时,除了“正在等待主机发送事件”和“系统锁定”外,不会显示其他任何内容。

我的所有表(系统表除外)都是InnoDB,并且禁用了外部锁定。在这种状态下,奴隶在做什么?

这是一些要求的信息:

首先,这是Amazon EC2实例上的MySQL 5.6社区,所有存储都位于EBS上。

mysql> show processlist;
+----+-------------+-----------+---------------+---------+--------+----------------------------------+------------------+
| Id | User        | Host      | db            | Command | Time   | State                            | Info             |
+----+-------------+-----------+---------------+---------+--------+----------------------------------+------------------+
|  1 | system user |           | NULL          | Connect |  26115 | Waiting for master to send event | NULL             |
|  2 | system user |           | NULL          | Connect | 402264 | System lock                      | NULL             |
| 14 | readonly    | localhost | theshadestore | Query   |      0 | init                             | show processlist |
+----+-------------+-----------+---------------+---------+--------+----------------------------------+------------------+
3 rows in set (0.00 sec)

mysql> show slave status\G
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 184.106.16.14
                  Master_User: replicant
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: bin-log.000764
          Read_Master_Log_Pos: 505452667
               Relay_Log_File: relay-log.000197
                Relay_Log_Pos: 345413863
        Relay_Master_Log_File: bin-log.000746
             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: 345413702
              Relay_Log_Space: 19834085375
              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: 402263
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: 307009
                  Master_UUID: b1bf9a19-dac0-11e2-8ffa-b8ca3a5bce90
             Master_Info_File: mysql.slave_master_info
                    SQL_Delay: 0
          SQL_Remaining_Delay: NULL
      Slave_SQL_Running_State: System lock
           Master_Retry_Count: 86400
                  Master_Bind: 
      Last_IO_Error_Timestamp: 
     Last_SQL_Error_Timestamp: 
               Master_SSL_Crl: 
           Master_SSL_Crlpath: 
           Retrieved_Gtid_Set: 
            Executed_Gtid_Set: 
                Auto_Position: 0
1 row in set (0.00 sec)

1
您的存储设备发生了什么事?如果它是本地磁盘,您会收到任何SMART警告,还是可能在降级的RAID阵列中?
nedm

请提供一些相关的条目mysqld.log时,复制在第一时间爆出后输出从下面的:mysql> SHOW SLAVE STATUS \ G; mysql>显示完整的程序清单;
alexus

这是EC2 EBS卷。dmesg中没有错误。
格雷格,

1
注意,这可能只是5.6的错误,请考虑检查另一个版本(例如5.5):forums.mysql.com/read.php?22,598354,598354
the-wabbit

1
这是系统锁定状态的定义。看起来它可能与您的系统受到I / O写限制有关。系统锁定-线程将请求或正在等待表的内部或外部系统锁定。对于SHOW PROFILE,此状态表示线程正在请求锁定(不等待它)。来自: dev.mysql.com/doc/refman/5.6/en/general-thread-states.html
jbrahy

Answers:


2

在分布式存储facepalm上运行的数据库。我将对运行在EC2 EBS存储系统之上的文件系统进行基准测试。可能最简单的方法是使用s=$(date +%s); dd if=/dev/zero of=<database-dir> bs=1M count=512; e=$(date +%s); echo "scale=4; 512 / ( $e - $s )" | bc。假定您有512 MB可用空间。现在,此基准测试的问题在于(1)它没有考虑缓存效果,并且(2)分辨率不是很好。但是,如果此测试很慢,则问题肯定出在EC2 EBS上。如果测试是快速的或名义上的,我们必须进一步挖掘并使用更复杂的技术。

bonnie ++程序在某种程度上是足够的,但它不能(AFAIK)在写入和读取之间刷新OS缓冲区。不过,您应该使用类似的方法来了解一下bonnie++ -u mysql -r 8 -s 16:512 -n 1 -b -d <mysql-data-directory>。当我在本地存储上运行的VM上执行此操作时,我得到:

Version  1.96       ------Sequential Output------ --Sequential Input- --Random-
Concurrency   1     -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine   Size:chnk K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP  /sec %CP
test        16M:512  1173  99 +++++ +++ +++++ +++  3187  99 +++++ +++ +++++ +++
Latency              1553us      23us     330us     750us     173us    6372us
Version  1.96       ------Sequential Create------ --------Random Create--------
test                -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
              files  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP
                  1  1850  20 +++++ +++ +++++ +++ +++++ +++ +++++ +++ +++++ +++
Latency             27428us      24us    1188us   30258us      36us    1107us

这是通过NFS在VM上运行时得到的结果:

Version  1.96       ------Sequential Output------ --Sequential Input- --Random-
Concurrency   1     -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine   Size:chnk K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP  /sec %CP
test        16M:512  1273  98 +++++ +++ +++++ +++  3053  99 +++++ +++ +++++ +++
Latency              1372us      28us     380us     832us      19us    9473us
Version  1.96       ------Sequential Create------ --------Random Create--------
test                -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
              files  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP
                  1   754  11 +++++ +++   728   8   751  12 +++++ +++   791   8
Latency             12695us      47us    5306us    3710us      30us    3278us

0

在这种情况下,您的从EC2实例的大小是否与主实例类似?

如果您在较小的实例上运行以节省金钱,则可能会遇到瓶颈。后面的秒是几天。复制是长时间离线还是在某种数据输入高峰期间随时间增长?


奴隶肯定慢一些。我想知道是否有办法知道从服务器正在处理什么查询,就像主服务器上的“显示进程列表”如何显示正在运行的查询一样。
格雷格2015年

1
这是日志重播。您可以在先前提供的输出中查看从属服务器和主服务器在哪里。Read_Master_Log_Pos:505452667 Relay_Log_Pos:345413863
zaznet
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.