博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
docker 下mysql 和postgresql 数据库的搭建以及数据文件的迁移和备份
阅读量:4839 次
发布时间:2019-06-11

本文共 2854 字,大约阅读时间需要 9 分钟。

service docker start - docker 启动

service docker stop - docker 关闭

 

1.docker 镜像创建—使用的默认镜像有数据卷

docker pull hub.c.163.com/library/mysql:5.7.18 – 获取镜像

docker images  - 查看镜像(镜像id)

docker tag mysql:latest tmysql:5.7 – 添加镜像标签

docker rmi –f images_id – 删除镜像 (-f 强制删除镜像)

 

2.docker 容器的创建

docker run --name tmysql -v /home/dly:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=123456 -p 3306:3306  -d images_id – 创建并启动容器,同时有挂载配置文件,注意/home/dly权限。

docker run --name ttpostgres -p 5433:5432 -e POSTGRES_PASSWORD=123456 -v /home/dly:/var/lib/postgresql -d postgres:9.6 -- postgresql 容器创建与启动

 

docker start container – 启动容器

docker stop container – 关闭容器

docker ps –a  - 查看容器

docker exec- it container_id  /bin/bash – 进入容器

docker inspect tmysql – 查看容器的元数据

 

3.通过已有的容器创建镜像 存出和载入

docker ps – 查看备份容器的container_id

docker commit -p container_id container-backup - 使用 docker commit 命令来创建快照,生成一个作为Docker镜像的容器快照,

docker images – 查看是否生成镜像

-- # docker tag a25ddfec4d2a arunpyasi/container-backup:test

docker save -o ~/container-backup.tar container-backup - 作为tar包备份。

ls – 查看tar包是否存在。

scp  –r  ~/ container-backup.tar root@10.2.0.3:/home/dly - 服务器迁移

docker load -i ~/container-backup.tar- 加载该Docker镜像了。

docker images -查看是否镜像下载

docker run -d -p 3306:3306 –-name tmysql  container-backup  - 运行Docker容器。

docker exec –it contain_id /bin/bash –进入容器

 

 

4. 通过已有的数据卷容器的存出和载入,以下方法可以实现数据库文件从一个服务器点迁移到另一个服务器

备份

docker run –it –v /var/lib/mysql –name tmysql image_id  - 创建一个带有数据卷的容器.

## 导入数据

docker run --volumes-from container_name -v $(pwd):/backup images_id tar cvf /backup/backup.tar /var/lib/mysql

docker run --volumes-from container_name -v $(pwd):/backup images_id tar cvf /backup/backup.tar /var/lib/postgresql/data 

 

--利用数据卷容器备份,使用 –volumes-from 标记来创建一个加载 data 容器卷的容器,并从主机挂载当前目录到容器的 /backup 目录。容器启动后,在当前目录下生成的backup.tar 文件就是data容器卷的备份文件. 

恢复

docker run --name tmysql -p 3306:3306 -v /home/dly:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=123456  -d image_id  -创建一个带有空数据卷的容器 这个镜像自动带有数据卷,i是打开容器中的stdin,t是为容器分配一个伪终端.这里的d是后台运行,并打印容器ID容器,容器运行 。

docker run --volumes-from contain_name  -v $(pwd):/backup image_id tar xvf /backup/backup.tar

重启docker

此时打开数据库,数据库文件已经存在

二.postgresql

源文件服务器-- 因为docker 没有安装必要的ssh 和vim 需要单独安装

apt-get update

apt-get install ssh – 安装ssh

#apt-get install vim-gtk – 安装vim

su – postgress

pg_dumpall | ssh root@10.0.0.96 'cat > /var/pgbackup/db.out' – 目录存在 -- 导出数据文件db.out

目标文件服务器-- /var/lib/postgresql/data

docker run --name ttpostgres2 -p 5410:5432 -e POSTGRES_PASSWORD=123456 -v /var:/var/lib/postgresql/data -d postgres:9.6 -  启动容器挂载

docker exec –it ttpostgres2 /bin/bash –进入容器

su – postgres – 切换超级用户

cd /var/lib/postgresql - 进入目标路径

psql -f db.out postgres -- 导入数据文件db.out

 

尝试过数据卷的方法导入postgresql 数据文件,但是没有成功,只有使用pg_dumpall插件了。

---------------------
作者:D2012LY
来源:CSDN
原文:https://blog.csdn.net/D2012LY/article/details/77851414
版权声明:本文为博主原创文章,转载请附上博文链接!

转载于:https://www.cnblogs.com/zzsdream/p/11088651.html

你可能感兴趣的文章
在Java大环境下.NET程序员如何夺得一线生机
查看>>
GUID做主键真的合适吗
查看>>
【linux之路】常用的命令
查看>>
git将某个分支的代码完全覆盖另一个分支
查看>>
概率DP RED IS GOOD
查看>>
Linux Shell 小脚本经典收藏
查看>>
go tool proof
查看>>
numpy数组及处理:效率对比
查看>>
Luogu P1318 积水面积
查看>>
前台线程 和 后台线程
查看>>
PHP性能优化大全(转)
查看>>
shell编程
查看>>
ImageSwitch+Gallery
查看>>
【软件需求工程与建模 - 小组项目】第0周:团队成员介绍
查看>>
unresolved external symbol "public: virtual __thiscall...错误
查看>>
php连接oracle oracle开启扩展
查看>>
入门自定义标签,(在SSH里面有自定义标签的练习)
查看>>
最近遇到的一些问题汇总
查看>>
mysql插入数据报错一二
查看>>
spring mvc 常用前后台数据交互的注解
查看>>