Bug #68302 | MySQL crashed when trying to free page that is already marked as free | ||
---|---|---|---|
Submitted: | 7 Feb 2013 13:47 | Modified: | 31 Dec 2013 11:14 |
Reporter: | Michael Ivanov | Email Updates: | |
Status: | Can't repeat | Impact on me: | |
Category: | MySQL Server: InnoDB storage engine | Severity: | S1 (Critical) |
Version: | 5.5.32 | OS: | Linux |
Assigned to: | CPU Architecture: | Any |
[7 Feb 2013 13:47]
Michael Ivanov
[7 Feb 2013 15:51]
Michael Ivanov
I have done more tests and it seems the above query does not produce errors on clean dump with the table data restored via mysqldump. So it seems to me the real table corruption occurred on this record before and the above update query just provoked a crash.
[15 Feb 2013 18:40]
Sveta Smirnova
Thank you for the report. According to last comment this is not a bug, so I am closing it as such. If you would be able to prove that this is MySQL server causes table corruption feel free to reopen the report.
[18 Feb 2013 9:43]
Michael Ivanov
It is clear that it was MySQL causing the corruption because it was propagated to all slave servers as I wrote above.
[18 Feb 2013 11:03]
Sveta Smirnova
Thank you for the feedback. Do you use row-based or mixed replication?
[18 Feb 2013 11:29]
Michael Ivanov
I use statement based replication.
[18 Feb 2013 11:35]
Sveta Smirnova
Thank you for the feedback. Could you please send us binary logs, created in time when corruption happened on master first time? We need binary log with statement, caused corruption.
[18 Feb 2013 12:34]
Michael Ivanov
uploaded last 15 minutes binlog before crash occurred (/support/incoming/binlog-68302.sql.gz)
[18 Feb 2013 19:09]
Sveta Smirnova
Thank you for the feedback. I don't see the file. Please re-upload.
[19 Feb 2013 6:49]
Michael Ivanov
Ok I reuploaded the file. If you still don't see it, I can upload it to my public server and provide you URL.
[19 Feb 2013 11:53]
Sveta Smirnova
Thank you for the file! Now I could access it.
[19 Feb 2013 16:58]
Sveta Smirnova
Thank you for the feedback. I can not repeat corruption with dummy data. Please send us more details about your installation: exact version of MySQL server and configuration file for master and slaves.
[25 Feb 2013 7:54]
Michael Ivanov
Exact version of MySQL is 5.5.30-log MySQL Community Server (GPL) by Remi on one of our crashed slaves. Also this crash had happened on 5.5.28 and 5.5.29 versions of MySQL. I will also attach the config file of this server.
[29 Jul 2013 7:30]
Michael Ivanov
I've just got the same crash on MySQL 5.5.32
[29 Jul 2013 14:30]
Michael Ivanov
Based on http://bugs.mysql.com/bug.php?id=55284 I made an assumption that changing innodb_file_format from Antelope to Barrucuda may help. Im gonna try it.
[24 Dec 2013 14:57]
Sveta Smirnova
Thank you for the feedback. Can you repeat the failure if remove option O_DIRECT?
[30 Dec 2013 13:47]
Michael Ivanov
Thanks for your suggestion Sveta. I removed O_DIRECT option from two our slave servers. So far (running for 2 days with this option) no crashes occured, but usually we are getting those crashes once in a month or so. However can you please elaborate how this option can cause the crashes since we are getting the crashes on all servers via the replication?
[31 Dec 2013 11:14]
Sveta Smirnova
Thank you for the feedback. Regarding O_DIRECT please read at http://man7.org/linux/man-pages/man2/open.2.html what this flag does: "The O_DIRECT flag on its own makes an effort to transfer data synchronously, but does not give the guarantees of the O_SYNC flag that data and necessary metadata are transferred. To guarantee synchronous I/O, O_SYNC must be used in addition to O_DIRECT." Using this flag you can increase performance for MySQL, but make IO operations less stable which can lead to corruptions. I'll mark this report as "Can't repeat" for now. If you could repeat the issue without using O_DIRECT feel free to reopen the report.