冷备份
- 冷备份是关闭数据库时候的备份方式,通常做法是拷贝mysql数据文件
- 冷备份是最简单最安全的一种备份方式
- 大型网站无法做到关闭业务备份数据,所以冷备份不是最佳选择
- 在数据库集群中冷备份的方案是:先中断一个节点,然后备份数据,备份完后在上线
热备份
- 热备份是在系统运行的状态下备份数据,也是难度最大的备份
- MySQL常见的热备份有LVM和XtraBackup两种方案
- LVM是Linux自带一直备份方式,是对分区进行备份,LVM可以备份的数据库有很多,例如:mySql,oracle、mgdb都可以,LVM指令比较多,是比较麻烦的一种方式
- 建议使用XtraBackup热备份MySQL
- XtraBackup的优点:不需要锁表就可以备份数据,LVM是需要锁表的。
-
XtraBackup介绍
XtraBackup是一款基于InnoDB的在线热备份工具,具有开源免费,支持在线热备,占用磁盘空间小能够非常快速的备份与恢复mysql数据库
XtraBackup优势
- 第一次一定是全量备份,后续可以增量备份
- 增量备份是只备份变化的那部分数据。备份时间短,占用空间小
-
XtraBackup安装
安装之前的准备工作
因为这个工具是安装在数据库节点容器之内,它备份出来的数据就直接保存在容器里了,这样做很不好,我们应该把备份出的数据导出到宿主机上,应该采用映射的技术,应该在宿主机上创建一个数据卷,将这个数据卷映射到某一个数据库的节点上,然后在通过热备工具备份出来的数据,在宿主机上就可以看到了
创建数据卷 docker volume create backup
- 选择一个数据库节点,将数据库映射到数据卷,
- 需要删除一个数据库节点,因为之前创建的数据库节点没有加入映射参数(删除的话不会影响数据,因为之前创建的节点数据是映射到宿主机上的)
- 停止node1节点,docker stop node1
- 删除node1节点,docker rm node1
- 重新安装node1节点命令如下:
docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=abc123456 -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=abc1223456 -v pxcDir1:/var/lib/mysql -v backup:/data —privileged -e CLUSTER_JOIN=node2 —name=node1 —net=net1 —ip 172.18.0.02 pxc:5.7.21
命令解释
-v backup:/data :映射备份目录
CLUSTER_JOIN=node2:重启后与那个节点进行同步