全面瞭解Mysql(九)備份與恢復

  1. 數據庫備份種類
    按備份時數據庫的狀態分:1)熱備份,數據庫運行,且對數據庫沒有影響。2)冷備,數據庫停止狀態。3)溫備,數據庫運行,但是備份對數據庫有影響。
    按備份後的文件內容分:1)邏輯備份,備份出來的文件內容可讀。2)裸文件備份,備份的是數據庫的物理文件,這種文件恢復速度快
    按照備份數據庫內容來分:1)完全備份。2)增量備份,第一次完全備份,以後每次增量備份,主要依靠前面提到的lsn,以後備份都會去比較lsn,只有大於當前的lsn頁會被備份。3)日誌備份,依靠前面文件時提到的二進制日誌文件,數據庫複製或者說分佈式數據庫都是這個原理。
  2. 冷備份
    停止mysql數據庫,備份共享表空間,獨立表空間,還有表結構,同時帶上my.cnf配置文件,備份簡單,恢復也很簡單,只需要複製相關文件到對應位置
  3. 邏輯備份
    1)mysqldump,可以使用 --help查看相關語法,常見的就是
 mysqldump -u用戶名 -p 數據庫名 --single-transaction >文件

也可以對某些表進行備份,就是在數據庫名後跟上表名就可以了,這樣備份不帶刪除表語句,可以添加參數 --add-drop-database
2)使用 select …into outfile進行表備份
3)邏輯備份的恢復
使用mysqldump備份的可以使用

mysql -u用戶名 -p密碼 < 腳本

或者登錄mysql後使用

source 腳本

如果使用mysqldump-tab或者select … into outfile導出的數據需要恢復可以使用
登錄myslq

load data into table a ignore 1 lines infie '腳本'

可以設置參數 foreign_key_checks=0來關閉外鍵檢查加快導入速度
mysql爲了方便使用load data infile提供了一個命令行程序mysqlimport,和load data infile不同的是mysqlimport可以併發的導入多個文件

mysqlimprot --use-threads=線程數,和文件數相同就好 數據庫 腳本
  1. 二進制日誌備份
    二進制文件可以完成point-in-time的恢復工作,在複製二進制日誌時最好先執行下flush logs來生成新的日誌文件,然後備份之前的文件。
    恢復二進制日誌文件也很簡單,使用
mysqlbinlog log_file | mysql -u用戶名 -p密碼 數據庫名

也可以一次導入多個log文件

mysqlbinlog * | mysql -u用戶名 -p密碼 數據庫名

最好是通過mysqlbinlog 導出到文件,在使用source來導入

mysqlbinlog log_file > 腳本

如果技術上去了還可以使用 --start-position和–stop-position來跳過錯誤語句。

  1. 熱備
    mysql提供了ibbackup可以進行熱備,在線備份不阻塞任何sql語句,備份性能好,支持壓縮,但是不免費。所以常用的是xtraBackup工具,它實現了所有ibbackup功能,而且免費開源,使用地址見博客https://blog.csdn.net/qq_31075763/article/details/102496381
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章