docker环境下MYSQL PXC集群热备份和还原

版权声明:原创转载请注明出处,谢谢 https://blog.csdn.net/qq_21108311/article/details/82995615

之前搭建了在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节点

之后在搭建其他的节点即完成冷还原

猜你喜欢

转载自blog.csdn.net/qq_21108311/article/details/82995615
今日推荐