自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

數(shù)據(jù)庫恢復不了? 不存在的!

運維 數(shù)據(jù)庫運維
工作中大家經(jīng)常會用到存儲服務,比如mysql、mongo、redis等,有DBA的話還好,能幫我們管理維護,定期備份等,但是我們往往自己在開發(fā)工具平臺時自己來搞數(shù)據(jù)庫,就忽略了定時備份,留下了安全隱患。果不其然,最近收到了團隊小伙伴的求助,服務器掛了,重啟后mysql服務起不來了。關鍵是沒有備份!!

工作中大家經(jīng)常會用到存儲服務,比如mysql、mongo、redis等,有DBA的話還好,能幫我們管理維護,定期備份等,但是我們往往自己在開發(fā)工具平臺時自己來搞數(shù)據(jù)庫,就忽略了定時備份,留下了安全隱患。果不其然,最近收到了團隊小伙伴的求助,服務器掛了,重啟后mysql服務起不來了。關鍵是沒有備份??!

[[234959]]

經(jīng)過一番折騰后將處理過程和踩的坑總結(jié)出來,供大家參考。MySQL crash 或者 MySQL 數(shù)據(jù)庫服務器 crash 會導致各種各樣的問題 ,比如日志損壞、數(shù)據(jù)文件損壞等等,本案例就是其中的一種,細心從日志中找的相關錯誤提示,逐步解決即可。首先在出現(xiàn)問題的A機器啟動mysql,看下情況。

查看mysql錯誤日志,找找原因

從日志內(nèi)容分析來看,數(shù)據(jù)庫在機器crash 導致文件損壞,重啟之后無法正?;謴?更無法正常對外提供服務。這里采用非常規(guī)手段,首先修改innodb_force_recovery參數(shù),使mysqld跳過恢復步驟,再將mysqld 啟動,把數(shù)據(jù)導出來,然后重新創(chuàng)建數(shù)據(jù)庫。

先來普及一下知識點:

[[234960]]

innodb_force_recovery可以設置為1-6,默認是0,大的數(shù)字包含前面所有數(shù)字的影響。

  1. (SRV_FORCE_IGNORE_CORRUPT):忽略檢查到的損壞頁。

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

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

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

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

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

注意當設置參數(shù)值大于0后,可以對表進行select,create,drop操作,但insert,update、 delete這類操作是不允許的。

將/etc/my.cnf下innodb_force_recovery值修改為4后,啟動mysql成功

馬上導出數(shù)據(jù)

 

  1. /usr/local/mysql/bin/mysqldump -uroot -h localhost -P 3306  -p --default-character-set=latin1 --add-drop-database --lock-tables --single-transaction -q --triggers -A --result-file=/home/fuhaitao/3306.sql 

導出成功后找一臺B機器,在mysql實例里導入這個sql文件。

 

  1. mysql -uroot -p -S /tmp/mysql3333.sock --default-character-set=latin1 < 3306.sql 

大功告成,馬上去看下數(shù)據(jù)是否正常

悲催。。。亂碼,查看mysql編碼方式

編碼是utf8,可是我在A機器導出的時候指定了字符集為latin1,所以修改編碼為Latin1看下

在查看下數(shù)據(jù)還是亂碼么

不行,說明導入的數(shù)據(jù)編碼與數(shù)據(jù)庫的編碼不一致,而且發(fā)現(xiàn)由于機器使用人員較多,每個數(shù)據(jù)庫編碼都不一致,有utf8的有l(wèi)atin1的,那么只能挨個庫來導了。

回到A機器將剛才是亂碼的database指定utf8編碼導出

將sql文件傳到B機器

在B機器上進行導入

執(zhí)行后在查看下數(shù)據(jù)是否正常

歐耶,成功。再將A機器mysql停掉,修改/etc/my.cnf 里的innodb_force_recovery值改為0。經(jīng)過一番折騰,終于把問題解決了,恢復了5年的數(shù)據(jù)。

[[234963]]

***給大家提幾點建議:

1. 如果公司有DBA團隊,盡量使用DBA團隊的存儲服務,他們能夠提供專業(yè)的支持。

2. 數(shù)據(jù)庫要做定時備份,避免特殊情況發(fā)生導致文件損壞,數(shù)據(jù)丟失。

3. 導入數(shù)據(jù)時要查看編碼方式,保證數(shù)據(jù)庫、數(shù)據(jù)文件、編輯器等編碼方式統(tǒng)一。 

責任編輯:龐桂玉 來源: Qtest之道
相關推薦

2010-05-17 18:03:31

MySQL 數(shù)據(jù)庫

2011-08-24 09:45:34

Oracle數(shù)據(jù)庫

2018-07-19 06:14:09

2017-12-26 08:25:57

硬盤數(shù)據(jù)丟失

2024-12-13 08:25:59

DML操作SQL

2021-01-25 07:21:24

GitHub 開源代碼下載

2023-09-12 08:02:13

viewport斷點

2024-07-22 08:03:55

2020-11-03 10:23:22

云計算容器技術

2024-07-16 08:03:43

2010-01-05 13:52:02

2015-10-20 10:30:59

創(chuàng)業(yè)時機

2009-09-12 09:34:18

Windows 7中國售價

2019-12-31 09:11:01

后臺Android系統(tǒng)

2012-05-16 11:35:16

SQL Server拒絕訪問

2017-12-07 14:57:13

404互聯(lián)網(wǎng)錯誤代碼

2018-02-07 14:41:16

數(shù)據(jù)科學家數(shù)據(jù)分析數(shù)學

2023-03-02 11:44:08

AI技術

2009-05-05 17:07:56

2016-12-13 09:05:27

大數(shù)據(jù)數(shù)據(jù)分析數(shù)據(jù)可視化
點贊
收藏

51CTO技術棧公眾號