LVM:需要对数据库加锁,此时只能读,不能写。对业务开展有影响。
XtraBackup:不加锁,即写即备
全量备份和增量备份:
对数据库第一次备份用 全量,以后用增量
现实中一般一周 做一次全量,一天做一次 增量
安装XtraBackup:
要安装在数据库结点所在的容器内,但 备份的数据要保存在宿主机上,采用映射技术。
所以先创建数据卷,将数据卷映射到宿主机的某一结点上。
1. 创建数据卷:
命令: docker volume create backup
2. 选择一个数据库结点,把数据卷映射上去
选择 node1 这个结点【pxc的一个结点】
之前 创建 node1时,没有 映射这个数据卷,所以先停止node1结点,删除,在创建新的 node1,
由于之前的数据保存在宿主机上,所以 运行的数据不会丢失
2.1 停止结点:
docker stop node2
2.2 删除 结点:
docker rm node2
2.3 创建新的node2:
docker run -d -p 3307:3306 -e MYSQL_ROOT_PASSWORD=123456 -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=123456 -v v2:/var/lib/mysql -v backup:/date --privileged -e CLUSTER_JOIN=node1 --name=node2 --net=net1 --ip 172.168.0.8 pxc
【注意:node2 是 pxc集群中的一个结点,net1 是创建的docker 内部网络,172.168.0. 是net1的前部分】
3.PXC全量备份:
3.1 先进入 node2 结点:【如果apt-get不行,就将pxc镜像换成 5.7.21版本的】
docker exec -it node2 bash
或 docker exec -it -u 0 node2 /bin/bash【root权限】
3.2 先对 apt进行更新:
apt-get update
3.3 安装xtrabackup:
apt-get install percona-xtrabackup-24
3.4 开始全量备份:
innobackupex --user=root --password=123456 /data/backup/full
PXC全量恢复步骤:
不能直接在pxc集群的某个结点进行还原,因为其他的结点不知道如何和这个结点同步数据
步骤:解散pxc集群,删除全部的结点,然后创建新的数据节点,然后进行令还原,还原之后,再创建其他的数据结点,
和这个还原的结点进行数据同步,这样pxc集群就重新搭建起来了。
命令1:删除数据
命令2:事务回滚
命令3:进行还原
步骤:1.先删除所有pxc结点: docker
2.删除所有数据卷
3. 建立一个新的数据卷
4.创建一个新的pxc结点 node1
5. 进入pxc结点中 : docker exec -it node1 bash
6. 删除数据【在pxc结点中】:
rm -rf /var/lib/mysql/*
7.事务回滚
innobackupex --user=root --password=123456 --apply-back /data/backup/full/备份数据名(2018-04-15_05-09-07)/
8.进行还原:
innobackupex --user=root --password=123456 --copy-back /data/backup/full/2018-04-15_05-09-07/
9. 关闭该节点:docker stop node1
9. 重启该节点:docker start node1