zoukankan      html  css  js  c++  java
  • docker 下mysql 和postgresql 数据库的搭建以及数据文件的迁移和备份

    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
    版权声明:本文为博主原创文章,转载请附上博文链接!

  • 相关阅读:
    Visual Studio 2010使用Visual Assist X的方法
    SQL Server 2000 评估版 升级到 SQL Server 2000 零售版
    双网卡多网络单主机同时访问
    开发即过程!立此纪念一个IT新名词的诞生
    delphi dxBarManager1 目录遍历 转为RzCheckTree2树
    5320 软件集合
    delphi tree 从一个表复制到另一个表
    DELPHI 排课系统课表
    长沙金思维 出现在GOOGLE的 金思维 相关搜索里啦!!
    如何在DBGrid的每一行前加一个单选框?
  • 原文地址:https://www.cnblogs.com/zzsdream/p/11088651.html
Copyright © 2011-2022 走看看