日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

Mysql誤刪數(shù)據(jù)解決方案及kill語句原理

瀏覽:20日期:2023-10-11 15:22:21

mysql誤刪數(shù)據(jù)

使用delete語句誤刪數(shù)據(jù)行 使用drop table或者truncate table誤刪數(shù)據(jù)表 使用drop database語句誤刪數(shù)據(jù)庫 使用rm誤刪mysql整個實例

對于誤刪行

使用flashback工具閃回,把數(shù)據(jù)恢復回來。原理是修改binlog的內容,拿回原庫重放,需要確保binlog_format=row和binlog_row_imsge=Full 具體恢復時 如果是insert,將binlog event類型是write_rows event改為delete_rows event。 如果是delete則相反。 如果是update,binlog里有數(shù)據(jù)修改前和修改后的值,對調這兩行即可。 多個事物也是按照以上原則倒敘執(zhí)行。 預防:把sql_safe_updates參數(shù)設置為on。這樣一來,如果我們忘記在delete或者update語句中寫where條件,或者where條件里面沒有包含索引字段的話,這條語句的執(zhí)行就會報錯。

對于誤刪庫/表

需要使用全量備份,加增量日志的方式。要求線上有定期的全量備份嗎,并且實時備份binlog。

假如有人中午12點誤刪了一個庫,恢復數(shù)據(jù)的流程如下:

取最近一次全量備份,假設這個庫是一天一備,上次備份是當天0點;

用備份恢復出一個臨時庫;

從日志備份里面,取出凌晨0點之后的日志

把這些日志,除了誤刪除數(shù)據(jù)的語句外,全部應用到臨時庫。

Mysql誤刪數(shù)據(jù)解決方案及kill語句原理

注意:

為了加速數(shù)據(jù)恢復,如果這個臨時庫上有多個數(shù)據(jù)庫,你可以在使用mysqlbinlog命令時,加上一個?database參數(shù),用來指定誤刪表所在的庫。這樣,就避免了在恢復數(shù)據(jù)時還要應用其他庫日志的情況。

在應用日志的時候,需要跳過12點誤操作的那個語句的binlog:

加速恢復的方法:備份恢復出臨時實例之后,將這個臨時實例設置成線上備庫的從庫,

Mysql誤刪數(shù)據(jù)解決方案及kill語句原理

一個系統(tǒng)不可能備份無限的日志,你還需要根據(jù)成本和磁盤空間資源,設定一個日志保留的天數(shù)。如果你的DBA團隊告訴你,可以保證把某個實例恢復到半個月內的任意時間點,這就表示備份系統(tǒng)保留的日志時間就至少是半個月。

雖然“發(fā)生這種事,大家都不想的”,但是萬一出現(xiàn)了誤刪事件,能夠快速恢復數(shù)據(jù),將損失降到最小,也應該不用跑路了。而如果臨時再手忙腳亂地手動操作,最后又誤操作了,對業(yè)務造成了二次傷害,那就說不過去了。

延遲復制備庫

如果一個庫的備份特別大,或者誤操作的時間距離上一個全量備份的時間較長,比如一周一備的實例,在備份之后的第6天發(fā)生誤操作,那就需要恢復6天的日志,這個恢復時間可能是要按天來計算的。 延遲復制的備庫是一種特殊的備庫,通過 CHANGE MASTER TO MASTER_DELAY = N命令,可以指定這個備庫持續(xù)保持跟主庫有N秒的延遲。 比如你把N設置為3600,這就代表了如果主庫上有數(shù)據(jù)被誤刪了,并且在1小時內發(fā)現(xiàn)了這個誤操作命令,這個命令就還沒有在這個延遲復制的備庫執(zhí)行。這時候到這個備庫上執(zhí)行stopslave,再通過之前介紹的方法,跳過誤操作命令,就可以恢復出需要的數(shù)據(jù)。

對于rm刪除數(shù)據(jù)

只要不是惡意地把整個集群刪除,而只是刪掉了其中某一個節(jié)點的數(shù)據(jù)的話,HA系統(tǒng)就會開始工作,選出一個新的主庫,從而保證整個集群的正常工作。這時,你要做的就是在這個節(jié)點上把數(shù)據(jù)恢復回來,再接入整個集群。

當然了,現(xiàn)在不止是DBA有自動化系統(tǒng),SA(系統(tǒng)管理員)也有自動化系統(tǒng),所以也許一個批量下線機器的操作,會讓你整個MySQL集群的所有節(jié)點都全軍覆沒。應對這種情況,我的建議只能是說盡量把你的備份跨機房,或者最好是跨城市保存。Kill sql語句

Mysql誤刪數(shù)據(jù)解決方案及kill語句原理

session B是直接終止掉線程,什么都不管就直接退出嗎?顯然,這是不行的。

當對一個表做增刪改查操作時,會在表上加MDL讀鎖。所以,session B雖然處于blocked狀態(tài),但還是拿著一個MDL讀鎖的。如果線程被kill的時候,就直接終止,那之后這個MDL讀鎖就沒機會被釋放了。

kill并不是馬上停止的意思,而是告訴執(zhí)行線程說,這條語句已經不需要繼續(xù)執(zhí)行了,可以開始“執(zhí)行停止的邏輯了”。

實際上,當執(zhí)行kill query thread_id_b,mysql里處理kill命令的線程做了以下事情:

把session B的運行狀態(tài)改為了THD::KILL_QUERY 給session B的執(zhí)行線程發(fā)了一個信號。

因為像圖1的我們例子里面,session B處于鎖等待狀態(tài),如果只是把session B的線程狀態(tài)設置THD::KILL_QUERY,線程B并不知道這個狀態(tài)變化,還是會繼續(xù)等待。發(fā)一個信號的目的,就是讓session B退出等待,來處理這個THD::KILL_QUERY狀態(tài)。

以上包含了三層意思:

一個語句執(zhí)行過程中有多處埋點,在這些“埋點”的地方判斷線程狀態(tài),如果發(fā)現(xiàn)線程狀態(tài) 是THD::KILL_QUERY,才開始進入語句終止邏輯; 如果處于等待狀態(tài),必須是一個可以被喚醒的等待,否則根本不會執(zhí)行到“埋點”處; 語句從開始進入終止邏輯,到終止邏輯完全完成,是有一個過程的。

一個kill不掉的例子

執(zhí)行set global innodb_thread_concurrency=2,將InnoDB的并發(fā)線程上限數(shù)設置為2;然后,執(zhí)行下面的序列:

Mysql誤刪數(shù)據(jù)解決方案及kill語句原理

可以看到:

sesssion C執(zhí)行的時候被堵住了;

但是session D執(zhí)行的kill query C命令卻沒什么效果,

直到session E執(zhí)行了kill connection命令,才斷開了session C的連接,提示“Lost connection to MySQL server during query”,

但是這時候,如果在session E中執(zhí)行show processlist,你就能看到下面這個圖:

Mysql誤刪數(shù)據(jù)解決方案及kill語句原理

id=12這個線程的Commnad列顯示的是Killed。也就是說,客戶端雖然斷開了連接,但實際上服務端上這條語句還在執(zhí)行過程中。

在這個例子里,12號線程的等待邏輯是這樣的:每10毫秒判斷一下是否可以進入InnoDB執(zhí)行,如果不行,就調用nanosleep函數(shù)進入sleep狀態(tài)。

也就是說,雖然12號線程的狀態(tài)已經被設置成了KILL_QUERY,但是在這個等待進入InnoDB的循環(huán)過程中,并沒有去判斷線程的狀態(tài),因此根本不會進入終止邏輯階段。

而當session E執(zhí)行kill connection 命令時,是這么做的,

把12號線程狀態(tài)設置為KILL_CONNECTION; 關掉12號線程的網絡連接。因為有這個操作,所以你會看到,這時候session C收到了斷開連接的提示。

那為什么執(zhí)行show processlist的時候,會看到Command列顯示為killed呢?其實,這就是因為在執(zhí)行show processlist的時候,有一個特別的邏輯:

如果一個線程的狀態(tài)是KILL_CONNECTION,就把Command列顯示成Killed。

所以其實,即使是客戶端退出了,這個線程的狀態(tài)仍然是在等待中。只有等到滿足進入InnoDB的條件后,session C的查詢語句繼續(xù)執(zhí)行,然后才有可能判斷到線程狀態(tài)已經變成了KILL_QUERY或者KILL_CONNECTION,再進入終止邏輯階段。

kill無效的第一類情況,即:線程沒有執(zhí)行到判斷線程狀態(tài)的邏輯。可能也會由于IO壓力過大,讀寫IO的函數(shù)一直無法返回,導致不能及時判斷線程的狀態(tài)。

第二類情況,終止邏輯耗時較長 超大事物執(zhí)行期間被kill,回滾操作耗時很長。 大會滾操作,比如查詢過程中生成了很大的臨時文件,刪除臨時文件需要等待IO資源,導致耗時較長。 DDL執(zhí)行到最后階段,如果被kill,需要刪除中間過程的臨時文件,也需要IO資源。

ctrl+C,mysql實際上也是啟動了一個連接進程發(fā)送了kill query命令。

關于客戶端連接慢的誤解

如果庫里面的表很多,連接就會很慢。比如有一個庫有上萬個表,使用默認參數(shù)連接的時候,mysql會提供一個本地庫名和表名補全的功能:

執(zhí)行show databases 切到db1,執(zhí)行show tables 把這兩個命令的結果用于構建一個本地hash表。

第三步是耗時比較長的操作,也就是我們感知到慢不是連接滿,也不是服務端慢,而是客戶端慢。如果在這個連接中加上 -A,就可以取消自動補全功能,很快返回。

自動補全的效果就是,在輸入庫名或者表名的時候,將輸入前綴,可以使用tab自動補全或者顯示提示。實際如果自動補全用的不多,可以每次使用都加-A。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
国产精品久久久久久av公交车| 亚洲欧美一区在线| 狠狠爱成人网| 99热精品久久| 欧美激情国产在线| 一二三区精品| 视频精品一区| 日韩精品福利一区二区三区| 综合五月婷婷| 日韩福利在线观看| 日韩国产精品久久久久久亚洲| 亚洲视频电影在线| 婷婷综合福利| 日韩1区2区3区| 日韩av电影一区| 国产精品一区二区三区av| 国产美女亚洲精品7777| 国产午夜久久av| 国产精品黄网站| 丝袜美腿诱惑一区二区三区| 精品国产一区二区三区2021| 国产精品2023| 日韩综合在线| 亚洲a一区二区三区| 国产真实久久| 天使萌一区二区三区免费观看| 久久成人亚洲| 国产日韩1区| 精品中文字幕一区二区三区四区| 精品美女在线视频| 亚洲综合在线电影| 亚洲精品99| 日本欧洲一区二区| 欧美在线观看天堂一区二区三区| 麻豆精品在线播放| 国产一区二区三区亚洲| 日韩中文影院| 先锋亚洲精品| 日韩精品一区二区三区中文在线 | 九九综合九九| 日本午夜精品视频在线观看| 美女精品久久| 日韩国产欧美| 午夜在线播放视频欧美| 久久国产人妖系列| 亚洲aa在线| 国产高清一区| 亚洲一二av| 欧美成人久久| 国产模特精品视频久久久久| 精品99久久| 一区二区精彩视频| 日韩国产一区| 亚洲综合在线电影| 久久一区亚洲| 午夜精品成人av| 日韩精品国产精品| 色爱av综合网| 中文字幕亚洲影视| 日本99精品| 国产精品**亚洲精品| 精品网站aaa| 免费亚洲婷婷| 日韩三区免费| 亚洲欧美日韩国产| 日韩精品乱码av一区二区| 深夜福利视频一区二区| 国产日韩一区二区三区在线 | 欧美天堂一区二区| 日韩黄色在线观看| 久久久夜精品| 热久久免费视频| 亚洲丝袜美腿一区| 欧美久久久网站| 国产日产一区| 久久天堂成人| 国产精品香蕉| 久久久777| 国产一精品一av一免费爽爽| 成人精品高清在线视频| 日韩影院精彩在线| 精品国内亚洲2022精品成人| 久久久精品日韩| 综合一区在线| 999精品一区| 欧美亚洲免费| 欧美激情亚洲| 亚洲免费高清| 精品免费av一区二区三区| 韩日一区二区三区| 精品国产三区在线| 日本不卡免费高清视频在线| 蜜臀久久久99精品久久久久久| 久久国产精品美女| 亚洲一区二区三区无吗| 国内不卡的一区二区三区中文字幕| 亚洲综合小说| 亚洲精品88| 国产精品极品在线观看| 久久人人97超碰国产公开结果| 久久精品国产99国产精品| 少妇精品久久久一区二区| 91精品国产福利在线观看麻豆| 国产精品a久久久久| 久久婷婷亚洲| 国产99在线| 国产欧美在线| 日韩高清二区| 国产女优一区| 日韩在线观看不卡| 国产精品午夜av| 久久午夜影视| 色老板在线视频一区二区| 精品国产午夜| 国产精品v亚洲精品v日韩精品| 日本在线一区二区三区| 欧美日韩视频免费观看| 激情国产在线| 国产精品久久久久久久免费软件| 日韩制服丝袜先锋影音| 久久精品国产www456c0m| 久久久久久自在自线| 欧美日韩调教| 国产精品中文字幕制服诱惑| 每日更新成人在线视频| 欧洲毛片在线视频免费观看| 日韩av有码| 91免费精品| 国产极品久久久久久久久波多结野 | 亚洲成人三区| 日韩av在线播放网址| 久久久久伊人| 欧美日韩亚洲一区在线观看| 日韩1区2区3区| 亚洲香蕉视频| 日韩精品成人| 亚洲精品欧美| 91精品国产一区二区在线观看| 国产女优一区| 在线免费观看亚洲| 免费在线观看日韩欧美| 日韩精品一二区| 国产亚洲一区在线| 中文亚洲免费| 午夜精品一区二区三区国产| 美女尤物国产一区| 国产伦理久久久久久妇女| 综合在线一区| 国产精品调教视频| 91精品日本| 久久av国产紧身裤| 国产福利一区二区精品秒拍| 久久伊人久久| 美女久久精品| 日本韩国欧美超级黄在线观看| 黑森林国产精品av| 日韩欧美在线中字| 日韩国产激情| 91精品国产福利在线观看麻豆| 蜜臀久久精品| 亚洲不卡av不卡一区二区| 国产网站在线| 国产精品777777在线播放| 国产精品毛片视频| 欧美激情五月| 国际精品欧美精品| 成人精品久久| 97人人精品| 日韩一区自拍| 午夜久久福利| 美女久久一区| 日韩黄色在线观看| 欧美国产美女| 欧美在线影院| 国产精久久一区二区| 欧美韩日一区| 精品一区亚洲| 免费日本视频一区| 美女精品视频在线| 久久高清免费| 日韩欧美中文字幕电影| 欧美黑人做爰爽爽爽| 色老板在线视频一区二区| 影院欧美亚洲| 欧美成人精品午夜一区二区| 久久久久久久欧美精品| 久久男人天堂| 亚洲涩涩av| 国产精品白丝久久av网站| 国内精品福利| 视频一区视频二区中文| 国产精品最新| 91视频一区| 中文一区一区三区免费在线观 | 日韩黄色在线观看| 日本美女一区| 婷婷亚洲五月| 免费一级欧美在线观看视频| 天堂va在线高清一区| 免费视频一区二区三区在线观看|