对数据库文件备份是工作中必不可少的环节,常见的数据库备份方式主要是冷备份和热备份方案
冷备份
冷备份就是关闭数据库时候的备份方式,通常是拷贝数据文件
冷备份是最简单的最安全的一种备份方式
但是一般运营过程中不能停止数据库服务来进行数据备份
热备份
热备份是在系统运行的状态下备份数据
MySQL常见热备份方式是LVM和XtraBackup两种备份方案
LVM:linux的分区备份命令,可以备份任何数据库;但是会对数据库加锁,只能读取;而且命令复杂
XtraBackup:不需要锁表就可以实现数据备份,而且免费
XtraBackup
XtraBackup是由percona提供的一款基于InnoDB的开源免费数据库热备份软件,它支持在线热备份,占用磁盘空间小,能够非常快速地备份与恢复MySQL数据库
1.备份过程中不锁表,快速可靠
2.备份过程中不会打断正在执行地事务
3.备份数据经过压缩,占用磁盘空间小
全量备份和增量备份
1.全量备份:备份全部数据。备份时间长,占用空间大。第一次备份要使用全量备份
2.增量备份:只备份变化的那部分数据。备份的时间短,占用空间小。后续建议使用增量备份
PXC全量备份
创建数据卷
# docker volume create backup |
挑选一个PXC节点node1,将其停止并删除,然后重新创建一个增加backup目录映射node1容器
# docker stop node1 |
PXC容器中安装XtraBackup,并执行备份
# docker exec -it node1 bash |
PXC全量还原
数据库可以热备份,但是不能热还原,否则会造成业务数据和还原数据的冲突。
对于PXC集群为了避免还原过程中各节点数据同步冲突的问题,我们要先解散原来的集群,删除节点。然后新建节点空白数据库,执行还原,最后再建立起其他集群节点。
还原前还要将热备份保存的未提交的事务回滚,还原之后重启MySQL
停止并删除PXC所有节点
# docker stop node1 node2 node3 node4 node5 |
按之前程序创建v1数据卷和node1容器,进入容器,进行全量还原
# docker volume create v1 |
最后重新创建其他数据卷和其他节点,同步node1节点即可。