MySQL 备份与主从复制
生活随笔
收集整理的這篇文章主要介紹了
MySQL 备份与主从复制
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- 備份
- 主從復制
- 主從復制的作用
備份
根據備份方法的不同,備份可劃分為以下幾種類型
- 熱備(Hot Backup) :熱備指的是在數據庫運行的時候直接備份,并且對正在運行的數據庫毫無影響,這種方法在MySQL官方手冊中又被稱為在線備份
- 冷備(Cold Backup) :冷備指的是在數據庫停止的時候進行備份,這種方法十分簡單,就是直接復制相關的數據庫物理文件,這種方法在MySQL官方手冊中被稱為離線備份。
- 溫備(Warm Backup) :溫備與熱備相同有一點相同,即兩者都是在數據庫運行時進行備份,但是溫備會對數據庫當前的操作產生影響,因此需要加一個全局讀鎖來保證備份數據的一致性
按照備份后文件的內容,備份又可以分為
- 邏輯備份:邏輯備份即直接備份數據庫中的一條條SQL語句或者表內的數據,通常是可讀的文本文件。這種方法的好處是我們可以觀察導出備份文件的內容,但是由于恢復時需要重新執行這些命令和導入數據,所以恢復的時間往往較長。
- 裸文件備份:裸文件備份即復制數據庫的物理文件,既可以在運行時進行復制,也可以在停止時進行復制,并且這類備份的恢復時間往往要比邏輯備份要快很多。
按照備份數據庫的內容,備份又可以分為
- 完全備份 :對數據庫進行一個完整的備份
- 增量備份 :在上次完全備份的基礎上對后續更改的數據進行備份
- 日志備份 :對二進制日志的備份
不僅僅只有以上方法,我們還可以通過主從復制,利用從服務器作為備份
主從復制
主從復制是MySQL中提供的一種高可用的解決方案,步驟如下
- 主服務器把數據更改到二進制日志(binlog)中
- 從服務器把主服務器的二進制日志復制到自己的中繼日志(relay log)中
- 從服務器重做中繼日志中的日志,把更改的內容應用到自己的數據庫中,達到數據的最終一致性
這種復制其實就是完全備份+二進制日志備份的還原,并且為了保證數據的一致性,二進制日志的還原操作基本實時在進行。具體工作原理如下圖所示
可以看到,從服務器有兩個線程,一個是I/O線程,一個是SQL線程。
I/O線程負責讀取主服務器的二進制日志,并將其保存到從服務器的中繼日志中
SQL線程負責執行中繼日志,并執行其中的SQL語句
主從復制的作用
復制不僅僅可以用來做備份,還可以用作以下幾種功能
- 讀取的負載均衡 :由于主從服務器中的數據一致,所以可以將讀取平均的分布到從服務器中,減少主服務器的壓力
- 數據分布 :可以在不同的服務器之間實現數據的復制
- 高可用和故障轉移 : 在主服務器發生故障的時候,可以使用從服務器進行頂替,減少故障的停機時間和恢復時間。
如果某一程序員刪庫跑路,或者我們進行了一些刪庫刪表的誤操作,此時由于主從復制的機制,這些操作也會被同步到從服務器中,導致數據庫癱瘓,那這種情況如何處理呢?
我們可以采用快照+復制的備份架構,對從服務器上數據庫所在分區做快照,當主服務器發生了誤操作時,我們只需要利用從服務器上保存的快照進行恢復,再根據二進制日志來進行某一時間點的恢復即可,如下圖所示
總結
以上是生活随笔為你收集整理的MySQL 备份与主从复制的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 字符串匹配算法(三):KMP(Knuth
- 下一篇: 并发编程中常见的锁机制:乐观锁、悲观锁、