| Bug #43686 | ctrl+c terminate a tread interrupt slave replcation | ||
|---|---|---|---|
| Submitted: | 17 Mar 3:52 | Modified: | 23 Mar 15:44 |
| Reporter: | Ivan Tan | ||
| Status: | Duplicate | ||
| Category: | Server: Replication | Severity: | S1 (Critical) |
| Version: | 5.1 | OS: | Linux (as5u2) |
| Assigned to: | Target Version: | ||
| Tags: | replication | ||
[17 Mar 3:52]
Ivan Tan
[17 Mar 4:19]
Ivan Tan
when a thread been killed , the operation didn't rollback. terrible thing
[17 Mar 4:46]
Ivan Tan
http://bugs.mysql.com/bug.php?id=2422
[17 Mar 8:45]
Sveta Smirnova
Thank you for the report. I can not repeat described behavior. Please indicate accurate version of MySQL you use.
[17 Mar 13:03]
sky jian
I can repeat it too.
OS:SunOS 5.10 Generic_137138-09
DB:MySQL 5.1.31/32-log Source distribution
binlog_format:MIXED/STATEMENT
tx_isolation:REPEATABLE-READ
[root@dc-5 /tmp]#cat deletetest.sh
#/bin/sh
mysql -uadmin -h127.0.0.1 -pxxx -e"set autocommit=0;delete from test.test;"
[root@dc-5 /tmp]#cat killtest.sh
#/bin/sh
mysqladmin -uroot processlist |grep "admin"|awk '{print $2}'|xargs mysqladmin -uroot
kill
[root@dc-5 /tmp]#time ./deletetest.sh &
[1] 6708
[root@dc-5 /tmp]#./killtest.sh
ERROR 1053 (08S01) at line 1: Server shutdown in progress
real 0m2.901s
user 0m0.007s
sys 0m0.007s
[root@dc-5 /tmp]#
[1]+ Exit 1 time ./deletetest.sh
root@dc-5 : (none) 01:35:43> select count(*) from test.test;
+----------+
| count(*) |
+----------+
| 1000000 |
+----------+
1 row in set (1.71 sec)
root@dc-6 : (none) 01:36:01> select count(*) from test.test;
+----------+
| count(*) |
+----------+
| 1000000 |
+----------+
1 row in set (1.69 sec)
[root@dc-5 /tmp]#cat deletetest.sh
#/bin/sh
mysql -uadmin -h127.0.0.1 -padmin -e"delete from test.test;"
[root@dc-5 /tmp]#time ./deletetest.sh &
[1] 6722
[root@dc-5 /tmp]#./killtest.sh
[root@dc-5 /tmp]#ERROR 1053 (08S01) at line 1: Server shutdown in progress
real 0m2.462s
user 0m0.006s
sys 0m0.007s
[1]+ Exit 1 time ./deletetest.sh
root@dc-5 : (none) 01:40:30> select count(*) from test.test;
+----------+
| count(*) |
+----------+
| 887377 |
+----------+
1 row in set (1.66 sec)
root@dc-6 : (none) 01:44:05> select count(*) from test.test;
+----------+
| count(*) |
+----------+
| 1000000 |
+----------+
1 row in set (1.70 sec)
[17 Mar 13:07]
sky jian
i guess Ivan Tan's OS is Redhat 5.2 :D
[19 Mar 15:11]
sky jian
why no action? no other people repeat it? http://www.jianzhaoyang.com/database/mysql-51-innodb-transaction-bug
[19 Mar 20:08]
Sveta Smirnova
sky jian, thank you for the feedback. You kill the mysqld on master, so this case looks like slave just did not get binlog events from master. Please provide output of SHOW SLAVE STATUS \G
[20 Mar 11:52]
sky jian
[root@dc-5 /tmp]#cat deletetest.sh
#/bin/sh
mysql -uadmin -h127.0.0.1 -padmin -e"delete from test.test;"
[root@dc-5 /tmp]#cat killtest.sh
#/bin/sh
mysqladmin -uroot processlist |grep "admin"|awk '{print $2}'|xargs mysqladmin -uroot
kill
[root@dc-5 /tmp]#
Before test:
Master:
root@localhost : test 06:39:39> show master status;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.002096 | 1741 | | |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)
root@localhost : test 06:40:54> select count(*) from test;
+----------+
| count(*) |
+----------+
| 1000000 |
+----------+
1 row in set (1.75 sec)
Slave:
1 row in set (1.87 sec)
root@localhost : test 06:40:11> show slave status\G
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 10.0.38.24
Master_User: repl
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.002096
Read_Master_Log_Pos: 1741
Relay_Log_File: mysql-relay-bin.006993
Relay_Log_Pos: 251
Relay_Master_Log_File: mysql-bin.002096
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: 1741
Relay_Log_Space: 8
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: 0
Master_SSL_Verify_Server_Cert: No
Last_IO_Errno: 0
Last_IO_Error:
Last_SQL_Errno: 0
Last_SQL_Error:
1 row in set (0.00 sec)
root@localhost : test 06:41:18> select count(*) from test;
+----------+
| count(*) |
+----------+
| 1000000 |
+----------+
1 row in set (1.75 sec)
Test:
[root@dc-5 /tmp]#time ./deletetest.sh &
[1] 7613
[root@dc-5 /tmp]#./killtest.sh
[root@dc-5 /tmp]#ERROR 1053 (08S01) at line 1: Server shutdown in progress
real 0m2.633s
user 0m0.006s
sys 0m0.007s
[1]+ Exit 1 time ./deletetest.sh
[root@dc-5 /tmp]#
After test:
Master:
root@localhost : test 06:41:15> show master status;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.002096 | 1741 | | |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)
root@localhost : test 06:41:41> select count(*) from test;
+----------+
| count(*) |
+----------+
| 894465 |
+----------+
Slave:
root@localhost : test 06:41:40> show slave status\G
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 10.0.38.24
Master_User: repl
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.002096
Read_Master_Log_Pos: 1741
Relay_Log_File: mysql-relay-bin.006993
Relay_Log_Pos: 251
Relay_Master_Log_File: mysql-bin.002096
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: 1741
Relay_Log_Space: 8
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: 0
Master_SSL_Verify_Server_Cert: No
Last_IO_Errno: 0
Last_IO_Error:
Last_SQL_Errno: 0
Last_SQL_Error:
1 row in set (0.00 sec)
root@localhost : test 06:42:11> select count(*) from test;
+----------+
| count(*) |
+----------+
| 1000000 |
+----------+
1 row in set (1.74 sec)
It looks like there has no binlog be written at master,but it's data has deleted!
[20 Mar 13:23]
Sveta Smirnova
Thank you for the feedback. This can be same problem as in bug #37926. Please check if binary log is corrupted (`mysqlbinlog mysql-bin.002096` on master).
[21 Mar 10:09]
sky jian
no, the binady log is work well,has not be coruppted.
[21 Mar 10:12]
sky jian
and i must correct your word, not kill mysqld, just kill one thread ,the "delete" thread! and excuse my pool english :)
[23 Mar 15:44]
Susanne Ebrecht
This is a duplicate to bug #319 which was split into bug #319 and bug #43217. At last this is a duplicate of bug #38205
[24 Mar 14:09]
sky jian
ok is there any patch or action for this bug?
