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. [oeasy]python0054_三引号_原样显示字符串_triple_quoted

    三引号 回忆上次内容 \ 首先是转义字符 可以 和别的字符 构成转义序列 \a是 ␇ (bell), \b 退回一格 \t 水平制表符 \v.\f LineFeed \\ 输出 \ \" 输 ...

  2. 矩阵的奇异值分解(SVD)及其应用

    奇异值分解(Singular Value Decomposition, SVD)是矩阵的一种分解方法,与特征值分解不同,它可以应用于长方矩阵中,并将其分解成三个特殊矩阵的乘积.此外SVD分解还具有许多 ...

  3. NameCheap域名怎么样,如何注册购买域名?如何解析域名?

    Namecheap介绍 Namecheap是一家国外域名注册商和网站托管公司,成立于2000年,提供域名注册.虚拟主机.电子邮件托管.SSL证书.免费的WHOIS保护.CDN.VPS主机和独立服务器. ...

  4. python面向对象游戏练习:好人坏人手枪手榴弹

    python面向对象游戏练习:好人坏人手枪手榴弹 主要是多态的练习,对象作为参数传给方法使用 1 #!/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 4 ...

  5. Jmeter循环指定接口并接收不同参数值

    背景:在做接口自动化流程中我们会遇到需要提取上个接口的返回值作为下个接口的传参,在提取值数量不固定的情况下,如何在一个线程让指定接收参数的接口自动循环完所有的传参呢? 解决:添加[循环控制器]指定循环 ...

  6. MapGIS路网数据发布

    准备 1.MapGIS 10 桌面版(我用的10.5.6.10) 2.路网的shp文件 数据导入 1.创建要素集,如果已有要素集可以不用创建: 2.导入路网要素类,选择准备好的shp文件后导入即可: ...

  7. 【Shiro】01 概述 & 快速上手

    什么是Shiro? Apache Shiro 是Java的一个权限安全框架 一些功能:认证.授权.加密.会话管理.与Web 集成.缓存等   Shiro官网地址:[ 点击访问 ] http://shi ...

  8. 【转载】 numpy数据类型dtype转换

    原文地址: https://www.cnblogs.com/hhh5460/p/5129032.html =============================================== ...

  9. 2022 CCF推荐会议列表(国际会议列表)

    2019年版本的CCF推荐会议和期刊: https://www.ccf.org.cn/Academic_Evaluation/By_category/2022-12-02/780280.shtml 2 ...

  10. 如何实现nvidia显卡的cuda的多kernel并发执行???

    相关: CPU端多进程/多线程调用CUDA是否可以加速??? 参考: <CUDA C 编程指南>导读 https://developer.nvidia.com/blog/gpu-pro-t ...