您当前的位置:首页 > 计算机 > 软件应用 > 数据库 > MySQL

MySQL集群服务器的热备份 和 冷还原

时间:08-27来源:作者:点击数:

上一篇我们用三台Ubuntu搭建了MySQL集群服务器

docker搭建了MySQL集群服务器

解决PXC方案的MySQL数据热备份

传统的MySQL数据库备份比如 dump需要将关闭一个数据库节点,然后使用dump指令进行备份数据,这种备份方式慢,全量备份。而且需要关闭一个节点进行备份,备份后在加入集群,进行同步数据,操作复杂-------这种方式是冷备份

另外一种备份方式是通过Linux自带的备份工具,这种方式需要锁表,数据库只能进行读取不能进行增加、修改和删除操作-----这种方式是其中一种热备份不需要关闭服务器,但是会影响业务

XtraBackup

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
方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门