備份分為邏輯備份和實體備份。邏輯備份就是備份所有的sql語句操作,實體備份就是備份整個資料庫結果。邏輯備份備份速度快,但是資料多時,恢複起來比較慢,實體備份相對比較占空間,但是恢複速度快。實體備份又分為全備份,增量備份,差異備份,全備份就是把所有的資料都備份一下,增量備份是和上一次備份做對比,隻備份增加那一部分,差異備份是和上一次全備份做對比,備份增加的那一部分。增量備份和差異備份相比較,增量備份占用空間比較小,但是恢複資料相對比較麻煩,因為增量備份需要一次次復原,最後才能恢複,差異備份占用空間比較大,但是恢複資料比較友善,差異備份隻需要進行一次復原就可以恢複資料。
邏輯備份的過程
1、在資料庫運作狀态下使用mysqldump對資料庫進行備份,分為單個資料庫或者多個以及全部
邏輯備份恢複過程
1、在資料庫運作狀态下,使用mysqldump對資料庫進行恢複,單個庫恢複必須保證這個庫存在,多個以及全部不需要保證庫存在
備份指令
1、對遠端資料庫進行備份
單個庫備份: mysqldump -h 主機位址 -u使用者名 -p密碼 庫名> 備份存儲路徑/備份檔案名稱.sql
多個庫備份: mysqldump -h 主機位址-u使用者名 -p密碼 -B 庫1 庫2 > 備份存儲路徑/備份檔案名稱.sql
所有庫備份: mysqldump -h 主機位址-u使用者名 -p密碼 -A > 備份存儲路徑/備份檔案名稱.sql
2、對本地資料庫進行備份
單個庫備份: mysqldump -u使用者名 -p密碼 庫名> 備份存儲路徑/備份檔案名稱.sql
多個庫備份: mysqldump -u使用者名 -p密碼 -B 庫1 庫2 > 備份存儲路徑/備份檔案名稱.sql
所有庫備份: mysqldump -u使用者名 -p密碼 -A > 備份存儲路徑/備份檔案名稱.sql
恢複指令
1、在指令行下
單個庫恢複:mysql -u使用者名 -p密碼 庫名< 備份路徑/備份檔案名稱.sql
多個庫以及全部庫恢複:mysql -u使用者名 -p密碼 < 備份路徑/備份檔案名稱.sql
2、在資料庫中恢複指令
臨時關閉log_bin (如果開啟了二進制日志,在恢複資料庫時候,所有增删改查操作會被寫入到二進制檔案中,這樣容易導緻資料的不一緻,是以一般會臨時關閉,恢複資料以後再打開) set sql_log_bin=0
單個資料庫恢複:建立資料庫;使用資料庫;source 備份檔案存儲位置/備份檔案名.sql
多個資料庫恢複:source 備份檔案存儲位置/備份檔案名.sql
邏輯備份實驗:
資料庫中包含school和student兩個庫,對所有庫進行備份,對school備份,對school和student兩個一起備份
對所有庫進行備份:
[[email protected] tmp]# mysqldump -uroot -p’Jqb19910312,’ -A > all.sql
mysqldump: [Warning] Using a password on the command line interface can be insecure.
對單個school庫進行備份:
[[email protected] tmp]# mysqldump -uroot -p’Jqb19910312,’ school > /tmp/school.sql
mysqldump: [Warning] Using a password on the command line interface can be insecure.
對school和student兩個庫進行備份:
[[email protected] tmp]# mysqldump -uroot -p’Jqb19910312,’ -B school student > /tmp/school_student.sql
mysqldump: [Warning] Using a password on the command line interface can be insecure.
邏輯備份恢複操作:
(邏輯備份恢複是在資料庫運作狀态下進行的,删除資料庫不能通過删除目錄,隻能通過sql語句删除,直接删除資料庫存儲目錄可能會導緻資料庫無法恢複,删除存儲資料庫目錄以後想要恢複隻能重新開機mysql服務,并且恢複時候有可能資料丢失)
删除資料庫school:drop database shcool;
恢複資料庫: create school; source /tmp/school.sql;use school;show tables;
恢複多個資料庫可以自己驗證,實體備份在下一篇介紹