mirror of
https://github.com/MariaDB/server.git
synced 2025-01-31 11:01:52 +01:00
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)
This commit is contained in:
parent
7e85affd1e
commit
9ec42178e9
2 changed files with 15 additions and 3 deletions
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue