[MDEV-18733] MariaDB slow start after crash recovery Created: 2019-02-25  Updated: 2019-04-09  Resolved: 2019-04-03

Status: Closed
Project: MariaDB Server
Component/s: Storage Engine - InnoDB
Affects Version/s: 5.5, 10.0, 10.1, 10.2, 10.3, 10.4
Fix Version/s: 10.2.24, 10.3.15, 10.4.4

Type: Bug Priority: Major
Reporter: Marko Mäkelä Assignee: Marko Mäkelä
Resolution: Fixed Votes: 0
Labels: performance, recovery

Issue Links:
Relates
relates to MDEV-14481 Execute InnoDB crash recovery in the ... Closed
relates to MDEV-14717 RENAME TABLE in InnoDB is not crash-safe Closed
relates to MDEV-18309 #2 InnoDB: Operating system error num... Closed

 Description   

If InnoDB crash recovery was needed, the InnoDB function srv_start() would invoke extra validation:

			bool validate = recv_needed_recovery
				&& srv_force_recovery == 0;
 
			dict_check_tablespaces_and_store_max_id(validate);

This time-consuming validation (reading something from every InnoDB data file) should be unnecessary now that RENAME operations inside InnoDB are crash-safe (MDEV-14717).

The validation can be skipped by setting innodb_force_recovery=1, but that setting will also cause InnoDB crash recovery to turn a blind eye on some problems, such as data files missing, and redo log for missing files being skipped.

We should skip the extra validation in MariaDB 10.3 onwards. In MariaDB 10.2 we can skip it unless the compatibility setting innodb_safe_truncate=OFF is active.



 Comments   
Comment by Marko Mäkelä [ 2019-04-03 ]

In MariaDB 10.2, we will not read files after crash recovery by default (innodb_safe_truncate=ON). We will also skip opening files whose name starts with #sql- in this case.

In MariaDB 10.3 and later versions, there is no innodb_safe_truncate=OFF option; renames inside InnoDB will be transactional and #sql- tables will be dropped automatically on startup.

Generated at Thu Feb 08 08:46:20 UTC 2024 using Jira 8.20.16#820016-sha1:9d11dbea5f4be3d4cc21f03a88dd11d8c8687422.