srv0start.c, trx0sys.c:

  Let InnoDB to skip writing of pages from the doublewrite buffer if innodb_force_recovery=6; normally, if the page is corrupt AND the corresponding page in the doublewrite buffer is also corrupt, InnoDB calls exit(1)
parent 7e85affd
......@@ -1168,7 +1168,10 @@ innobase_start_or_create_for_mysql(void)
and restore them from the doublewrite buffer if
possible */
trx_sys_doublewrite_restore_corrupt_pages();
if (srv_force_recovery < SRV_FORCE_NO_LOG_REDO) {
trx_sys_doublewrite_restore_corrupt_pages();
}
}
srv_normalize_path_for_win(srv_arch_dir);
......
......@@ -340,7 +340,6 @@ trx_sys_doublewrite_restore_corrupt_pages(void)
/* It is an unwritten doublewrite buffer page:
do nothing */
} else {
/* Read in the actual page from the data files */
......@@ -357,9 +356,19 @@ trx_sys_doublewrite_restore_corrupt_pages(void)
"InnoDB: Trying to recover it from the doublewrite buffer.\n");
if (buf_page_is_corrupted(page)) {
fprintf(stderr,
"InnoDB: Dump of the page:\n");
buf_page_print(read_buf);
fprintf(stderr,
"InnoDB: Dump of corresponding page in doublewrite buffer:\n");
buf_page_print(page);
fprintf(stderr,
"InnoDB: Also the page in the doublewrite buffer is corrupt.\n"
"InnoDB: Cannot continue operation.\n");
"InnoDB: Cannot continue operation.\n"
"InnoDB: You can try to recover the database with the my.cnf\n"
"InnoDB: option:\n"
"InnoDB: set-variable=innodb_force_recovery=6\n");
exit(1);
}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment