Buy Percona ServicesBuy Now!

Handle Corrupted Tables

When a server subsystem tries to access a corrupted table, the server may crash. If this outcome is not desirable when a corrupted table is encountered, set the new system innodb_corrupt_table_action variable to a value which allows the ongoing operation to continue without crashing the server.

The server error log registers attempts to access corrupted table pages.

Interacting with the innodb_force_recovery variable

The innodb_corrupt_table_action variable may work in conjunction with the innodb_force_recovery variable which considerably reduces the effect of InnoDB subsystems running in the background.

If the innodb_force_recovery variable is set to a low value and you expect the server to crash, it may still be running due to a non-default value of the innodb_corrupt_table_action variable.

For more information about the innodb_force_recovery variable, see Forcing InnoDB Recovery from the MySQL Reference Manual.

This feature adds a new system variable.

Version Specific Information

System Variables

variable innodb_pass_corrupt_table
Version Info:
Command Line:

Yes

Config File:

Yes

Scope:

Global

Dynamic:

Yes

Variable Type:

ULONG

Default Value:

0

Range:

0 - 1

Return error 1194 (ER_CRASHED_ON_USAGE) instead of crashing with an assertion failure, when used with innodb_file_per_table. Once corruption is detected, access to the corrupted tablespace is disabled. The only allowed operation on a corrupted tablespace is DROP TABLE. The only exception to this rule is when the option value is salvage (see below). This variable was renamed to innodb_corrupt_table_action, beginning in release 5.5.10-20.1. The option name was innodb_pass_corrupt_table in versions prior to that.

variable innodb_corrupt_table_action
Version Info:
Command Line:

Yes

Config File:

Yes

Scope:

Global

Dynamic:

Yes

Variable Type:

ENUM

Default Value:

assert

Range:

assert, warn, salvage

  • With the default value XtraDB will intentionally crash the server with an assertion failure as it would normally do when detecting corrupted data in a single-table tablespace.
  • If the warn value is used it will pass corruption of the table as corrupt table instead of crashing itself. For this to work innodb_file_per_table should be enabled. All file I/O for the datafile after detected as corrupt is disabled, except for the deletion.
  • When the option value is salvage, XtraDB allows read access to a corrupted tablespace, but ignores corrupted pages”.

This variable was added in release 5.5.10-20.1. Prior to that, it was named innodb_pass_corrupt_table, which still exists in earlier versions.

Visit Percona Store


General Inquiries

For general inquiries about our open source software and database management tools, please send us your question and someone will contact you.