1. 程式人生 > >docker簡易實現熱備份資料庫資料

docker簡易實現熱備份資料庫資料

docker簡易實現熱備份資料庫資料

寫在前面:冷備份是關閉資料庫時候的備份方式,通常做法是拷貝資料檔案。但大型網站無法做到關閉業務備份資料,所以冷備份是不是最佳選擇,故選擇熱備份。當然通過pxc叢集,讀者可以先關閉其中一個節點進行備份,而後重新開啟加入叢集,自然叢集資料再次進行同步。MySQL常見的熱備份有LVM和XtraBackup兩種。但由於當LVM在備份時鎖表只能讀取不能寫入。
XtraBackup備份不鎖表,不會打斷正在執行的食物,能夠壓縮等功能節約磁碟空間和流量。可採取增量備份、全量備份。

第一步 建立docker卷

在centos視窗中,執行如下命令:

docker volume create backup

第二部 對映docker卷

這裡選取第一個節點 進行資料備份,讀者可自行選擇節點將備份卷對映到容器中重新建立即可。
首先將node1節點停止 刪除。由於一開始並沒有將備份的docker卷對映其中,故重新建立改node1容器。
在centos視窗中,執行如下命令:

docker stop node1
docker rm node1
docker run -d -p 3306:3306 -v v1:/var/lib/mysql -v backup:/data -e MYSQL_ROOT_PASSWORD=123456 -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=123456
-e CLUSTER_JOIN=node1 --privileged --name=node1 --net=net2 --ip 172.18.0.2 pxc

注: -v backup:/data | 將備份docker捲進行對映
-e CLUSTER_JOIN=node2 | 選擇同步的節點,選擇其他某個節點進行資料同步

第三步 PXC全量備份

在PXC容器中安裝XtraBackup,並執行備份。在pxc容器node1中,執行如下命令:

apt-get update
apt-get install percona-xtrabackup-24
innobackupex --user=root --password=123456
/data/backup/full

執行後進行對應目錄進行檢視,如下所示:

[email protected]6596a013857c:/# cd /data/backup/full/2018-07-02_06-32-52/
[email protected]6596a013857c:/data/backup/full/2018-07-02_06-32-52# ls
backup-my.cnf  ib_buffer_pool  ibdata1  mysql  performance_schema  sys  xtrabackup_binlog_info  xtrabackup_checkpoints  xtrabackup_info  xtrabackup_logfile

第四步 驗證是否全量備份成功,進行PXC全量恢復

資料庫可以熱備份,但不能熱還原。為了避免恢復過程中的資料同步,我們採用空白的MySQL還原資料,然後再建立PXC叢集。請讀者自行實現。這裡我們主要實現冷備份資料。
首先先停止其餘節點容器(node2,node3,node4)並刪除容器以及對應的docker卷。在centos視窗中,執行如下命令:

docker stop node2  node3   node4
docker rm node2  node3   node4
docker volume rm v2 v3 v4

進入node1容器中,刪除資料,回滾事務,恢復資料,重啟資料庫服務。執行如下命令:

docker exec -it node1 bash
rm -rf /var/lib/mysql/*
innobackupex --user=root --password=abc123456 --apply-back /data/backup/full/2018-07-02_07-29-54/
innobackupex --user=root --password=123456 --copy-back /data/backup/full/2018-07-02_07-29-54/
service mysql stop
service mysql start

注:還原資料前要將未提交的事務進行回滾,還原資料之後重啟MySQL

第五步 連線到node1資料庫,檢視資料是否恢復。

資料庫連線資訊如下:

資料庫ip地址(192.168.9.144 )---宿主機ip
埠 3306
使用者 root
密碼 123456

連線上資料庫檢視資料是否還原成功。成功後重新建立叢集,具體步驟請參考《docker簡易搭建MySQL叢集》*https://blog.csdn.net/belonghuang157405/article/details/80774506