docker環境下MYSQL PXC集羣熱備份和還原

之前搭建了在docker上搭建了一套MySQL的PXC集羣,當時沒有做備份處理,今天搭建了一套備份方案。

MySQL的數據備份方式有很多種,如自帶的MySQLDUMP命令,或者直接拷貝數據文件等等方式,但是這些方式都是系統的冷備份,即需要停機服務進行備份,這種方式我沒有采用。

本次備份方案是熱備份,MySQL的熱備份的方式有兩種:1、LVM 2、xtrabackup

lvm是Linux自帶的一種,通過對某一個分區創建快照進行備份,所以可以備份多種數據庫。但是缺點是會對數據庫加鎖,使得數據庫在備份區間只讀不可寫,生產環境這是不允許的。

xtrabackup是percona公司的開源免費的MySQL備份工具,在熱備份上不需要鎖表進行備份,所以一般MySQL上備份採用xtrabackup,它還有個優勢是備份數據是被壓縮過的,會減小磁盤壓力。

 

備份方式兩種:全量、增量,一般一週一次全量備份,一天一次增量備份。

由於PXC安裝在docker上的,備份方式和單機備份有一些差異:

1、備份數據docker服務上需要有數據卷映射到MySQL-PXC的backup備份文件夾。具體在搭建pxc筆記中有。

2、要進入docker中MySQL上安裝xtrabackup進行數據備份,不是在宿主機上安裝

 

由於PXC各個節點數據節點都是一致的,所以只需要進入一個節點進行備份就行了。

方法:

進入節點
docker exec -it node2 /bin/bash

更新update
apt-get update

如果執行這一步update時候報錯,如以下錯誤:

E: List directory /var/lib/apt/lists/partial is missing. - Acquire (13: Permission denied)
E: Could not open lock file /var/lib/dpkg/lock - open (13: Permission denied)
E: Unable to lock the administration directory (/var/lib/dpkg/), are you root?

這代表進入這個node2服務中的時候沒有權限操作,所以我們要給到root用戶進入服務

方式:

退出當前服務
ctrl+d

重新以root角色進入docker服務,隨便進入一個節點,這裏我進入node1
docker exec -it -u 0 node1 /bin/bash

執行update更新
apt-get update

安裝xtrabackup
apt-get install percona-xtrabackup-24

安裝完後進行全量備份:
innobackupex --user=root --password=MySQL密碼 /data/backup/full

執行完後自動開始全量備份

檢查全量備份:

切換到全量備份文件夾
cd /data/backup/full

查看
ls

退出docker服務,由於有目錄映射,所以宿主機上也會看到文件,具體方法:

查看宿主機備份的數據目錄在哪:
docker inspect backup

切換到該文件夾
cd /var/lib/docker/volumes/backup/_data

查看
ls

發現有backup目錄,進入backup目錄裏面的full目錄中查看,發現有全量備份文件

全量備份完成。

 

還原:

MySQL的數據還原方式不像備份一樣,MySQL數據還原只有冷還原,docker服務和單機節點差異是,docker還原的時候需要把docker的PXC集羣解散掉,刪除各個節點,之後新建一個新的節點並 進行冷還原,最後新建其他節點和當前節點進行數據同步;

docker stop掉各個節點

docker rm刪掉各個節點

docker volume rm刪掉各個數據卷,這裏刪掉的是pxc服務的數據卷不是backup備份文件數據卷,千萬別用刪除孤卷命令,因爲解散pxc後backup卷也是孤捲了,刪除孤卷命令會把備份數據也刪掉了

新建一個新節點,命令和搭建pxc集羣一致


進入該節點
docker exec -it -u 0 node1 bash

安裝xtrabackup

執行MySQL數據清空指令
rm -rf /var/lib/mysql/*

執行還原命令
innodackupex --user=root --password=密碼 --apply-back /data/backup/full/備份文件名/

這裏的--apply-back參數指的是回滾掉全量備份之間產生的事務差異數據

 

退出容器,重啓docker節點

之後在搭建其他的節點即完成冷還原

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章