Mon esclave MySQL y passe beaucoup de temps Slave_SQL_Running_State: System lock
. Je peux voir que le système est actuellement lié en écriture aux E / S et qu'il traite le journal, bien que lentement. Show processlist
n'affiche rien d'autre que "Attendre que le maître envoie l'événement" et "Verrouillage système" lorsqu'il est dans cet état.
Toutes mes tables (autres que les tables système) sont InnoDB et le verrouillage externe est désactivé. Que fait l'esclave dans cet état?
Voici quelques informations qui ont été demandées:
Tout d'abord, il s'agit de la communauté MySQL 5.6 sur une instance Amazon EC2, avec tout le stockage sur 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)
mysql
master-slave
Greg
la source
la source
mysqld.log
moment où la réplication s'est interrompue pour la première fois ET publier la sortie des éléments suivants: mysql> SHOW SLAVE STATUS \ G; mysql> SHOW FULL PROCESSLIST;Réponses:
Bases de données fonctionnant sur facepalm de stockage distribué . Je comparerais le système de fichiers fonctionnant au-dessus du système de stockage EC2 EBS. La méthode la plus simple est probablement d'utiliser quelque chose comme
s=$(date +%s); dd if=/dev/zero of=<database-dir> bs=1M count=512; e=$(date +%s); echo "scale=4; 512 / ( $e - $s )" | bc
. Cela suppose que vous disposez de 512 Mo de rechange. Maintenant, le problème avec cette analyse comparative est que (1) elle ne prend pas en compte les effets de mise en cache et (2) la résolution n'est pas très fine. Mais si ce test est lent, le problème est définitivement avec EC2 EBS. Si le test est rapide ou nominal, nous devons creuser davantage et utiliser des techniques plus sophistiquées.Le programme bonnie ++ est quelque peu adéquat, mais il (AFAIK) ne vide pas les tampons du système d'exploitation entre l'écriture et la lecture. Pourtant, vous devriez avoir une idée avec quelque chose comme
bonnie++ -u mysql -r 8 -s 16:512 -n 1 -b -d <mysql-data-directory>
. Lorsque je fais cela sur une machine virtuelle exécutée sur le stockage local, j'obtiens:Voici ce que j'obtiens lors de l'exécution sur une machine virtuelle sur NFS:
la source
Votre instance EC2 esclave a-t-elle une taille similaire à celle du maître dans ce cas?
Si vous utilisez une instance plus petite pour économiser de l'argent, vous risquez de vous heurter à un goulot d'étranglement. Le retard est de plusieurs jours. La réplication a-t-elle été hors ligne pendant longtemps ou s'est-elle développée au fil du temps lors d'une sorte de pic de saisie de données?
la source