mysql邏輯備份(mysql dump的使用)


mysqldump 屬於MySQL客戶端工具
 
mysqldump備份工具對於MyISAM存儲引擎實現備份是溫備份,對innodb存儲引擎是可以實現熱備份。
使用mysqldump備份數據庫可以實現完全備份 + 二進制日志文件,這樣也算是完全備份 + 增量備份。
首先將這個數據庫備份下來這就是完全備份,然后以后數據的變化再每天進行對二進制日志進行備份這就是增量備份。
mysqldump命令的使用:
用法mysqldump  + 選項  +要備份的數據庫
 
常用選項:
db_name:       備份指定數據庫如果備份數據庫中某張表,db_name [tb_name]  備份時候並不包含創建數據庫命令,意味着以后想還原數據時候需要手動創建數據庫。
比如我們備份一個叫做file的數據庫:
假如Linux下面我們可以這樣
mysqldump -u root -p file >/root/sql/file.sql
這里叫表示備份到/root/sql/目錄下,命名為file.sql
windows下備份
mysqldump -u root -p file > D:\sqlback\file.sql
備份好之后我們就可以使用文本編輯器打開了
 
可以看到mysqldump的備份是將整個表中的數據備份為批量插入的insert語氣。因此以后如果你刪除了你所備份的數據庫。想導入你備份的數據庫是導入不了的,它里面沒有創建數據庫的命令。
例如我想嘗試導入一個備份數據庫:
 
在Linux下面直接切換到備份數據路徑下執行mysql < file.sql
 
現在我們創建一個叫做china的數據庫再將MySQL版中國省市區數據導入
mysql -u root -p china < MySQL版中國省市區數據表.sql
這樣執行表示導入這個MySQL版中國省市區數據表.sql備份數據到我們的china庫中
 
 
這種備份必須要在數據庫在線的情況下才能備份,如果此時數據庫非常繁忙時候時時刻刻都有寫入操作的話,千萬不能用這種方式進行備份,我們應該先進行鎖表再備份。步驟如下:
首先使用mysql客戶端連接上mysql以后,執行下面兩句
lock tables;  #鎖表,所有的表不能再寫入數據。可以讀數據
flush tables;   #將內存中的數據刷新保存到硬盤
或者執行flush tables with read lock;
備份完之后執行解鎖表命令,務必記得
unlock tables;
 
--master-data=n 
n的取值范圍為0-2   0表示不記錄二進制日志文件以及路徑位置
1表示以change master to 的方式記錄位置,可用於恢復啟動后直接啟動從服務器
2表示 以change master to的方式記錄位置,但是默認為被注釋掉
 
比如:
mysqldump -u root -p --master-data=2 file >D:\sqlback\file `date  + %F-%H-%M-%S`.sql
這里表示備份file庫到指定路徑下面以當前時間命名
如果報錯:mysqldump: Error: Binlogging on server not active
表示沒有開啟二進制日志,需要在配置文件開啟
通過這種方式備份以后。我們可以看到sql文件周會有一行
--change master to master_log_file='當前二進制日志文件名' master_log_pos=事件日志位置'
下次從二進制日志中備份數據時候就可以從這個二進制文件的這個位置往下備份就行了
 
--lock-tables   表示自動鎖定所有表,如果我們只是備份單個庫而鎖定所有表的話,這樣是不合理的,我們可以使用這個選項。單獨登陸mysql客戶端鎖定單張表,再進行備份
 
--flush_logs  :備份之前自動執行日志刷新到磁盤
 
如果指定庫中所有表的存儲引擎均為innodb可以使用
--single-transaction   啟動熱備份,啟動熱備份就無需我們手動鎖表
 
備份多個庫:
 
--all-databases;  備份所有庫
--databases db_name1,db_name2,,,,, ;   備份多個庫
這兩個命令備份會創建數據庫命令,因此還原時候就不需要再手動創建了
 
例如:
mysqldump -u root -p --single-transaction --all-databases --master-data = 2 --flush-logs >D:\sql  back\all.sql
 
這個表示我們將使用熱備份將所有的庫備份到D盤下面,命名為all.sql
 
--events  : 事件
--routines :存儲過程,存儲函數
--triggers:觸發器
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM