国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

MySQL斷電恢復的一點簡單分析

數據庫 MySQL
我首先是要確認是否為線上業務還是測試環境,線上業務來說這個影響還是很大的。如果數據庫無法啟動,首要任務還是把數據庫啟動,然后在這個基礎上查看丟失的數據程度,安排數據修復的事宜。

[[205074]]

今天有個網友問我一個MySQL的恢復問題。提供的截圖如下。

 

對于這個問題,在一些斷電的場景下還是可能出現的。我首先是要確認是否為線上業務還是測試環境,線上業務來說這個影響還是很大的。如果數據庫無法啟動,首要任務還是把數據庫啟動,然后在這個基礎上查看丟失的數據程度,安排數據修復的事宜。

當然從我的角度來說,怎么去快速復現這個問題呢。我用自己寫的快速搭建測試主從環境的腳本(https://github.com/jeanron100/mysql_slaves,后期有一位大牛建議用Python來做,最近在考慮),分分鐘即可搞定。

我們創建一個表test,指定id,name兩個字段。然后開啟顯式事務。

  1. create table test(id int primary key,name varchar(30) not null); 

顯式開啟一個事務:

  1. begin
  2. insert into test values(1,'a'); 
  3. insert into test values(2,'b'); 
  4. insert into test values(3,'c');  

不提交,我們直接查看mysql的服務進程,直接Kill掉。默認情況下雙1指標是開啟的,我們直接模擬斷電重啟,看看后臺的處理情況:

  1. 2017-09-13 15:05:11 35556 [Note] InnoDB: Highest supported file format is Barracuda. 
  2.  
  3. 2017-09-13 15:05:11 35556 [Note] InnoDB: The log sequence numbers 1625987 and 1625987 in ibdata files do not match the log sequence number 1640654 in the ib_logfiles! 
  4.  
  5. 2017-09-13 15:05:11 35556 [Note] InnoDB: Database was not shutdown normally! 
  6.  
  7. 2017-09-13 15:05:11 35556 [Note] InnoDB: Starting crash recovery. 
  8.  
  9. 2017-09-13 15:05:11 35556 [Note] InnoDB: Reading tablespace information from the .ibd files... 
  10.  
  11. 2017-09-13 15:05:11 35556 [Note] InnoDB: Restoring possible half-written data pages 
  12.  
  13. 2017-09-13 15:05:11 35556 [Note] InnoDB: from the doublewrite buffer... 
  14.  
  15. InnoDB: 1 transaction(s) which must be rolled back or cleaned up 
  16.  
  17. InnoDB: in total 3 row operations to undo 
  18.  
  19. InnoDB: Trx id counter is 2304 
  20.  
  21. 2017-09-13 15:05:11 35556 [Note] InnoDB: 128 rollback segment(s) are active. 
  22.  
  23. InnoDB: Starting in background the rollback of uncommitted transactions 
  24.  
  25. 2017-09-13 15:05:11 7f5ccc3d1700 InnoDB: Rolling back trx with id 1806, 3 rows to undo 
  26.  
  27. 2017-09-13 15:05:11 35556 [Note] InnoDB: Rollback of trx with id 1806 completed 
  28.  
  29. 2017-09-13 15:05:11 7f5ccc3d1700 InnoDB: Rollback of non-prepared transactions completed 
  30.  
  31. 2017-09-13 15:05:11 35556 [Note] InnoDB: Waiting for purge to start 
  32.  
  33. 2017-09-13 15:05:11 35556 [Note] InnoDB: Percona XtraDB (http://www.percona.com) 5.6.14-rel62.0 started; log sequence number 1640654 
  34.  
  35. 2017-09-13 15:05:11 35556 [Note] Recovering after a crash using binlog 
  36.  
  37. 2017-09-13 15:05:11 35556 [Note] Starting crash recovery... 
  38.  
  39. 2017-09-13 15:05:11 35556 [Note] Crash recovery finished.  

可以看到后臺檢測到了上次的異常宕機,然后開啟崩潰恢復,InnoDB檢測到日志LSN是1625987 而系統數據文件ibd的LSN為1625987 ,和ib_logfiles里面的LSN不匹配。后面就是一系列的恢復,前滾,恢復,回滾。***表里的數據為空,證明之前的事務都已經回滾了。

所以基于上面的情況,我們明白開啟了事務,基本情況下這個問題是不會出現的,什么時候會拋出開始的錯誤呢。

我們繼續測試,開啟一個顯式事務,不提交。

  1. begin
  2.  
  3. insert into test values(1,'a'); 
  4.  
  5. insert into test values(2,'b'); 
  6.  
  7. insert into test values(3,'c');  

然后殺掉mysql的服務進程,找到mysql的數據目錄下,刪除redo文件。完成后我們重啟數據庫。

這個時候就拋出了和截圖類似的錯誤。

  1. 2017-09-13 16:05:14 36896 [Note] InnoDB: Highest supported file format is Barracuda. 
  2.  
  3. 2017-09-13 16:05:14 7f73450a97e0 InnoDB: Error: page 7 log sequence number 1627722 
  4.  
  5. InnoDB: is in the future! Current system log sequence number 1626124. 
  6.  
  7. InnoDB: Your database may be corrupt or you may have copied the InnoDB 
  8.  
  9. InnoDB: tablespace but not the InnoDB log files. See 
  10.  
  11. InnoDB: http://dev.mysql.com/doc/refman/5.6/en/forcing-innodb-recovery.html 
  12.  
  13. InnoDB: for more information.  

這個問題目前的影響范圍其實還不明顯,因為盡管如此,我們還是能夠寫入數據的。 

  1. mysql> insert into test values(1,'a'); 
  2.  
  3. Query OK, 1 row affected (0.04 sec) 
  4.  
  5. mysql> select *from test; 
  6.  
  7. +----+------+ 
  8.  
  9. | id | name | 
  10.  
  11. +----+------+ 
  12.  
  13. | 1 | a | 
  14.  
  15. +----+------+ 
  16.  
  17. 1 row in set (0.00 sec)  

關于崩潰恢復,有一個數據參數尤其需要注意,那就是innodb_force_recovery,這個參數默認值為0,如果為非0的值(范圍為1-6),會有下面的影響范圍。

1 (SRV_FORCE_IGNORE_CORRUPT): 忽略檢查到的corrupt頁。

2 (SRV_FORCE_NO_BACKGROUND): 阻止主線程的運行,如主線程需要執行full purge操作,會導致crash。

3 (SRV_FORCE_NO_TRX_UNDO): 不執行事務回滾操作。

4 (SRV_FORCE_NO_IBUF_MERGE): 不執行插入緩沖的合并操作。

5 (SRV_FORCE_NO_UNDO_LOG_SCAN):不查看重做日志,InnoDB存儲引擎會將未提交的事務視為已提交。

6 (SRV_FORCE_NO_LOG_REDO): 不執行前滾的操作。

當然這個參數的設置修改是需要重啟MySQL服務的。

  1. mysql> set global innodb_force_recovery=2; 
  2.  
  3. ERROR 1238 (HY000): Variable 'innodb_force_recovery' is a read only variable  

在此假設我們設置為2,再次復現這個問題問題,你就會發現,數據庫暫時是可以啟動的,但是數據只能查詢,DML操作都會拋錯。

  1. mysql> select *from test; 
  2.  
  3. Empty set (0.00 sec) 
  4.  
  5. mysql> 
  6.  
  7. mysql> insert into test values(1,'a'); 
  8.  
  9. ERROR 1030 (HY000): Got error -1 from storage engine  

按照這個影響的范圍來評估force_recovery的值,我們就可以做相應的取舍了。如果MySQL服務無法正常啟動,就可以修改這個參數值來調整,先滿足服務可持續性的基本問題。然后評估后導出重要的數據來。 

責任編輯:龐桂玉 來源: 楊建榮的學習筆記
相關推薦

2013-01-08 10:06:43

創業創業方法

2016-04-05 10:12:58

HiveSQLHadoop

2011-07-12 17:55:28

尾日志備份

2009-11-09 13:56:15

WCF Stream對

2010-05-20 15:29:43

優化IIS

2011-11-30 09:26:25

項目管理

2024-05-31 08:40:09

2012-03-27 08:49:19

Json

2009-07-09 15:09:05

JDK卸載

2009-09-14 19:44:27

LINQ To SQL

2025-05-29 00:00:00

UI 庫前端模塊化

2011-12-02 09:39:22

項目管理

2020-11-26 10:16:31

MIUI廣告

2012-11-23 16:46:12

LinuxVim

2016-01-06 09:49:59

青云/SDN

2014-06-04 10:48:38

Swift蘋果iOS

2012-07-12 10:49:53

項目管理

2009-09-14 20:17:05

并行LINQ

2011-07-04 09:33:04

惠普轉型李艾科

2013-03-06 10:19:56

重構架構設計
點贊
收藏

51CTO技術棧公眾號

av动漫免费观看| 日韩在线观看a| 成人在线超碰| 亚洲国产福利在线| 成人精品一区二区三区校园激情| 亚洲免费av网站| 免费毛片小视频| 不卡av电影在线播放| 中文字幕欧美人与畜| 日韩va欧美va亚洲va久久| 91精品美女在线| 色88久久久久高潮综合影院| 国产精品 欧美在线| 亚欧洲精品视频在线观看| 午夜精品免费视频| 天天躁日日躁狠狠躁欧美巨大小说 | 久久综合色视频| 国产一区91精品张津瑜| 正义之心1992免费观看全集完整版| 羞羞视频在线观看欧美| 精品一区二区三区自拍图片区| 欧美日韩国产一区精品一区| 亚洲xxx自由成熟| 欧美日韩在线大尺度| 国产精品一区二区三区免费| 亚洲激情女人| 午夜免费电影一区在线观看| 人妖欧美一区二区| 国产福利片一区二区| 国产剧情一区二区| 免费国产黄色网址| 中文字幕在线一区二区三区| 99在线免费观看| 亚洲18女电影在线观看| 免费在线国产| 日韩三级在线免费观看| 欧美13videosex性极品| 久久精品中文字幕| 美日韩中文字幕| 精品欧美一区二区在线观看视频| 蜜乳av一区二区三区| 欧美二区在线视频| 亚洲欧美区自拍先锋| 国产二区视频在线观看| 精品va天堂亚洲国产| www欧美在线观看| 国产精品久久中文| 亚洲综合99| 91制片厂免费观看| 中文字幕免费不卡在线| 校园春色综合| 日韩久久精品电影| 国产精品国产| 成人av电影免费| 国产经典欧美精品| 成人黄动漫网站| 91精品国产91综合久久蜜臀| 不卡精品视频| 97碰碰视频| www.亚洲免费av| 可以直接在线观看的av| 中文字幕亚洲在线| 亚洲精品午夜av福利久久蜜桃| 亚洲制服中文| 亚洲自拍与偷拍| 一本大道色婷婷在线| 日本免费久久高清视频| 日韩精品成人一区二区三区| 9色porny| 久久久久国产免费免费| 国产淫片免费看| 色婷婷久久久亚洲一区二区三区| 亚洲男同gay网站| 色哟哟亚洲精品一区二区| 国产午夜久久av| 久久视频中文字幕| 欧美大黄免费观看| 亚洲无限乱码一二三四麻| 色88888久久久久久影院按摩 | 国产一区玩具在线观看| 国产精品115| 九九热这里只有在线精品视| 嫩草香蕉在线91一二三区| 亚洲综合色区另类av| 中文字幕乱码免费| 国产精品99久久久| 2019中文字幕视频| 亚洲国产精品va在线看黑人动漫| 欧美精选一区二区三区| 手机在线看福利| 亚洲天堂第一页| 久久久亚洲午夜电影| 成人9ⅰ免费影视网站| 99精品视频免费在线观看| av在线播放网| 日本国产高清不卡| 99re这里只有精品视频首页| 二区在线播放| 91在线高清免费观看| 国产三区在线成人av| 欧美videossex| 99re在线| 午夜精品成人在线视频| 成人av激情人伦小说| 成人在线免费观看网址| 3751色影院一区二区三区| 国产免费一区二区视频| 一道本成人在线| 神马午夜久久| 能看的毛片网站| 国产亚洲一区二区在线| 蜜桃久久久久久| 好操啊在线观看免费视频| 成人资源视频网站免费| 精品久久久久久久久久久| 婷婷精品视频| 成人中文字幕av| 久久色免费在线视频| 成人免费高清视频| 久久99久久99精品免观看软件| 亚洲福利av| 欧美va亚洲va香蕉在线| 久久九九精品| 欧美videossex| 日韩精品欧美专区| 69堂精品视频| 性伦欧美刺激片在线观看| 高清全集视频免费在线| 麻豆av一区| 欧美一区二区三区小说| 国产精品一卡| 天堂8中文在线| 日韩wuma| 亚洲人成五月天| 99re6这里只有精品视频在线观看| 蜜桃成人精品| 日本在线xxx| 美日韩在线视频| 国产精品天天看| 国产不卡一二三区| 最新国产在线| 国产精品一区二区三区观看| 欧美一区二区三区播放老司机 | 俺去啦;欧美日韩| 久久久五月婷婷| 欧美福利在线播放网址导航| 毛片视频免费| 成人久久精品视频| 91久久精品网| 久久一综合视频| 欧美xxxxxx| 日本三区在线观看| 国产成人a亚洲精品| 欧美午夜xxx| 日韩av网站免费在线| 久久国产精品久久精品国产| 亚洲国产视频网站| 亚洲国产日韩欧美一区二区三区| 在线观看免费视频你懂的| 欧美一级爱爱视频| 成人永久看片免费视频天堂| 久久综合亚洲| 亚洲已满18点击进入在线看片| 日韩欧美国产网站| 欧美人与性动交α欧美精品图片| 男女裸体影院高潮| 日韩综合一区二区三区| 日韩av在线中文字幕| 欧美三级伦理在线| 欧美xxxx吸乳| 欧美人成在线视频| 精品国产精品三级精品av网址| 亚洲一级在线| 国产在视频一区二区三区吞精| 濑亚美莉vs黑人在线观看| 成人午夜在线影院| 精品国免费一区二区三区| av不卡免费在线观看| 久久国产精品成人免费观看的软件| 国产在线高清视频| 黄色a级片免费| 成人午夜电影在线播放| 国产一区二区av| 午夜精品aaa| 懂色av噜噜一区二区三区av| 三级小说欧洲区亚洲区| 日本高清视频在线播放| 日韩av手机版| 欧美一区免费视频| 97久久精品在线| 欧美精品在线观看播放| 91亚洲男人天堂| 亚洲一区日韩在线| 99精品国产高清一区二区麻豆| 91欧美在线视频| 久久久国产欧美| 亚洲ai欧洲av| 亚洲va码欧洲m码| 欧美日本精品在线| 精品人在线二区三区|