您好,登錄后才能下訂單哦!
mysqldump是mysql用于轉存儲數據庫的實用程序。它主要產生一個SQL腳本,其中包含從頭重新創建數據庫所必需的命令CREATE TABLE INSERT等
mysqldump 語法 :
默認配置讀取路徑: /etc/mysql/my.cnf /etc/my.cnf ~/.my.cnf
Usage: mysqldump [OPTIONS] database [tables]
OR mysqldump [OPTIONS] --databases [OPTIONS] DB1 [DB2 DB3...]
OR mysqldump [OPTIONS] --all-databases [OPTIONS]
常用參數 : -u, --user=name 指定用戶 -h, --host=name 指定主機 -p, --password[=name] 指定密碼 -A, --all-databases 指定所有庫,-A與--all-databases不同時使用 -B, --databases 只指定--databases表示備份單個數據庫;多數據庫之間使用空格隔開; 如果不指定--databases表示備份整個數據庫;只指定dbname表示備份單張表;多表之間使用空格隔開 --master-data[=#] 0 表示關閉,默認值為 0 1 表示開頭打印CHANGE MASTER命令信息,在復制場景中有用 2 表示添加注釋信息,記錄當前所處二進制日志及所處位置 --single-transaction 如果全部為 InnoDB引擎表,則不需要使用 --lock-all-tables; 基于此選項能實現熱備InnoDB表;會啟動單個大事務,對全局服務影響可能是持久的 --lock-all-tables 執行備份前請求鎖定表,一般只鎖定當前要備份的數據庫及表 --add-drop-database 在恢復之前先刪除已經存在的對應數據庫 --add-drop-table 在恢復之前先刪除已經存在的對應表 -C, --compress 將數據先壓縮后通過網絡傳輸 -E, --events 備份數據同時,備份事件調度器代碼 -R, --routines 備份數據同時,備份存儲過程和存儲函數 -d, --no-data 表示只備份表結構不備份數據,復制表結構、空庫至其它服務器時有用.其它任何時候不可用 --opt 同時啟動各種高級選項
備份方式 :
全量+增量+二進制日志
前提需要在配置中添加參數 :
default-storage-engine = InnoDB 設置默認存儲引擎為InnoDB
innodb_file_per_table=1 設置每表單個表空間
log-bin=mysql-bin 啟用二進制功能
備份過程 : 全量備份 : 使用InnoDB引擎,備份使用--single-transaction選項不需要鎖定表即實現熱備;使用非InnoDB引擎,備份需要使用--lock-all-tables選項進行請求鎖定所有表后開始備份 mysqldump -uroot -pmypass --single-transaction --all-databases --master-data=2 > /backup/mysql_fullbak.sql 增量備份 : mysql>SHOW MASTER STATUS; 查看當前處于哪個日志文件及位置 less /backup/mysql_fullbak.sql 查看從哪個位置開始 mysqlbinlog --start-position=4579 --stop-position=4868 mysql-bin.000015 > /backup/increment.sql 指定開始及結束位置導出成增量備份 二進制日志備份: mysql>INSERT INTO test (Name,Age) VALUES ('tom',18); 增量備份后,插入一條數據 mysql>DROP DATABASE hello; 此時刪除數據庫 mysql>SHOW MASTER STATUS; 查看當前處于哪個日志文件及位置 mysqlbinlog --start-position=4868 mysql-bin.000015 查看數據庫崩潰前二進制日志開始位置,結束位置必須是數據庫刪除之前位置 mysqlbinlog --start-position=4868 --stop-position=5062 mysql-bin.000015 > /tmp/hello.sql 將二進制日志啟動時位置至崩潰前位置數據導出
恢復過程 : 前提 : 清空數據目錄下所有文件,重新初始化數據庫 mysql>SET GLOBAL sql_log_bin=0; 恢復時需要臨時關閉二進制日志,如不關閉,恢復數據將記錄進二進制日志增加日志管理難度 mysql>FLUSH LOGS; 手動對二進制日志進行一次滾動 mysql < /backup/mysql_fullbak.sql 恢復全量備份 mysql < /backup/increment.sql 恢復增量備份 mysql < /tmp/hello.sql 恢復崩潰前導出二進制數據 mysql>SET GLOBAL sql_log_bin=1; 恢復完成開啟二進制日志
恢復后需要使用 mysqlcheck -uroot -pmypass -c -all-databases 檢查所有表是否存在問題,所有恢復完成后請記得對數據庫做一次全量備份
至此,使用mysqldump備份恢復完成,如有錯誤請大家指教!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。