MySql備份與還原 檔案遷移

2021-09-29 20:05:48 字數 2225 閱讀 6553

目錄

一、myisam遷移

二、innodb遷移

使用檔案遷移的方式更適用於資料量比較大的庫/表,使用mysqldump的話生成備份和還原都比較耗時。如果資料量不大,使用mysqldump還是挺方便的。詳見:mysqldump備份與還原

myisam和innodb的遷移方式不太一樣,所以需要分開來講。

myisam遷移只需要將表的三個檔案遷移到目標資料庫下面就可以。需要提前建立好目標資料庫。

1、在test資料庫下面建立乙個儲存引擎為myisam的表user,並插入幾條資料。

2、檢視user表生成的檔案,mysql會在data目錄下面根據資料庫名稱生成資料夾,資料夾下面就是資料庫的表檔案了。

myisam會生成三個檔案,如下所示:

3、將user表檔案複製到test_new資料庫資料夾下面

4、修改複製過來的檔案的所屬使用者/使用者組:chown mysql:mysql test_new/user.*

5、檢視test_new資料庫下面是否有user表,並能正常訪問user表

innodb遷移比myisam遷移稍微複雜一點,因為他對ibdata1檔案有依賴。如果是整庫遷移的話也只需要參考遷移myisam的方式將資料庫檔案和ibdata1複製過去就可以。

下面描述的是資料庫中的表遷移(不支援有外來鍵的表):

1、在資料庫test下面建立表user1,並新增幾條資料。在目標資料庫test_new下面建立相同的表user1。

2、在目標資料庫test_new的表user1上釋放表空間:alter table user1 discard tablespace;

3、在源資料庫test上建立.cfg 元資料檔案,注意不能退出當前資料庫連線,不然.cfg會被自動刪除:

flush tables user1 for export;

flush tables *** for export語句確保對命名表的更改已經重新整理到磁碟。當執行該語句時,innodb 會產生乙個.cfg 在同乙個資料庫的目錄表檔案。該.cfg 檔案包含匯入表空間檔案時用於模擬驗證的元資料。

並且會對錶新增唯讀鎖,將不能對此表增刪改操作

4、將源資料庫的表檔案拷貝到目標資料庫下面,並修改檔案訪問許可權,.frm是**式檔案,目標資料庫已經建立過了,可以不拷貝:chown mysql:mysql test_new/user1.* ;

5、重置目標資料庫test_new的表user1的表空間:alter table user1 import tablespace;

如果報錯:error 1100 (hy000): table 'user1' was not locked with lock tables; 則退出mysql(exit)重連;

可以看到目標資料庫test_new的表user1已經可以正常的增刪改查了。

6、最後釋放test資料庫表user1的唯讀鎖;如果期間退出過當前mysql連線,.cfg檔案被自動刪除了,那麼表鎖會被自動釋放掉:unlock table;

MySQL從原檔案備份

首先要使用myisam引擎,才能直接從資料庫原檔案份,這樣資料就和表結構都在乙個資料夾下.當然,首先要找到你的資料在 mysql show variables like datadir 檢視資料檔案在 在my.ini裡可以設定。引擎 在建表的時候可以指定引擎,也可以指定預設的引擎 在my.cnf中 ...

還原檔案或者移動檔案

如果我們在根目錄下建立了很多子目錄,然後現在想把子目錄裡的資料還原到根目錄下,我們可以用以下遍歷方法。當然可以選擇複製貼上或者剪下的方法,當機器比較卡的時候,用python來處理還是有點逼格的。import os import shutildef restore files path dst pat...

cmd git 還原檔案 git基本操作

git 是乙個版本管理工具,是可以在你電腦不聯網的情況下,只在本地使用的乙個版本管理工具,其作用就是可以讓你更好的管理你的程式,比如你原來提交過的內容,以後雖然修改了,但是通過git這個工具,可以把你原來提交的內容重現出來,這樣對於你後來才意識到的一些錯誤的更改,可以進行還原。關於github,這是...