innodb_log_block_size mismatch between log files and current configuration is diagnosed as "No valid checkpoints found"

Bug #1155156 reported by Laurynas Biveinis on 2013-03-14
14
This bug affects 2 people
Affects Status Importance Assigned to Milestone
Percona Server moved to https://jira.percona.com/projects/PS
Status tracked in 5.7
5.1
Won't Fix
Medium
Unassigned
5.5
Fix Released
Medium
Laurynas Biveinis
5.6
Fix Released
Medium
Laurynas Biveinis
5.7
Invalid
Undecided
Unassigned

Bug Description

PS 5.5 stores the non-default innodb_log_block_size value at a log file header offset 64. Verify that the server fails to start up with appropriate diagnostics if non-zero found there. Look into creating an MTR testcase for this (might be impossible, because MTR does not seem to support "server failed to start" tests).

summary: - Upgrade from non-default innodb_log_block_size to 5.6 should work
+ Server should diagnose non-standard innodb_log_block_size on 5.6 upgrade
Alexey Kopytov (akopytov) wrote :

I agree that the problem itself is irrelevant wrt 5.5 -> 5.6 upgrade. But it's actually about changing innodb_log_block_size without recreating the log files. Currently the error message is rather misleading "No valid checkpoints found". If we do know the block size used to create them, should we have a more descriptive diagnostics? In which case, it applies to all branches.

XtraDB patches

 if (log_hdr_log_block_size != srv_log_block_size) {
  fprintf(stderr,
   "InnoDB: Error: The block size of ib_logfile (%lu) "
   "is not equal to innodb_log_block_size.\n"
   "InnoDB: Error: Suggestion - Recreate log files.\n",
   log_hdr_log_block_size);
  return(DB_ERROR);
 }

Since you report "No valid checkpoints instead", let's keep this bug open for checking if the above diagnostics happens too late on the server startup.

summary: - Server should diagnose non-standard innodb_log_block_size on 5.6 upgrade
+ Verify innodb_log_block_size mismatch diagnostics
tags: added: xtradb
Alexey Kopytov (akopytov) wrote :

The "No valid checkpoint" error is thrown from recv_find_max_checkpoint() which is called before the log block size check in recv_recovery_from_checkpoint_start_func().

Roel Van de Paar (roel11) wrote :

Yes we need this, otherwise we end up with confusing crashes/asserts/corruptions like bug 1233529, bug 1233506

Roel Van de Paar (roel11) wrote :

@Laurynas, any chance to get this implemented? Thanks

Roel Van de Paar (roel11) wrote :

For RQG; one can check vardir1_x/log/bootstrap.log for "InnoDB: The log block size is set to x." - but startup/mysql_install_db/bootstrap works generally fine in RQG with innodb_log_block_size.

tags: added: i64171
summary: - Verify innodb_log_block_size mismatch diagnostics
+ innodb_log_block_size mismatch between log files and current
+ configuration is diagnosed as "No valid checkpoints found"

Percona now uses JIRA for bug reports so this bug report is migrated to: https://jira.percona.com/browse/PS-1338

To post a comment you must log in.
This report contains Public information  Edit
Everyone can see this information.

Duplicates of this bug

Other bug subscribers