Mariabackup --prepare: Do not access transactions or data dictionary

innobase_start_or_create_for_mysql(): Only start the data dictionary
and transaction subsystems in normal server startup and during
mariabackup --export.
This commit is contained in:
Marko Mäkelä 2018-01-16 13:57:30 +02:00
parent 33ecf8345d
commit be85c2dc88

View File

@ -2246,17 +2246,32 @@ files_checked:
recv_sys->dblwr.pages.clear();
if (err == DB_SUCCESS) {
/* Initialize the change buffer. */
err = dict_boot();
}
if (err != DB_SUCCESS) {
return(srv_init_abort(err));
}
/* This must precede recv_apply_hashed_log_recs(true). */
switch (srv_operation) {
case SRV_OPERATION_NORMAL:
case SRV_OPERATION_RESTORE_EXPORT:
/* Initialize the change buffer. */
err = dict_boot();
if (err != DB_SUCCESS) {
return(srv_init_abort(err));
}
/* This must precede
recv_apply_hashed_log_recs(true). */
trx_sys_init_at_db_start();
break;
case SRV_OPERATION_RESTORE_DELTA:
case SRV_OPERATION_BACKUP:
ut_ad(!"wrong mariabackup mode");
/* fall through */
case SRV_OPERATION_RESTORE:
/* mariabackup --prepare only deals with
the redo log and the data files, not with
transactions or the data dictionary. */
break;
}
if (srv_force_recovery < SRV_FORCE_NO_LOG_REDO) {
/* Apply the hashed log records to the