主頁 > 知識庫 > MySQL 丟失數(shù)據(jù)的原因及解決

MySQL 丟失數(shù)據(jù)的原因及解決

熱門標(biāo)簽:400電話辦理服務(wù)價(jià)格最實(shí)惠 南太平洋地圖標(biāo)注 北京金倫外呼系統(tǒng) 武漢電銷機(jī)器人電話 html地圖標(biāo)注并導(dǎo)航 400電話變更申請 大豐地圖標(biāo)注app 催天下外呼系統(tǒng) 呂梁外呼系統(tǒng)

前言

最近偶爾會收到用戶反饋數(shù)據(jù)不見了,數(shù)據(jù)丟失了的問題。從現(xiàn)象上來看,這類問題在數(shù)據(jù)庫層面就是緊急程度最高的那一類了,拋開客觀條件來說,針對這一類問題的恢復(fù)手段幾乎只有備份恢復(fù)+回放 Binlog,耗時(shí)一般比較久,對業(yè)務(wù)的影響也會很大。

但是,作為一個(gè)以穩(wěn)定為主的軟件,其實(shí)丟數(shù)據(jù)的概率是非常低的,所以這些反饋的問題,是不是真的“丟失數(shù)據(jù)了”?

問題描述

某日中午接到用戶反饋,用業(yè)務(wù)賬號登錄數(shù)據(jù)庫以后,業(yè)務(wù)庫不見了。

原因分析

收到這個(gè)問題的時(shí)候,氣氛還是很緊張的,一邊聯(lián)系用戶授權(quán)登錄數(shù)據(jù)庫排查,一邊也在和用戶溝通,看看最近進(jìn)行了哪些變更。

登錄到數(shù)據(jù)庫之后,發(fā)現(xiàn)業(yè)務(wù)庫是存在的,結(jié)合用戶的反饋:“業(yè)務(wù)庫不見了”,初步判斷是業(yè)務(wù)賬號沒有權(quán)限,用show grants查看之后,發(fā)現(xiàn)業(yè)務(wù)賬號的權(quán)限只有 USAGE,類似如下效果:

mysql> show grants;
+----------------------------------+
| Grants for test@%                |
+----------------------------------+
| GRANT USAGE ON *.* TO 'test'@'%' |
+----------------------------------+
1 row in set (0.00 sec)

由于只有最低的權(quán)限,這個(gè)賬號顯然是“看不到業(yè)務(wù)數(shù)據(jù)的”,所以重新授權(quán)之后,問題解決了。事后排查發(fā)現(xiàn)最初的授權(quán)操作發(fā)生在一個(gè)其他的同名賬號上,類似于:

mysql> show grants;
+-------------------------------------------------------------+
| Grants for test@10.120.117.%                                |
+-------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON prd_name.* TO 'test'@'10.120.117.%' |
+-------------------------------------------------------------+
1 row in set (0.00 sec)

mysql>

拓展一下

對于“丟失數(shù)據(jù)”這個(gè)現(xiàn)象來看,如果是“丟失”了整個(gè)庫級別的數(shù)據(jù),但是數(shù)據(jù)庫本身又一切正常的話,其實(shí)有蠻大的可能性和這個(gè)案例是一樣的問題:權(quán)限錯(cuò)誤。引起這種問題的可能性一般是兩個(gè):1. 登錄的賬號匹配到了同名的其他賬號;2. 授權(quán)出現(xiàn)了問題,導(dǎo)致業(yè)務(wù)賬號沒有權(quán)限。當(dāng)然,最糟糕的情況肯定是drop database的操作,通過解析 binlog 才能定位到執(zhí)行這個(gè)操作的時(shí)間。

另外一類屬于“丟失部分?jǐn)?shù)據(jù)”,比如某張表不見了,或者是表的某些數(shù)據(jù)不見了等等。嚴(yán)格的來說,這一類問題也有可能是權(quán)限錯(cuò)誤引起的,因?yàn)?MySQL 的權(quán)限控制確實(shí)可以做到表和列級別,只是現(xiàn)實(shí)中一般不會用到。大多數(shù)時(shí)候是誤操作,比如 update 或者 delete 的時(shí)候沒有 where 條件。這種時(shí)候只能通過歷史備份,再利用 binlog 進(jìn)行恢復(fù),這個(gè)操作在騰訊云上封裝成了“回檔”的功能。

總結(jié)一下

遇到這一類問題時(shí),可以先花一點(diǎn)觀察一下問題的現(xiàn)象,可能只需要幾秒鐘的時(shí)間重新授權(quán)就解決這類“丟失數(shù)據(jù)”的非常緊急且非常嚴(yán)重問題。

以上就是MySQL 丟失數(shù)據(jù)的原因及解決的詳細(xì)內(nèi)容,更多關(guān)于MySQL 丟失數(shù)據(jù)的資料請關(guān)注腳本之家其它相關(guān)文章!

您可能感興趣的文章:
  • 解決docker重啟redis,mysql數(shù)據(jù)丟失的問題
  • MySQL使用Replace操作時(shí)造成數(shù)據(jù)丟失的問題解決
  • 防止服務(wù)器宕機(jī)時(shí)MySQL數(shù)據(jù)丟失的幾種方案
  • MySQL 數(shù)據(jù)丟失排查案例

標(biāo)簽:龍巖 南充 無錫 西寧 徐州 麗水 自貢 迪慶

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《MySQL 丟失數(shù)據(jù)的原因及解決》,本文關(guān)鍵詞  MySQL,丟失,數(shù)據(jù),的,原因,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《MySQL 丟失數(shù)據(jù)的原因及解決》相關(guān)的同類信息!
  • 本頁收集關(guān)于MySQL 丟失數(shù)據(jù)的原因及解決的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章