目錄
MySQL數據庫提供的大部分工具(如mysqldump、ibbackup、replication)都能很好地完成備份的工作,當然也可以通過第三方工具來完成,如xtrabacup、LVM快照備份等。
8.1 備份與恢復概述
根據備份的方法不同可以將備份分爲:
-
Hot Backup(熱備):在數據庫運行中直接備份,對正在運行的數據庫沒有任何影響
-
Cold Backup(冷備):在數據庫停止情況下,一般只需要複製相關的數據庫物理文件即可
-
Warn Backup(溫備):在數據庫運行中進行,但是會對當前數據庫的操作有影響,如加一個全局讀鎖以保證備份數據的一致性
按照備份後文件的內容,備份文件又可以分爲:
-
邏輯備份:備份出的文件是可讀的,一般是文本文件。內容一般由一條條SQL語句,或者表內實際數據組成
-
裸文件備份:指複製數據庫的物理文件,既可以在數據庫運行中複製,也可以在數據庫停止運行時直接的數據文件複製
按照備份數據庫的內容來分,備份又可以分爲:
-
完全備份:對數據庫進行一個完整的備份
-
增量備份:在上次完全備份的基礎上,對於更改的數據進行備份
-
日誌備份:對MySQL數據庫二進制日誌的備份,通過對一個完全備份進行二進制日誌的重做來完成數據庫的point-in-time的恢復工作。數據庫複製(replication)原理就是異步實時地將二進制日誌重做傳送並應用到從數據庫
8.2 冷備
只需要備份MySQL數據的frm文件,共享表空間文件,獨立表空間文件(*.ibd),重做日誌文件。另外建議定期備份MySQL數據庫的配置文件my.cnf,這樣有利於恢復的操作。
8.3 邏輯備份
-
mysqldump:用來完成轉存數據庫的備份及不同數據庫之間的移植,備份的文件就是導出的SQL語句,一般只需要執行這個文件就可以完成數據恢復
-
select ... into outfile:導出一張表的數據,通過load data infile來進行導入恢復
8.4 二進制日誌備份與恢復
二進制日誌非常關鍵,用戶可以通過它完成point-in-time的恢復工作。MySQL數據庫的replication同樣需要二進制日誌。在默認情況下並不啓用二進制日誌,要使用二進制日誌首先必須啓用它。
推薦的二進制日誌的服務器配置:
log-bin = mysql-bin
sync_binlog = 1
innodb_support_xa = 1
8.5 熱備
-
ibbackup
-
XtraBackup
8.6 快照備份
通過文件系統支持的快照功能對數據庫進行備份。備份的前提是所有數據庫文件放在同一文件分區中,然後對該分區進行快照操作。
8.7 複製
複製(replication) 是MySQL數據庫提供的一種高可用高性能的解決方案,一般用來建立大型的應用。總體來說,replication 的工作原理分爲以下3個步驟:
-
主服務器(master) 把數據更改記錄到二進制日誌(binlog) 中。
-
從服務器(slave) 把主服務器的二進制日誌複製到自己的中繼日誌(relay log)中。
-
從服務器重做中繼日誌中的日誌,把更改應用到自己的數據庫上,以達到數據的最終一致性。
8.8 企業實現
本人現就職於50-100人的創業公司,經詢問後瞭解到,我們公司採用的是 阿里雲 的 雲數據庫 RDS 版
採用 半同步 方式
https://help.aliyun.com/document_detail/26183.html?spm=5176.2020520104.237.3.301b1450ZjO2lm