docker-compose Mysql容器定时备份功能实现

Mysql容器的定时备份

由于前两次"删库"操作,新项目的数据库定时备份功能刻不容缓,因为其他项目有做好现成的定时备份,想着直接借鉴搬过来,发现docker-compose和docker发布方式不同 功能实现也有不同。虽然最后实现很简单,过程还是踩了不少坑。

数据定时备份的几种实现方式

传统发布的项目和docker容器发布 可以在代码里写一个定时任务,设置好时间执行,使用mysqldump命令导出数据,


       String username = "root";
       String password = "root";
       String dbName = "guns";
       String mysqldumpPath = "D:/MySQL/mysql-8.0.15-winx64/bin/mysqldump";
       String backupPath = "F:/backup";

        File file = new File(backupPath);
        if (!file.exists()) {
   
            file.mkdirs();
        }
        SimpleDateFormat sdf = new SimpleDateFormat(DateUtil.PATTERN_3);
        
### 如何使用XtraBackup备份Docker中运行的MySQL数据库 为了成功地利用Percona XtraBackup来备份位于Docker容器内的MySQL数据库,需遵循特定的方法以确保数据的一致性和完整性。考虑到`mysql`容器和`xtrabackup`容器部署于同一服务器之上[^1],这使得操作更为简便。 #### 准备工作 确认已安装适当版本的Docker(20.10.6)以及docker-compose(1.28.5),这对于构建多服务应用至关重要[^2]。此外,在执行任何备份之前,请先停止正在运行的服务实例,并清理旧有的备份文件以防冲突发生: ```bash docker exec -it <container_name> bash /etc/init.d/mysql stop rm -rf /var/lib/mysql/* ``` #### 执行全量备份 通过命令行启动完全备份过程,指定目标路径保存副本资料: ```bash xtrabackup --backup --target-dir=/path/to/backup_dir/ ``` 此指令会创建一个新的备份集存放在给定位置。对于基于Docker环境的操作而言,建议将该目录映射至宿主机上的持久化存储空间内以便长期保留[^3]。 #### 实施增量备份 除了定期进行全面复制外,还可以设置定时任务来进行更频繁的小规模更新记录——即所谓的“增量备份”。这种方式能够有效减少资源消耗的同时保持最新的状态快照可用性。编辑crontab条目定义计划作业如下所示[^5]: ```bash echo '0 */2 * * 1,2,4,5,7 root /root/incrbak.sh >> /var/log/mysql_backup.log 2>&1' >> /etc/crontab ``` 上述脚本安排每两小时一次(周一、二、四、五、日)执行增量备份程序`incrbak.sh`并将输出重定向到日志文件中去。 #### 数据恢复流程 当需要从现有备份还原整个数据库系统时,则按照以下步骤操作: - 停止当前活动的服务进程; - 清除原有数据文件夹下的所有内容; - 应用先前制作好的完整或部分恢复点; - 更改权限使新加载的数据可被访问; - 启动MySQL服务完成迁移过程。 具体实施可以参照下面这段shell代码片段[^4]: ```bash # 进入对应容器内部终端 docker exec -it <container_name> bash # 关闭mysqld服务 /etc/init.d/mysql stop # 删除/var/lib/mysql下全部项目 rm -rf /var/lib/mysql/* # 将备份拷贝回原位 xtrabackup --copy-back --target-dir=/home/full # 修改属组属性为mysql用户拥有者身份 chown -R mysql:mysql /var/lib/mysql # 开启mysqld服务 /etc/init.d/mysql bootstrap-pxc ``` 以上就是关于如何运用XtraBackup工具针对Docker环境中托管着MySQL实例的情况下来达成高效可靠的备份策略介绍。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值