MySQL 數據庫自動備份


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 備份腳本


定時任務-crontab

crontab 是一個命令,常見於Unix和類Unix的操作系統之中,用於設置周期性被執行的指令。



Via


免責聲明!

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



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