Java 之跨docker容器备份数据库

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容器备份数据库的更多相关文章
- docker容器备份、恢复和迁移volume方案
volume作为数据的载体,在很多情况下需要对其中的数据进行备份.迁移或是恢复.下面一docker容器的volume为例,说一下备份的技巧. 我们先建立一个容器vol_simple,该容器在/date ...
- java邮件打包在linux备份数据库练习
注:图片如果损坏,点击文章链接:https://www.toutiao.com/i6812982512256549387/ 承接上一篇文档<Java实现163邮箱发送邮件到QQ邮箱> 主方 ...
- Docker 容器备份例子
# 在 node1 执行 nginx 程序,挂载本地的目录 docker pull nginx:stable-alpine mkdir /data/html echo "hello worl ...
- docker容器安装及使用技巧
关于docker前言 A)首先是关于虚拟化 虚拟化我们可以简单的理解为一种资源管理方式.有如下几种虚拟化的方式: 1.完全虚拟化:对底层硬件实现完全的虚拟.例如:Vmware Workstation ...
- docker容器中Postgresql 数据库备份
查看运行的容器: docker ps 进入目标容器: docker exec -u root -it 容器名 /bin/bash docker 中,以root用户,创建备份目录,直接执行如下命令, p ...
- atitit.跨语言实现备份mysql数据库 为sql文件特性 api 兼容性java c#.net php js
atitit.跨语言实现备份mysql数据库 为sql文件特性 api 兼容性java c#.net php js 1. 两个方法:: bat vs mysqldump(推荐) vs lang ...
- docker容器运行java后台程序,存到数据库的时间差一天的问题
主要原因是docker容器中的时间用的是标准时间,不是用的宿主机的时间. 修改方法: docker run -e TZ="Asia/Shanghai" -d -p 80:80 -- ...
- 如何实现跨 Docker 主机存储?- 每天5分钟玩转 Docker 容器技术(73)
从业务数据的角度看,容器可以分为两类:无状态(stateless)容器和有状态(stateful)容器. 无状态是指容器在运行过程中不需要保存数据,每次访问的结果不依赖上一次访问,比如提供静态页面的 ...
- 跨主机使用 Rex-Ray volume - 每天5分钟玩转 Docker 容器技术(77)
上一节我们在 docker1 上的 MySQL 容器中使用了 Rex-Ray volume mysqldata,更新了数据库.现在容器已经删除,今天将演示在 docker2 中重新使用这个卷. 在 d ...
- docker容器跨主机网络overlay
前提:已部署好docker服务服务预计部署情况如下10.0.0.134 Consul服务10.0.0.135 host1 主机名mcw510.0.0.134 host2 主机名mcw6host1与 ...
随机推荐
- TP5系列 | Queue消息队列
消费信息如下ThinkPHP5 Queue消息队列 优点 1.Queue内置了 Redis,Database,Topthink ,Sync这四种驱动,本文使用Redis驱动 2.Queue消息队列适用 ...
- .NET科普:.NET简史、.NET Standard以及C#和.NET Framework之间的关系
最近在不少自媒体上看到有关.NET与C#的资讯与评价,感觉大家对.NET与C#还是不太了解,尤其是对2016年6月发布的跨平台.NET Core 1.0,更是知之甚少.在考虑一番之后,还是决定写点东西 ...
- 美团VS饿了么,到底谁更胜一筹?
最近啊,收到一个粉丝的投稿,我发现他在美团和饿了么都去面试过. 这俩企业大家应该都经常用吧,咱点外卖的时候,我有时候就琢磨,到底他俩谁更厉害点. 今天咱们就瞅瞅,在面试这块儿谁更难一些. (目前都只有 ...
- mysql 主从复制 + thinkphp 读写分离
好处:加快查询速度.数据库热备份等 注意:要跨服务器,先准备一个虚拟机或者docker,同一个服务器意义不大,而且风险大. 注意:本文档学习原理使用,线上可使用阿里云rds自带的读写分离 主从复制: ...
- 关于@Mapper与@MapperScan
o.m.s.mapper.ClassPathMapperScanner : Skipping MapperFactoryBean with name 'gggDao' and 'com.xxx.dao ...
- Java还是C#?我该如何选择?给年轻人的建议...
一.年轻人应该通吃 其实这不应该是我们真正的主题,而且入了行的也很少会java还是c#这么比,但初学的,java和c#往往就代表了两大流派,java代替了j2ee,c#代替了.net,ok,没有关系, ...
- SpringBoot整合Redis,并处理序列化反序列化问题
1.添加Redis依赖 在项目的pom.xml文件中添加Redis的依赖项.例如,可以使用spring-boot-starter-data-redis依赖项来引入Redis的支持. <depen ...
- 【Windows】关闭 Ctrl+Alt+Delete 锁屏
参考百度经验: https://jingyan.baidu.com/article/9158e0005787c3a2541228b3.html Win + R 运行 gpedit.msc
- 【Linux】Re01
一.三种网络模式 https://www.bilibili.com/video/BV1Sv411r7vd?p=7 1.桥接模式 该虚拟机和宿主机同一网段,和外部网络相通,但是占用网段地址资源,IP分配 ...
- 【Windows】使用Dism++打包系统
目的: 封装自己装好的操作系统,以便后续系统重装提高效率 纯净原生系统需要自己搭建开发环境,许多系统库也没有添加,费劲 网络下的整合包总是参杂些垃圾广告,不如自己封装一个 思路: 利用VMware虚拟 ...