MySQL——備份與恢復
阿新 • • 發佈:2021-08-02
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