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 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-interval||Seconds||Check at this intervall if tablespaces needs scrubbing|
|innodb-background-scrub-data-compressed||Boolean||Enable scrubbing of compressed data by background threads|
|innodb-background-scrub-data-interval||Seconds||Scrub spaces that were last scrubbed longer than this many seconds ago.|
|innodb-background-scrub-data-uncompressed||Boolean||Enable scrubbing of uncompressed data by background threads|
|innodb-immediate-scrub-data-uncompressed||Boolean||Enable scrubbing of uncompressed data|
|innodb-scrub-log||Boolean||Enable redo log scrubbing|
|innodb-scrub-log-speed||Bytes/sec||Redo 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.