1. Redo-Log-Vorgang: Stellen Sie sicher, dass die neuesten Daten, die von übermittelten Transaktionen betroffen sind, auf die Datenseite geschrieben werden.
2. Protokollvorgang rückgängig machen: Stellen Sie sicher, dass die von nicht festgeschriebenen Transaktionen betroffenen Datenseiten zurückgesetzt werden.
3. Puffer schreiben (Puffer ändern) zusammenführen.
4. Spülvorgang.
InnoDB ist ein Garbage-Collection-Mechanismus, der einen separaten Hintergrundthread verwendet, um regelmäßig Daten zu verarbeiten, die im Index zum Löschen markiert sind.
Instanzen
/* Look for MLOG_CHECKPOINT. */ recv_group_scan_log_recs(group, &contiguous_lsn, false); /* The first scan should not have stored or applied any records. */ ut_ad(recv_sys->n_addrs == 0); ut_ad(!recv_sys->found_corrupt_fs); if (recv_sys->found_corrupt_log && !srv_force_recovery) { log_mutex_exit(); return(DB_ERROR); } if (recv_sys->mlog_checkpoint_lsn == 0) { if (!srv_read_only_mode && group->scanned_lsn != checkpoint_lsn) { ib::error() << "Ignoring the redo log due to missing" " MLOG_CHECKPOINT between the checkpoint " << checkpoint_lsn << " and the end " << group->scanned_lsn << "."; if (srv_force_recovery < SRV_FORCE_NO_LOG_REDO) { log_mutex_exit(); return(DB_ERROR); } } group->scanned_lsn = checkpoint_lsn; rescan = false; } else { contiguous_lsn = checkpoint_lsn; rescan = recv_group_scan_log_recs( group, &contiguous_lsn, false); if ((recv_sys->found_corrupt_log && !srv_force_recovery) || recv_sys->found_corrupt_fs) { log_mutex_exit(); return(DB_ERROR); } } /* NOTE: we always do a 'recovery' at startup, but only if there is something wrong we will print a message to the user about recovery: */ if (checkpoint_lsn != flush_lsn) { if (checkpoint_lsn + SIZE_OF_MLOG_CHECKPOINT < flush_lsn) { ib::warn() << " Are you sure you are using the" " right ib_logfiles to start up the database?" " Log sequence number in the ib_logfiles is " << checkpoint_lsn << ", less than the" " log sequence number in the first system" " tablespace file header, " << flush_lsn << "."; } if (!recv_needed_recovery) { ib::info() << "The log sequence number " << flush_lsn << " in the system tablespace does not match" " the log sequence number " << checkpoint_lsn << " in the ib_logfiles!"; if (srv_read_only_mode) { ib::error() << "Can't initiate database" " recovery, running in read-only-mode."; log_mutex_exit(); return(DB_READ_ONLY); } recv_init_crash_recovery(); } } log_sys->lsn = recv_sys->recovered_lsn; if (recv_needed_recovery) { err = recv_init_crash_recovery_spaces(); if (err != DB_SUCCESS) { log_mutex_exit(); return(err); } if (rescan) { contiguous_lsn = checkpoint_lsn; recv_group_scan_log_recs(group, &contiguous_lsn, true); if ((recv_sys->found_corrupt_log && !srv_force_recovery) || recv_sys->found_corrupt_fs) { log_mutex_exit(); return(DB_ERROR); } } } else { ut_ad(!rescan || recv_sys->n_addrs == 0); }
Das obige ist der detaillierte Inhalt vonWas ist der Absturzwiederherstellungsprozess von MySQL InnoDB?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!