欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

MySQL單表恢復(fù)的步驟

 更新時(shí)間:2020年08月14日 09:07:12   作者:billy鵬的足跡  
這篇文章主要介紹了MySQL單表恢復(fù)的步驟,幫助大家更好的理解和學(xué)習(xí)MySQL,感興趣的朋友可以了解下

  正休息的時(shí)候一個(gè)電話將我的睡意完全打散,“開發(fā)童鞋寫update SQL的時(shí)候忘了加where條件了”,相信每一個(gè)DBA同學(xué)聽到這個(gè)消息的時(shí)候都有罵街的沖動(dòng)吧。萬(wàn)幸只是單表寫花了,而不是哪位大神在DB里面drop table玩。雖然已經(jīng)很久沒進(jìn)行單表恢復(fù)了,但是還好步驟都印在腦海中,沒有出問題的就恢復(fù)完了。

  言歸正傳,記錄一下單表恢復(fù)的步驟和關(guān)鍵點(diǎn),提醒自己也提醒大家。

第一步:

  找一臺(tái)性能比較高的服務(wù)器作為還原機(jī),從備份池中將最近的一次備份恢復(fù)到這臺(tái)還原機(jī)上。當(dāng)然這個(gè)前提是你有備份,且備份是可用的。(什么? 你告訴我沒有做備份,那么同學(xué)你可以洗洗睡了,準(zhǔn)備享受自由的空氣吧。)

  注意:這個(gè)時(shí)候不要啟動(dòng)同步,務(wù)必保持不同步狀態(tài)。

  ps:多說一嘴,對(duì)于DBA來說,備份是最重要的一個(gè)環(huán)節(jié),不但要有,還要定期檢查備份是否是可用的,這是DBA的必要素質(zhì)之一。

第二步:

  聯(lián)系那個(gè)犯錯(cuò)的開發(fā)同學(xué)要錯(cuò)誤的SQL語(yǔ)句和時(shí)間點(diǎn),然后從主庫(kù)的binlog中找到這條SQL的執(zhí)行點(diǎn)。具體操作舉例如下

### 使用mysqlbinlog將二進(jìn)制日志轉(zhuǎn)化為明文SQL日志
mysqlbinlog mysql-bin.000123 > /data1/000123.sql

### 使用linux的grep命令根據(jù)“key word”找到那個(gè)引發(fā)數(shù)據(jù)寫花的SQL所在的位置
cat 000123.sql |grep -C 10 'key word' --color

### 標(biāo)紅色的是問題SQL,及這條SQL開始的時(shí)間點(diǎn),及下一條SQL的開始時(shí)間點(diǎn),這2個(gè)pos位置非常重要
# at 20393709
#131205 20:55:08 server id 18984603 end_log_pos 20393779 Query thread_id=16296016 exec_time=0 error_code=0
SET TIMESTAMP=1386248108/*!*/;
BEGIN
/*!*/;
# at 20393779
#131205 20:55:08 server id 18984603 end_log_pos 20394211 Query thread_id=16296016 exec_time=0 error_code=0
SET TIMESTAMP=1386248108/*!*/;
update table tablename set names='xxxx';
# at 20394211
#131205 20:55:08 server id 18984603 end_log_pos 20394238 Xid = 92465981
COMMIT/*!*/;
# at 20394238
#131205 20:55:10 server id 18984603 end_log_pos 20394308 Query thread_id=16296017 exec_time=0 error_code=0
SET TIMESTAMP=1386248110/*!*/;
BEGIN

第三步:

  根據(jù)第二步得到的pos位置,啟動(dòng)同步關(guān)系,但是需要停止到問題SQL之前的pos位置上,具體使用如下命令

### pos位置等于問題SQL begin的pos位置
slave start until master_log_file='mysql-bin.000123',master_log_pos=20393709;

  然后跳過這個(gè)問題SQL,將同步change到下一個(gè)pos位置上,具體使用如下命令

### pos位置等于問題SQL commit之后的pos位置
change master to master_log_file='mysql-bin.000123',master_log_pos=20394238;

  從上面兩條命令我們看出,第二步得到的兩個(gè)pos位置很關(guān)鍵。

第四步:

  在主庫(kù)上將寫花的表改名,其目的有二個(gè),其一,停止對(duì)這個(gè)表的寫入(當(dāng)然這對(duì)業(yè)務(wù)會(huì)有一定的影響,會(huì)出現(xiàn)一段時(shí)間內(nèi)的寫入失敗報(bào)警,需要提前和業(yè)務(wù)部門聯(lián)系好),其二,一旦恢復(fù)失敗,至少還有一個(gè)寫花的表存在,可以很快的恢復(fù)成我們恢復(fù)操作之前的狀態(tài)。

### 在主庫(kù)上執(zhí)行
rename table tablename to tablename_bak;

  然后在還原機(jī)上執(zhí)行dump操作,執(zhí)行這個(gè)操作的使用需要注意,如果表中有中文字符,一定記得需要添加--default-chararter-set參數(shù)

mysqldump -uusername -ppassword -S/tmp/mysql.sock dbname tablename --opt> tablename.sql

  最后將這個(gè)文件傳輸?shù)街鲙?kù)服務(wù)器上,完成最后的恢復(fù)操作

### 可以選擇登陸mysql之后
source tablename.sql;

### 也可以在cmd界面
mysql -uusername -ppassword -S/tmp/mysql.sock < tablename.sql

  當(dāng)然也可以不這么麻煩,直接執(zhí)行如下命令,但是個(gè)人習(xí)慣處于保存歷史操作記錄和中間結(jié)果的需要,我都是按照以上步驟完成,這樣可以保存一個(gè)隨時(shí)可以恢復(fù)的文本文件,心理更踏實(shí)一點(diǎn)。

### 快速的方法可以按照如下操作,在還原機(jī)上的命令
mysql -uusername -ppassword -S /tmp/mysql.sock dbname tablename | mysql -uusername -ppassowrd -hhost -Pport

  通過以上命令就可以直接完成dump并導(dǎo)入的操作了,缺點(diǎn)就是不會(huì)有一份備份文件生成。

第五步:

  基本DBA的事情就沒有了,這時(shí)候就需要告訴開發(fā)同學(xué)恢復(fù)完畢,進(jìn)行應(yīng)用測(cè)試及數(shù)據(jù)正確性效驗(yàn)了。如果一切都沒有問題之后,我們需要將剛才rename的表drop掉,整個(gè)恢復(fù)操作就算大功告成了。

drop table if exists tablename_bak;

  數(shù)據(jù)庫(kù)恢復(fù)是每個(gè)DBA必備的技能,需要熟練掌握,希望度過這篇文章的同學(xué)們都可以輕車熟路的進(jìn)行恢復(fù)操作。

  ps:這個(gè)操作,最好一萬(wàn)年都不要用一次就最好了。

以上就是MySQL單表恢復(fù)的步驟的詳細(xì)內(nèi)容,更多關(guān)于mysql單表恢復(fù)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • MySQL Innodb關(guān)鍵特性之插入緩沖(insert buffer)

    MySQL Innodb關(guān)鍵特性之插入緩沖(insert buffer)

    這篇文章主要介紹了MySQL Innodb關(guān)鍵特性之插入緩沖的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)使用Innodb存儲(chǔ)引擎,感興趣的朋友可以了解下
    2021-04-04
  • mysql 5.7安裝 MySQL 服務(wù)無法啟動(dòng)但是服務(wù)沒有報(bào)告任何錯(cuò)誤

    mysql 5.7安裝 MySQL 服務(wù)無法啟動(dòng)但是服務(wù)沒有報(bào)告任何錯(cuò)誤

    這篇文章主要介紹了mysql 5.7安裝 MySQL 服務(wù)無法啟動(dòng)但是服務(wù)沒有報(bào)告任何錯(cuò)誤的相關(guān)資料,需要的朋友可以參考下
    2017-04-04
  • mysql 8.0.14 安裝配置方法圖文教程(通用)

    mysql 8.0.14 安裝配置方法圖文教程(通用)

    這篇文章主要為大家詳細(xì)介紹了mysql 8.0.14 安裝配置方法圖文教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-02-02
  • MySQL數(shù)據(jù)庫(kù)中遇到no?database?selected問題解決辦法

    MySQL數(shù)據(jù)庫(kù)中遇到no?database?selected問題解決辦法

    這篇文章主要給大家介紹了關(guān)于MySQL數(shù)據(jù)庫(kù)中遇到no?database?selected問題的解決辦法,這是MySQL數(shù)據(jù)庫(kù)的錯(cuò)誤提示,意思是沒有選擇數(shù)據(jù)庫(kù),在使用MySQL命令行操作時(shí)需要先選擇要操作的數(shù)據(jù)庫(kù),否則就會(huì)出現(xiàn)這個(gè)錯(cuò)誤,需要的朋友可以參考下
    2024-03-03
  • Mysql半同步復(fù)制原理及問題排查

    Mysql半同步復(fù)制原理及問題排查

    這篇文章主要介紹了Mysql半同步復(fù)制原理及問題排查 的相關(guān)資料,需要的朋友可以參考下
    2016-01-01
  • 淺談mysql雙層not exists查詢執(zhí)行流程

    淺談mysql雙層not exists查詢執(zhí)行流程

    本文主要介紹了淺談mysql雙層not?exists查詢執(zhí)行流程,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06
  • MySQL數(shù)據(jù)分析存儲(chǔ)引擎示例講解

    MySQL數(shù)據(jù)分析存儲(chǔ)引擎示例講解

    這篇文章主要為大家介紹了MySQL數(shù)據(jù)分析關(guān)于存儲(chǔ)引擎的示例講解,搞懂存儲(chǔ)引擎會(huì)對(duì)大家在數(shù)據(jù)分析方面有很大的幫助,有需要的朋友可以借鑒參考下
    2021-10-10
  • mybatis實(shí)戰(zhàn)之?dāng)r截器解讀

    mybatis實(shí)戰(zhàn)之?dāng)r截器解讀

    這篇文章主要介紹了mybatis實(shí)戰(zhàn)之?dāng)r截器解讀,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • 教你為MySQL數(shù)據(jù)庫(kù)換擋加速

    教你為MySQL數(shù)據(jù)庫(kù)換擋加速

    如果你是個(gè)賽車手,并且按一下按鈕就能夠立即更換引擎而不需要把車開到車庫(kù)里去換,那會(huì)是什么感覺呢?MySQL數(shù)據(jù)庫(kù)為開發(fā)人員所做的就好像是按按鈕換引擎;它讓你選擇數(shù)據(jù)庫(kù)引擎,并給你一條簡(jiǎn)單的途徑來切換它。
    2010-02-02
  • mysql中格式化日期詳解

    mysql中格式化日期詳解

    最近因?yàn)楣ぷ餍枰?,要使用mysql查詢記錄可如果有時(shí)間戳字段時(shí),查看結(jié)果不方便,不能即時(shí)看到時(shí)間戳代表的含義,所以這篇文章就提供mysql格式換時(shí)間函數(shù),可以方便的看到格式化后的時(shí)間。有需要的朋友們可以參考借鑒,下面來一起看看吧。
    2016-11-11

最新評(píng)論