解决PXC方案的MySQL数据热备份
传统的MySQL数据库备份比如 dump需要将关闭一个数据库节点,然后使用dump指令进行备份数据,这种备份方式慢,全量备份。而且需要关闭一个节点进行备份,备份后在加入集群,进行同步数据,操作复杂-------这种方式是冷备份
另外一种备份方式是通过Linux自带的备份工具,这种方式需要锁表,数据库只能进行读取不能进行增加、修改和删除操作-----这种方式是其中一种热备份不需要关闭服务器,但是会影响业务
XtraBackup是一款基于InnoDB引擎的在线热备份工具具有开源免费,支持在线热备,占用磁盘空间小,能够非常快速地备份和恢复
需要注意的是新版的percona集群镜像里面是默认安装好了备份工具,而且有Ubuntu变成了centos,所以安装指令变成了yum安装这里不需要再安装了,因为有 镜像来自 docker pull percona/percona-xtradb-cluster
进入容器 0是uid=0的意思,以用户id为0的用户进入容器,也就是root用户
docker exec -it -u 0 容器别名 bash
进行全量备份
备份数据的路径是容器中的路径上面指定的路径。在启动的时候我们映射了数据卷backup,所以在宿主机也有
innobackupex --user=root --password=123456 /data/backup/full
注意数据库备份有热备份 和 冷备份热备份可以一边使用MySQL服务器一边进行备份数据
但是还原数据只能进行冷还原,需要关闭某一个节点进行还原
因为MySQL的数据是存在数据卷中的,在进行数据库的冷还原需要解散原集群,将每个节点容器都删除即可,然后将其中一个节点的所产生的数据全部删除,再讲备份好的数据还原到存放数据的目录中,接着重启该节点,接着将其他节点加入到该节点,实现PXC集群
进入容器删除原先的数据
docker exec -it 0 容器名或id bash
rm -rf /var/lib/mysql/*
进行还原指令操作,需要注意还原的是哪个备份
innobackupex --user=root --password=123456 --apply-back /data/backup/full/2020-04-16_21-50-39/
innobackupex --user=root --password=123456 --copy-back /data/backup/full/2020-04-16_21-50-39/
前面我们加入了一条数据1 张三,在备份后我们加入一条数据仅student表 2 李四
然后还原后查看
接着重启节点
docker run -d -e MYSQL_ROOT_PASSWORD=123456 \
-e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=123456 \
-v v1:/var/lib/mysql -v backup:/data \
--privileged --name=node1 --network=host --restart=always pxc