InnoDB Data Scrubbing

MariaDB starting with 10.1.4

The description below applies to MariaDB 10.1.4 and later

Sometimes there is a requirement that when some data is deleted, it is really gone. This might be the case when one stores user's personal information or some other sensitive data. Normally though, when a row is deleted, the space is only marked as free on the page. It may eventually be overwritten, but there is no guarantee when that will happen. A copy of the deleted rows may also be present in the log files.

MariaDB 10.1.3 has introduced support for InnoDB/XtraDB data scrubbing. Background threads periodically scan tablespaces and logs and remove all data that should be deleted. The number of background threads for tablespace scans is set by innodb-encryption-threads. Log scrubbing happens in a separate thread.

To configure scrubbing one can use the following variables:

innodb-background-scrub-data-check-intervalSecondsCheck at this intervall if tablespaces needs scrubbing
innodb-background-scrub-data-compressedBooleanEnable scrubbing of compressed data by background threads
innodb-background-scrub-data-intervalSecondsScrub spaces that were last scrubbed longer than this many seconds ago.
innodb-background-scrub-data-uncompressedBooleanEnable scrubbing of uncompressed data by background threads
innodb-immediate-scrub-data-uncompressedBooleanEnable scrubbing of uncompressed data
innodb-scrub-logBooleanEnable redo log scrubbing
innodb-scrub-log-speedBytes/secRedo log scrubbing speed in bytes/sec

The Information Schema INNODB_TABLESPACES_SCRUBBING table contains scrubbing information.


  • Scrubbing was donated to the MariaDB project by Google.


Comments loading...