mysql中InnoDB的恢复过程

飞鸟 3月 1, 202215:32:25数据库学习评论135阅读模式
广告也精彩

1、redo log操作:保证已提交事务影响的最新数据刷到数据页里。文章源自飞鸟学习网-https://www.pk88.net/2022-0301-14.html

2、undo log操作:保证未提交事务影响的数据页回滚。文章源自飞鸟学习网-https://www.pk88.net/2022-0301-14.html

3、写缓冲(change buffer)合并。文章源自飞鸟学习网-https://www.pk88.net/2022-0301-14.html

4、purge操作。文章源自飞鸟学习网-https://www.pk88.net/2022-0301-14.html

InnoDB的一种垃圾收集机制,使用单独的后台线程周期性处理索引中标记删除的数据。文章源自飞鸟学习网-https://www.pk88.net/2022-0301-14.html

实例文章源自飞鸟学习网-https://www.pk88.net/2022-0301-14.html

/*LookforMLOG_CHECKPOINT.*/
recv_group_scan_log_recs(group,&contiguous_lsn,false);
/*Thefirstscanshouldnothavestoredorappliedanyrecords.*/
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()<<"Ignoringtheredologduetomissing"
"MLOG_CHECKPOINTbetweenthecheckpoint"
<<checkpoint_lsn<<"andtheend"
<<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:wealwaysdoa'recovery'atstartup,butonlyif
thereissomethingwrongwewillprintamessagetothe
useraboutrecovery:*/

if(checkpoint_lsn!=flush_lsn){

if(checkpoint_lsn+SIZE_OF_MLOG_CHECKPOINT<flush_lsn){
ib::warn()<<"Areyousureyouareusingthe"
"rightib_logfilestostartupthedatabase?"
"Logsequencenumberintheib_logfilesis"
<<checkpoint_lsn<<",lessthanthe"
"logsequencenumberinthefirstsystem"
"tablespacefileheader,"<<flush_lsn<<".";


if(!recv_needed_recovery){

ib::info()<<"Thelogsequencenumber"<<flush_lsn
<<"inthesystemtablespacedoesnotmatch"
"thelogsequencenumber"<<checkpoint_lsn
<<"intheib_logfiles!";

if(srv_read_only_mode){
ib::error()<<"Can'tinitiatedatabase"
"recovery,runninginread-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);

以上就是mysql InnoDB的崩溃恢复过程,希望对大家有所帮助文章源自飞鸟学习网-https://www.pk88.net/2022-0301-14.html

mysql中InnoDB的恢复过程文章源自飞鸟学习网-https://www.pk88.net/2022-0301-14.html

继续阅读
全站资源源于网络整合,仅供学习研究,不可商用,不提供技术指导,如有侵权请告知删除,可以投稿,广告合作联系V: pk88net
weinxin
我的微信
微信扫一扫
  • 本文由 发表于 3月 1, 202215:32:25
  • 转载请务必保留本文链接:https://www.pk88.net/2022-0301-14.html
    免责声明
    非常感谢您的访问。在您使用本网站之前,请您仔细阅读本声明的所有条款。
    1、本网站属于个人网站,本分开放互享的原则,本网站的内容均为站长提供、网友推荐、互联网整理而来,仅用于广大网友学习研究使用,如有侵犯您的版权,请及时联系我们,本站将及时纠正。
    2、本站内容不保证其完整性、正确性,但是我们会尽最大努力去确保提供信息的完整性及正确性,且不对因信息的不正确或遗漏导致的任何损失或损害承担责任。
    3、对由于使用本站所产生的任何直接、间接或偶然性的损失或破坏,无论该损失或破坏是否源于疏忽、违约、诽谤、侵权甚至电脑病毒等原因造成的,本网站概不负责,亦不负任何法律责任。
    4、本网站所有内容(网络,素材、图片),其版权均归原作者所有,在转载有关文章时务必尊重该文章的著作权,保留其来源,并自负版权等法律责任。
    5、本声明未涉及的问题参见国家有关法律法规,当本声明与国家法律法规冲突时,以国家法律法规为准。
    6、本站文章内容,如果来源于互联网,我们会标明其来源,如果属于本站原创整理互联网资料,请您转载或者使用该文章时尊重本站及其互联网作者的著作权,注明其来源。
    7、互联网的本质是自由与分享,我们真诚的希望,本站的每一份正能量能带给正在访问本网站的您提供有效的帮助,并且能在互联网自由传播。希望大家多多支持本站。
广告也精彩
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: