最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

從ibd文件恢復(fù)MySQL數(shù)據(jù)的操作步驟及常見錯誤

 更新時間:2024年08月17日 08:59:31   作者:mikey桑  
MySQL數(shù)據(jù)恢復(fù)是數(shù)據(jù)庫管理中的一項重要任務(wù),尤其是在遭遇意外數(shù)據(jù)丟失、硬件故障或軟件錯誤時,下面這篇文章主要給大家介紹了關(guān)于從ibd文件恢復(fù)MySQL數(shù)據(jù)的操作步驟及常見錯誤,需要的朋友可以參考下

1.背景

前段時間,我的云服務(wù)器被病毒木馬入侵了,導(dǎo)致服務(wù)器所有服務(wù)全部下線,且22端口被侵,遠(yuǎn)程無法登錄,VNC模式也無法登錄。嘗試備份鏡像和云硬盤,并用原來的鏡像重裝系統(tǒng),依舊無法登錄。

遂只能采用xx云服務(wù)器上的救援模式,掛載一下原來的硬盤,把關(guān)鍵的文件導(dǎo)出到本地,再重裝系統(tǒng)將文件重新上傳。

MySQL數(shù)據(jù)庫數(shù)據(jù)的恢復(fù)的過程中,踩了一些坑,下文給出具體的恢復(fù)的操作過程。

2.操作步驟

2.1 備份源數(shù)據(jù)庫的ibd文件

整個MySQL數(shù)據(jù)庫數(shù)據(jù)的恢復(fù)都是基于ibd文件的,所以最重要的自然是將源數(shù)據(jù)庫的ibd文件保存下來。

這里要注意的是,MySQL默認(rèn)的數(shù)據(jù)保存地點在/var/lib/mysql目錄下,這個目錄下會有你創(chuàng)建的具體的schema的文件夾,以及這個schema中所有表的ibd文件,我們直接使用SFTP導(dǎo)出整個文件夾即可,后續(xù)的恢復(fù)操作都會基于ibd文件來展開。

如果你的MySQL之前安裝的時候是自己手動指定的安裝目錄,可以使用下面的命令查詢mysql的安裝目錄,然后備份的操作同上。

find / -name mysql

2.2 準(zhǔn)備數(shù)據(jù)庫建表語句

這里可能有些人沒有備份建表語句的習(xí)慣,大家可以先斷開自己本地的網(wǎng)絡(luò)連接,然后使用自己平時常用的數(shù)據(jù)庫連接工具,直接查看DDL語句,一般數(shù)據(jù)庫連接工具里面都有緩存的數(shù)據(jù)庫的建表語句。

2.3 重新安裝新數(shù)據(jù)庫

在新的系統(tǒng)上安裝好新數(shù)據(jù)庫,默認(rèn)安裝會安裝到地址/var/lib/mysql下。

2.4 新數(shù)據(jù)庫恢復(fù)數(shù)據(jù)具體步驟

1、創(chuàng)建數(shù)據(jù)庫schema

比如我們創(chuàng)建數(shù)據(jù)庫test,并切換到test數(shù)據(jù)庫。在MySQL中執(zhí)行如下SQL。

create database test;
use test;

2、創(chuàng)建表

這里直接把前面準(zhǔn)備好的數(shù)據(jù)庫建表語句全部執(zhí)行,在MySQL中執(zhí)行如下SQL。

create table xxx ...

3、移除表空間

這一步是直接把剛才建好的表空間移除,執(zhí)行命令如下,在MySQL中執(zhí)行如下SQL。

alter table xxx discard tablespace;

其中xxx為具體的表名,做完這一步的現(xiàn)象就是在/var/lib/mysql/test目錄下,剛才因為我們創(chuàng)建表所生成的ibd文件被刪除了。

4、上傳源數(shù)據(jù)庫ibd文件

前面我們已經(jīng)備份了源數(shù)據(jù)庫中表的ibd文件,現(xiàn)在將文件使用SFTP工具上傳到剛才的/var/lib/mysql/test目錄下。(注意:這里的/var/lib/mysql是我本地數(shù)據(jù)庫的安裝目錄,而test是我數(shù)據(jù)庫的名稱,各位具體情況需要根據(jù)自己數(shù)據(jù)庫的情況而定)

5、修改ibd文件權(quán)限

上一步通過SFTP上傳的ibd文件正常應(yīng)該是root用戶上傳的,我們需要使用mysql用戶來完成剩下的操作,在LinuxShell的命令行中執(zhí)行下面的命令。

chown mysql:mysql /var/lib/mysql/test/*.ibd

同理,上述的/var/lib/mysql/test是我本機的數(shù)據(jù)庫位置,各位實際操作的時候需要根據(jù)自己本機情況進(jìn)行相應(yīng)的修改,而*.ibd表示給所有的ibd文件都修改權(quán)限。

6、重導(dǎo)表空間

上一步我們已經(jīng)上傳好ibd文件,并修改了文件權(quán)限,這一步要做的就是讓MySQL識別到剛才上傳的數(shù)據(jù),重新導(dǎo)入表空間。這一步可以一個表一個表的進(jìn)行導(dǎo)入表空間,原因是因為有些表的ibd文件可能已經(jīng)不支持導(dǎo)入了,導(dǎo)入的時候會報錯,我們先把可以恢復(fù)的表恢復(fù)了,在MySQL中執(zhí)行如下SQL。

alter table xxx import tablespace;

3.常見錯誤

在操作恢復(fù)數(shù)據(jù)庫的過程中,我遇到了一些錯誤,并且導(dǎo)致了部分表無法恢復(fù)成功,在這里總結(jié)幾種。

3.1 權(quán)限問題

由于上傳的ibd文件是root用戶上傳的,導(dǎo)致在MySQL中執(zhí)行SQL會報錯,這個時候通過Shell工具修改ibd文件的權(quán)限即可,具體參考2.4節(jié)第5步。

3.2 報錯不存在CFG文件

這個報錯我網(wǎng)上查了一下,有的文章說,在數(shù)據(jù)庫ibd文件同級目錄下存在CFG文件,需要和ibd文件一起導(dǎo)入新的數(shù)據(jù)庫,但是我的MySQL版本是8.0.31并沒有相關(guān)的CFG文件。

后續(xù)查閱官方文檔,是因為我在最開始建表以后,使用ALTER操作新增了列,導(dǎo)致表結(jié)構(gòu)的存儲發(fā)生了變化,這被官方稱為DDL INSTANT,所以無法恢復(fù)。面對這種問題,建議大家平時對數(shù)據(jù)庫數(shù)據(jù)多多備份,減少數(shù)據(jù)丟失。

3.3 通過ibd文件恢復(fù)數(shù)據(jù)后自增主鍵問題報沖突

我有一些表使用了數(shù)據(jù)庫的自增主鍵,在恢復(fù)完數(shù)據(jù)以后,重新部署了應(yīng)用,在使用自增主鍵的表中出現(xiàn)了主鍵沖突的情況。

原因是通過原來的ibd文件導(dǎo)入數(shù)據(jù)并沒有同步相應(yīng)的系統(tǒng)表的結(jié)構(gòu),所以新的MySQL認(rèn)為自增主鍵還是從1開始算,實際上數(shù)據(jù)庫中的數(shù)據(jù)自增列早已增長到一定數(shù)目了。針對這個問題,我目前沒有想到好的方法,只能先將恢復(fù)好的數(shù)據(jù)庫數(shù)據(jù)導(dǎo)出到SQL,然后刪除原表重新建表以后,再重新導(dǎo)入。

當(dāng)然如果沒有使用到系統(tǒng)能力(比如自增主鍵)的表,是無需刪除表再重新導(dǎo)入數(shù)據(jù)的。

總結(jié)

到此這篇關(guān)于從ibd文件恢復(fù)MySQL數(shù)據(jù)的操作步驟及常見錯誤的文章就介紹到這了,更多相關(guān)從ibd文件恢復(fù)MySQL數(shù)據(jù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • MySQL中視圖的使用及多表INNER JOIN的技巧分享

    MySQL中視圖的使用及多表INNER JOIN的技巧分享

    做多表關(guān)聯(lián)查詢,如果表間關(guān)系非常清晰,結(jié)構(gòu)簡單,使用視圖的方式比自己反復(fù)寫復(fù)雜跨表SQL要容易的多
    2014-06-06
  • MYSQL事件查看器使用介紹

    MYSQL事件查看器使用介紹

    MYSQL事件查看器使用介紹,需要的朋友可以參考下
    2012-07-07
  • MySQL遷移KingbaseESV8R2的實現(xiàn)步驟

    MySQL遷移KingbaseESV8R2的實現(xiàn)步驟

    本文主要介紹了MySQL遷移KingbaseESV8R2的實現(xiàn)步驟,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • MYSQL中鎖的分類與加鎖方式小結(jié)

    MYSQL中鎖的分類與加鎖方式小結(jié)

    MySQL通過表級鎖和行級鎖兩種機制來控制并發(fā)事務(wù)對數(shù)據(jù)的訪問,以避免數(shù)據(jù)不一致、臟讀和幻讀等問題,表級鎖包括顯式鎖、元數(shù)據(jù)鎖和意向鎖,而行級鎖包括記錄鎖、間隙鎖和臨鍵鎖,本文介紹MYSQL中鎖的分類與加鎖方式小結(jié),感興趣的朋友跟隨小編一起看看吧
    2026-03-03
  • Mysql進(jìn)行操作時鎖的具體行為示例詳解

    Mysql進(jìn)行操作時鎖的具體行為示例詳解

    MySQL鎖的使用需要根據(jù)具體的應(yīng)用場景來選擇,例如,如果應(yīng)用以查詢?yōu)橹?少量更新,表鎖可能是更合適的選擇,這篇文章主要介紹了Mysql進(jìn)行操作時鎖的具體行為,需要的朋友可以參考下
    2025-09-09
  • mysql查詢表是否被鎖的方法

    mysql查詢表是否被鎖的方法

    在本篇文章里小編給大家分享的是關(guān)于mysql查詢表是否被鎖的方法,有需要的朋友們可以參考下。
    2020-10-10
  • mysql 8.0.12 安裝使用教程

    mysql 8.0.12 安裝使用教程

    這篇文章主要為大家詳細(xì)介紹了mysql 8.0.12 安裝使用教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-08-08
  • MySQL中表的幾種連接方式

    MySQL中表的幾種連接方式

    這篇文章主要給大家介紹了關(guān)于MySQL中表的幾種連接方式,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • 一條慢SQL語句引發(fā)的改造之路

    一條慢SQL語句引發(fā)的改造之路

    這篇文章主要給大家介紹了關(guān)于一條慢SQL語句引發(fā)的相關(guān)資料,文中通過實例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2022-03-03
  • SQL中的distinct的使用方法

    SQL中的distinct的使用方法

    這篇文章主要介紹SQL中的distinct的使用方法,distinct用來查詢不重復(fù)記錄的條數(shù),即用distinct來返回不重復(fù)字段的條數(shù),文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2023-05-05

最新評論

娄底市| 桃江县| 石棉县| 紫金县| 广汉市| 高阳县| 沅陵县| 甘德县| 铜鼓县| 南昌市| 温泉县| 肇州县| 荆州市| 沾益县| 永济市| 绥棱县| 保靖县| 永川市| 永善县| 余庆县| 大竹县| 宣汉县| 越西县| 镇雄县| 苍梧县| 许昌市| 昌邑市| 天台县| 吉水县| 东台市| 海门市| 斗六市| 南雄市| 平泉县| 若尔盖县| 阿合奇县| 潞西市| 庐江县| 清镇市| 宜春市| 临沧市|