MySQL 資料庫自動備份
- MySQL 資料庫自動備份
- MySQL 備份命令
- mysqldump 介紹
- 資料備份
- 資料恢復
- gzip 介紹
- MySQL 備份腳本
- Linux 定時任務-crontab
- 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=https://www.cnblogs.com/cure/p/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=https://www.cnblogs.com/cure/p/2 --default-character-set=utf8 -h
-u -p -A > backup.sql -
MyISAM 全庫備份
mysqldump --opt --lock-all-tables --master-data=https://www.cnblogs.com/cure/p/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 note:
gzip -d為解壓, 下面介紹下gzip用法與引數介紹(gzip命令只是壓縮,不做打包操作)
gzip 介紹
-
用法:
gzip [OPTION]... [FILE]...
-
常用引數
-d--decompress解壓-c--stdout保留原始檔案,把壓縮/解壓流重定向到新檔案(如:gzip -c aa > aa.gz)-l--list列出壓縮檔案資訊,并不解壓-r--recursive對目錄進行遞回操作-t--test測驗壓縮檔案的完整性-v--verbose冗長模式-numnum為壓縮效率,是一個介于1~9的數值,預設值為“6”,指定愈大的數值,壓縮效率就會愈高;-1--fast最快壓縮方法(低壓縮比)-9--best最慢壓縮方法(高壓縮比)
-
栗子
-
把 test目錄下的每個檔案壓縮成.gz檔案
gzip test/*
-
把上例中每個壓縮的檔案解壓,并列出詳細的資訊
gzip -dv test/*
-
詳細顯示test中每個壓縮的檔案的資訊,并不解壓
gzip -l test/*
-
壓縮一個tar備份檔案,此時壓縮檔案的擴展名為.tar.gz
gzip -r log.tar
-
遞回的壓縮目錄
gzip -rv test
這樣,所有test下面的檔案都變成了.gz,目錄依然存在只是目錄里面的檔案相應變成了.gz.這就是壓縮,和打包不同,因為是對目錄操作,所以需要加上-r選項,這樣也可以對子目錄進行遞回了,
-
遞回地解壓目錄
gzip -dr test
-
保留原始檔案,把壓縮/解壓流重定向到新檔案
gzip -c aa > aa.gz
gzip -dc bb.gz > bb
-
MySQL 備份腳本
- MySQL 資料庫備份腳本
Linux 定時任務-crontab
crontab是一個命令,常見于Unix和類Unix的作業系統之中,用于設定周期性被執行的指令,
-
用法:
- crontab [-u user] file
- crontab [-u user] [ -e | -l | -r ]
-
引數解釋:
-e編輯用戶的定時任務 (edit user's crontab)-l列出用戶的定時任務 (list user's crontab)-r洗掉用戶的定時任務 (delete user's crontab)-i在洗掉用戶的定時任務前提示 (prompt before deleting user's crontab)-s(selinux context)
-
栗子
-
編輯
crontab -e
-
執行計劃 (每天23點執行
service iptables status命令)00 23 * * * service iptables status
-
詳情
* * * * * commad 分 時 日 月 周 命令 第`1`串列示分鐘 `1~59`, 每分鐘用 `*` 或者 `*/1`表示 第`2`串列示小時 `1~23` (0表示0點) 第`3`串列示日期 `1~31` 第`4`串列示月份 `1~12` 第`5`串列示星期 `0~6` (0表示星期日) 第`6`列是要運行的命令
-
Reference
- https://segmentfault.com/a/1190000019955399
- https://wangchujiang.com/linux-command/c/gzip.html
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/404307.html
標籤:MySQL
