Java 之跨docker容器备份数据库
  摘】
    java中执行数据库备份,每隔10分钟备份一次,保留四份备份文件,项目在windows系统下运行备份命令没问题。项目采用docker部署后,jar部署在一个docker容器简称“jar 容器”,mysql部署在另外一个docker容器简称“mysql容器”。备份命令却在mysql容器中才能执行,但是项目运行却在jar容器中调用备份命令。  

        
   容】
     1、定时任务10分钟执行一次
    

          
public void timeBackupBase()
{

// 使用Docker CLI命令进行数据库备份%s 是占位符 ,nsenter 可以执行另外一个容器的命令
    String dockerCmd = "nsenter -m -u -i -n -p -t 1 docker exec %s mysqldump -u%s -p%s --databases %s > %s";
Map<String, String> dbInfo = jts.getDBInfo();
String username = dbInfo.get("userName");
String password = dbInfo.get("passWord");
String database = dbInfo.get("dbName");
File dataFile = new File(backUpPath + System.currentTimeMillis() + ".sql");
// 构建命令字符串 polo-mysql 替换成你的容器名 数据库用户名:username 数据库密码password 数据库名称:database 文件路径dataFile
    dockerCmd = String.format(dockerCmd, "polo-mysql", username, password, database, dataFile);

// 执行命令
try {
System.out.println("======开始执行备份命令:======="+dockerCmd);
Process process = Runtime.getRuntime().exec(new String[]{"/bin/sh","-c", dockerCmd});
process.waitFor();
System.out.println("======执行结果值:======="+process.exitValue());
// 检查备份是否成功
if (process.exitValue() == 0) {
System.out.println("数据库备份成功。");
} else {
System.err.println("数据库备份失败。");
}
} catch (Exception e) {
e.printStackTrace();
}

}
再做这个之前,要在你的docker-compose.yml文件中加入 privileged: true pid: host 或在启动容器的时候加入,赋给跨容器的权限。如下图

  



Java 之跨docker容器备份数据库的更多相关文章

  1. docker容器备份、恢复和迁移volume方案

    volume作为数据的载体,在很多情况下需要对其中的数据进行备份.迁移或是恢复.下面一docker容器的volume为例,说一下备份的技巧. 我们先建立一个容器vol_simple,该容器在/date ...

  2. java邮件打包在linux备份数据库练习

    注:图片如果损坏,点击文章链接:https://www.toutiao.com/i6812982512256549387/ 承接上一篇文档<Java实现163邮箱发送邮件到QQ邮箱> 主方 ...

  3. Docker 容器备份例子

    # 在 node1 执行 nginx 程序,挂载本地的目录 docker pull nginx:stable-alpine mkdir /data/html echo "hello worl ...

  4. docker容器安装及使用技巧

    关于docker前言 A)首先是关于虚拟化 虚拟化我们可以简单的理解为一种资源管理方式.有如下几种虚拟化的方式: 1.完全虚拟化:对底层硬件实现完全的虚拟.例如:Vmware Workstation ...

  5. docker容器中Postgresql 数据库备份

    查看运行的容器: docker ps 进入目标容器: docker exec -u root -it 容器名 /bin/bash docker 中,以root用户,创建备份目录,直接执行如下命令, p ...

  6. atitit.跨语言实现备份mysql数据库 为sql文件特性 api 兼容性java c#.net php js

    atitit.跨语言实现备份mysql数据库 为sql文件特性 api 兼容性java c#.net php js 1. 两个方法:: bat vs mysqldump(推荐)  vs   lang  ...

  7. docker容器运行java后台程序,存到数据库的时间差一天的问题

    主要原因是docker容器中的时间用的是标准时间,不是用的宿主机的时间. 修改方法: docker run -e TZ="Asia/Shanghai" -d -p 80:80 -- ...

  8. 如何实现跨 Docker 主机存储?- 每天5分钟玩转 Docker 容器技术(73)

    从业务数据的角度看,容器可以分为两类:无状态(stateless)容器和有状态(stateful)容器. 无状态是指容器在运行过程中不需要保存数据,每次访问的结果不依赖上一次访问,比如提供静态页面的 ...

  9. 跨主机使用 Rex-Ray volume - 每天5分钟玩转 Docker 容器技术(77)

    上一节我们在 docker1 上的 MySQL 容器中使用了 Rex-Ray volume mysqldata,更新了数据库.现在容器已经删除,今天将演示在 docker2 中重新使用这个卷. 在 d ...

  10. docker容器跨主机网络overlay

    前提:已部署好docker服务服务预计部署情况如下10.0.0.134 Consul服务10.0.0.135 host1  主机名mcw510.0.0.134 host2  主机名mcw6host1与 ...

随机推荐

  1. PHP7新特性之类型声明

    今天我在这里总结下PHP7主要的新特性. 1.类型声明 做过php开发的小伙伴们都知道,php7以前的版本变量是不需要声明类型的,函数返回值也是不需要声明类型的,总之,在我们的脑海中就没有这么回事.可 ...

  2. java的自动拆箱会发生NPE

    平时的小细节,总能在关键时刻酿成线上事故,最近在代码中使用了Integer的自动拆箱功能,结果NPE(NullPointException)了,悲剧啊... 一.何为自动拆箱 要说自动拆箱,就必须说自 ...

  3. fragment的查找和移除

    FragmentManager fragmentmanger = getSupportFragmentManager(); FragmentTransaction fragmenttransactio ...

  4. Python和RPA网页自动化-处理iframe嵌入式框架

    以网易云为例,歌曲列表都在<iframe>框架下,使用Python和RPA网页自动化依次点击10首歌的播放键 1.python代码 从网页源代码可见,整个歌曲列表都在<iframe& ...

  5. 代码随想录Day1

    704.二分查找 给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1. 示例 1: ...

  6. 人工智能领域在显卡短缺之下的思考——“【亦】微笑面对显卡短缺:不买更快乐”有感——mindspore快快成长

    划水之时看了看B站视频: [亦]微笑面对显卡短缺:不买更快乐 https://www.bilibili.com/video/BV1RZ4y1c7qT 在显卡短缺之下不仅仅电脑游戏玩家被卡脖子就连高校和 ...

  7. Linux:移动当前目录的前N个文件到目标文件夹下

    #移动当前目录的前N个文件到指定文件夹.其中一点代表的是当前目录.两点代表的是上一级目录.subfoleder1代表的是目标目录. mv `ls | head -N` ./subfolder1/ #这 ...

  8. 9组-Beta冲刺-总结

    一.基本情况 组长博客链接:9组-Beta冲刺-总结 现场答辩总结:本次答辩,我们演示了我们到Beta冲刺周结束时的成果展示,离目标还有一些距离,不过本次答辩完成了任务,总体来说还不错,希望下次最终答 ...

  9. CH05_数组

    CH05_数组 概述 定义:一组相同类型的数据的集合. 描述: 1.数组中的每个元素都是相同的数据类型 2.数组是由连续的内存位置组成的. 3.数组索引是从0开始 一维数组 语法: 1.数据类型 数组 ...

  10. AvaloniaChat—从源码构建指南

    AvaloniaChat介绍 一个使用大型语言模型进行翻译的简单应用. 我自己的主要使用场景 在看英文文献的过程中,比较喜欢对照着翻译看,因此希望一边是英文一边是中文,虽然某些软件已经自带了翻译功能, ...