MySQL 數據庫自動備份
MySQL 備份命令
手抖、寫錯條件、寫錯表名、錯連生產庫造成的誤刪庫表和數據總有聽說,那么刪庫之后除了跑路,還能做什么呢,當然是想辦法恢復,恢復數據的基礎就在於完善的備份策略。下面就來介紹下MySQL自帶備份工具
mysqldump
mysqldump 介紹
-
用法
Usage: mysqldump [OPTIONS] database [tables] OR mysqldump [OPTIONS] --databases [OPTIONS] DB1 [DB2 DB3...] OR mysqldump [OPTIONS] --all-databases [OPTIONS] -
常用參數
--opt如果有這個參數表示同時激活了mysqldump命令的quick,add-drop-table,add-locks,extended-insert,lock-tables參數,它可以給出很快的轉儲操作並產生一個可以很快裝入MySQL服務器的轉儲文件。當備份大表時,這個參數可以防止占用過多內存。(反之使用--skip-opt)--single-transaction設置事務的隔離級別為可重復讀,然后備份的時候開啟事務,這樣能保證在一個事務中所有相同的查詢讀取到同樣的數據。注意,這個參數只對支持事務的引擎有效,如果有 MyISAM 的數據表,並不能保證數據一致性。(自動關閉選項--lock-tables)--default-character-set=charset指定轉儲數據時采用何種字符集。(默認使用數據庫的字符集)--master-data=2表示在備份過程中記錄主庫的 binlog 和 pos 點,並在dump文件中注釋掉這一行,在使用備份文件做新備庫時會用到-x--lock-all-tables鎖表備份。由於 MyISAM 不能提供一致性讀,如果要得到一份一致性備份,只能進行全表鎖定。-l--lock-tables鎖定所有的表以便讀取。(默認為打開;使用--skip-lock-tables來禁用。)--dump-date在輸出的最后加上轉儲日期。(默認為打開;使用--skip-dump-date來禁用。)-h--host=name連接主機-P--port=#端口號-u--user=username用戶名-p--password[=passwd]密碼-A--all-databases轉儲全部數據庫-Y--all-tablespaces轉儲所有的表空間。(反之-y--no-tablespaces不轉儲任何表空間信息)-B--databases轉儲指定數據庫--tables轉儲指定表, 覆蓋選項--databases
--ignore-table=name不轉儲指定的表。要指定一個以上的忽略的表,請多次使用該指令,每個表一次為每個表使用一次。每個表都必須同時指定數據庫和表名(如--ignore-table=database.table)-d--no-data不轉儲行記錄。(只有表結構,沒有表數據)--add-drop-database在每次創建前添加一個DROP DATABASE。--add-drop-table在每次創建前添加一個DROP TABLE。(默認添加)
數據備份
-
InnoDB 全庫備份
mysqldump --opt --single-transaction --master-data=2 --default-character-set=utf8 -h
-u -p -A > backup.sql -
MyISAM 全庫備份
mysqldump --opt --lock-all-tables --master-data=2 --default-character-set=utf8 -h
-u -p -A > backup.sql -
備份帶上壓縮
mysqldump -h
-u -p -A | gzip >> backup.sql.gz -
備份指定庫(可多個庫)
mysqldump -h
-u -p --databases > backup.sql
數據恢復
-
SQL文件恢復
mysql -h
-u -p < backup.sql -
壓縮文件恢復
gzip -d backup.sql.gz | mysql -h
-u -p Tips:
gzip -d為解壓, 下面介紹下gzip用法與參數介紹(gzip命令只是壓縮,不做打包操作)
gzip 介紹
MySQL 備份腳本
- MySQL 數據庫備份腳本參考: https://www.cnblogs.com/librarookie/p/15767567.html
定時任務-crontab
crontab是一個命令,常見於Unix和類Unix的操作系統之中,用於設置周期性被執行的指令。
Via
