MySQL學習(十四) 備份和還原

2021-07-24 17:55:56 字數 3565 閱讀 7919

1.邏輯備份方法

使用mysqldump命令備份

mysqldump是mysql提供的乙個非常有用的資料庫備份工具。mysqldump命令執行時將資料庫備份成乙個文字檔案,

該檔案中實際上包含了多個create 和insert語句,使用這些語句可以重新建立表和插入資料

mysqldump的語法和選項

mysqldump -u user -p pwd -h host dbname[tbname,[tbname...]]>filename.sql

user表示使用者名稱;

host表示登入使用者的主機名稱;

pwd為登入密碼;

dbname為需要備份的資料庫名稱;

tbname為dbname資料庫中需要備份的資料表,可以指定多個需要備份的表;

右箭頭「>」告訴mysqldump將備份資料庫表定義和資料寫入備份檔案;

filename為備份檔案的名稱

如果要使用mysqldump備份多個資料庫,需要使用--databases引數。

使用--databases引數之後,必須指定至少乙個資料庫的名稱,多個資料庫名稱之間用空格隔開

使用mysqldump備份school庫和test庫

備份檔案裡的內容,基本上跟第乙個例子一樣,但是指明了裡面的內容那一部分屬於test庫,哪一部分屬於school庫

使用--all-databases不需要指定資料庫名稱

執行完畢之後會產生all_2014-7-10.sql的備份檔案,裡面會包含了所有資料庫的備份資訊

2.物理備份方法

1、直接複製整個資料庫目錄

因為mysql表儲存為檔案方式,所以可以直接複製mysql資料庫的儲存目錄以及檔案進行備份。

mysql的資料庫目錄位置不一定相同,在windows平台下,mysql5.6存放資料庫的目錄通常預設為

或者其他使用者自定義的目錄;

在linux平台下,資料庫目錄位置通常為/var/lib/mysql/,不同linux版本下目錄會有不同

這是一種簡單、快速、有效的備份方式。要想保持備份一致,備份前需要對相關表執行lock tables操作,然後對錶執行

flush tables。這樣當複製資料庫目錄中的檔案時,允許其他客戶繼續查詢表。需要flush tables語句來確保開始

備份前將所有啟用的索引頁寫入磁碟。

當然,也可以停止mysql服務再進行備份操作

這種方法雖然簡單,但並不是最好的方法。因為這種方法對innodb儲存引擎的表不適用。使用這種方法備份的資料最好還原

到相同版本的伺服器中,不同的版本可能不相容。

注意:在mysql版本中,第乙個數字表示主版本號,主版本號相同的mysql資料庫檔案格式相同

還原物理備份方法

1、直接複製整個資料庫目錄

因為mysql表儲存為檔案方式,所以可以直接複製mysql資料庫的儲存目錄以及檔案進行備份。

mysql的資料庫目錄位置不一定相同,在windows平台下,mysql5.6存放資料庫的目錄通常預設為

或者其他使用者自定義的目錄;

在linux平台下,資料庫目錄位置通常為/var/lib/mysql/,不同linux版本下目錄會有不同

這是一種簡單、快速、有效的備份方式。要想保持備份一致,備份前需要對相關表執行lock tables操作,然後對錶執行

flush tables。這樣當複製資料庫目錄中的檔案時,允許其他客戶繼續查詢表。需要flush tables語句來確保開始

備份前將所有啟用的索引頁寫入磁碟。

當然,也可以停止mysql服務再進行備份操作

這種方法雖然簡單,但並不是最好的方法。因為這種方法對innodb儲存引擎的表不適用。使用這種方法備份的資料最好還原

到相同版本的伺服器中,不同的版本可能不相容。

注意:在mysql版本中,第乙個數字表示主版本號,主版本號相同的mysql資料庫檔案格式相同

邏輯還原

1、使用mysql命令進行還原

對於已經備份的包含create、insert語句的文字檔案,可以使用myslq命令匯入資料庫中

備份的sql檔案中包含create、insert語句(有時也會有drop語句)。mysql命令可以直接執行檔案中的這些語句

其語法如下:

mysql -u user

-p [

dbname

]user是執行backup.sql中語句的使用者名稱;-p表示輸入使用者密碼;dbname是資料庫名

如果filename.sql檔案為mysqldump工具建立的包含建立資料庫語句的檔案,執行的時候不需要指定資料庫名

用mysql命令將school_2014-7-10.sql檔案中的備份匯入到資料庫中

mysql -u root -h 127.0.0.1

-p school

10.sql

執行語句之前我們必須建好school資料庫,如果不存在恢復過程將會出錯。

可以看到表資料都已經匯入到資料庫了

如果已經登入mysql,那麼可以使用source命令匯入備份檔案

使用source命令匯入備份檔案school_2014-7-10.sql

執行source命令前必須使用use 語句選擇好資料庫,不然會出現error 1046(3d000):no database selected 的錯誤

還有一點要注意的是只能在cmd介面下執行,不能在mysql工具裡面執行source命令,否則會報錯

因為cmd是直接呼叫mysql.exe來執行命令的

而這些mysql 編輯工具只是利用mysql connector連線mysql,來管理mysql並不是直接呼叫mysql.exe,所以執行source會報錯

物理還原

2、直接複製到資料庫目錄

如果資料庫通過複製資料庫檔案備份,可以直接複製備份檔案到mysql資料目錄下實現還原。通過這種方式還原時,

必須保證備份資料的資料庫和待還原的資料庫伺服器的主版本號相同。

而且這種方式只對myisam引擎有效,對於innodb引擎的表不可用

執行還原以前關閉mysql服務,將備份的檔案或目錄覆蓋mysql的data目錄,啟動mysql服務。

對於linux作業系統來說,複製完檔案需要將檔案的使用者和組更改為mysql執行的使用者和組,通常使用者是mysql,組也是mysql

MySQL備份和還原

1 備份 使用mysqldump在cmd下執行 1 先進入到 mysql安裝目錄的bin目錄下 執行命令 mysqldump hlocalhost uroot proot cms cms 20071226.sql 備份檔案cms 20071226.sql位於bin目錄下。2 還原 1 建立要還原的資...

MySQL備份和還原

mysql備份和還原,都是利用mysqldump mysql和source命令來完成的。1.win32下mysql的備份與還原 1.1 備份 開始選單 執行 cmd 利用 cd program files mysql mysql server 5.0 bin 命令進入bin資料夾 利用 mysqld...

MySQL備份和還原

mysql備份和還原,都是利用mysqldump mysql和source命令來完成的。1.win32下mysql的備份與還原 1.1 備份 開始選單 執行 cmd 利用 cd program files mysql mysql server 5.0 bin 命令進入bin資料夾 利用 mysqld...