1. 程式人生 > 其它 >MySQL——備份與恢復

MySQL——備份與恢復

MySQL資料庫備份和恢復

--備份型別:
1、熱備份(只有InnoDB支援)(不影響業務,最好的方式)
2、冷備份( 阻止使用者訪問)
3、溫備份

--備份方式:
1、邏輯備份(文字表示:SQL語句)
2、物理備份(資料檔案的二進位制副本)
3、基於快照的備份
4、基於複製的備份
5、增量備份(重新整理二進位制日誌)

--備份工具:
1、 mysqldump: mysql原生自帶的很好用的邏輯備份工具
2、 mysqlbinlog: 實現binlog備份的原生態命令,邏輯備份
3、 xtrabackup: 物理備份工具

-----------------------------------------------------------------------------------------------------------------------------------

MySQL資料庫備份詳解:

1、mysqldump
mysqldump -uroot -p123456 --all-databases >/backup/full.sql  (備份全庫) ---->恢復(前提是資料庫為啟動狀態): source /backup/full.sql; 或 用“<”
mysqldump -uroot -p123456 -B oldboy >/backup/full.sql (備份單庫)

備份多個表:
mysqldump 庫1 表1 表2 表3 >庫1.sql

mysqldump引數:
        -A, --all-databases: 全庫備份 ***
        -B:帶有建庫(create)及(use)庫的語句,可以直接接多個庫,例如同時備份多個庫為: ... -B 庫1 庫2 ***
        -R, --routines: 備份儲存過程和函式資料 ***
        --triggers: 備份觸發器資料 ***
        -F, --flush-logs: 重新整理binlog日誌(備份時滾動binlog日誌) ***
        --master-data=1/2: 告訴你備份後時刻的binlog位置 ***
                        2: 註釋----> 會在備份的額SQL檔案中頭部,記錄備份時用到哪個binlog檔案了,並且記錄position號到哪裡
                        1: 非註釋,要執行(主從複製)

        -d: 僅表結構(不常用)
        -t: 僅資料(不常用)
        --compact: 減少無用資料資料輸出(除錯)(不常用)

        鎖表備份(innodb/myisam)(備份結束之前不能對錶進行操作): ***
            -x, --lock-all-tables ---->鎖定所有備份的表
            -l, --lock-tables ---->鎖定單表
            --master-data可以自動進行鎖表和釋放鎖,如果用了--master-data就不需要加-x和-l

        --single-transaction: 對innodb引擎進行熱備 ***



2、xtrabackup
(1)安裝xtrabackup
(2)全備備份:
    備份命令:
        xtrabackup
        innobackupex(重要)(支援InnoDB和MyISAM)

        innobackupex --user=root --password=123456 /backup/full  (全庫備份)

    恢復:
        恢復前的準備(應用日誌):
            innobackupex --apply-log /backup/full
        恢復:
            innobackupex --copy-back /backup/full



(4)增量備份:
        原理:
            基於上一次的備份做增量
            基於上一次備份後的變化的資料頁,還要備份在備份過程中的redo、undo變化

        增量備份:
            innobackupex --user=root --password=123456 --incremental --no-timestamp(如果不加則會以時間命名) --incremental-basedir=/backup/full /backup/xinc1
        
        恢復:
            1、應用全備日誌:
            innobackupex --apply-log --redo-only /backup/full
            2、合併增量到全備:
            innobackupex --apply-log --incremental-dir=/backup/xinc1 /backup/full
            3、恢復:



3、備份實戰:39期視訊課程第09,第04