docker部署postgresql并挂载数据卷

docker部署postgresql并挂载数据卷

  1. 备份postgresql源文件
    1. windows下备份数据库

      # 进入到postgresql安装路径下的bin文件
      cd D:\Program Files\PostgreSQL\10\bin
      # pg_dump -h localhost -p 数据库端口 -U 数据库用户名 -d 要备份的数据库名 > 备份后文件的路径\备份文件名
      pg_dump -h localhost -p 5432 -U postgres -d demo_postgresql > D:\demo_postgresql.bak
      
    2. ubuntu下备份数据库

      # 进入到postgresql安装路径下的main文件
      cd /etc/postgresql/12/main/
      # pg_dump -h localhost -p 数据库端口 -U 数据库用户名 -d 要备份的数据库名 > 备份后文件的路径\备份文件名
      pg_dump -h localhost -p 5432 -U postgres -d demo_postgresql > /home/centos/demo_postgresql.bak
      
  2. 创建数据卷
    # 创建总数据卷文件夹
    mkdir /home/centos/data-volume
    # 创建postgresql数据卷文件夹
    mkdir /home/centos/data-volume/postgresql-volume
    # 创建postgresql-data、databasefile、log文件夹
    cd /home/centos/data-volume/postgresql-volume; mkdir postgresql-data; mkdir databasefile; mkdir log;
    
  3. 下载镜像并创建运行容器
    # 下载指定镜像版本或者下载最新版本(postgres:latest)
    docker pull postgres:12.3
    # 创建并运行容器
    docker run -it -d --name demo-postgresql \
    -v /home/centos/data-volume/postgresql-volume/postgresql-data:/var/lib/postgresql/data \
    -p 54321:5432 -e POSTGRES_PASSWORD=postgres postgres:12.3
    
    参数说明
    -i以交互模式运行容器,通常与 -t 同时使用
    -t为容器重新分配一个伪输入终端,通常与 -i 同时使用
    -d后台运行容器,并返回容器ID
    –name为容器指定一个名称
    -v绑定一个数据卷,数据卷不会随着容器的删除而消失,格式为:主机(宿主)数据卷文件或目录:容器文件或目录
    -p指定端口映射,格式为:主机(宿主)端口:容器端口
    -e设置默认用户postgres的密码,格式为POSTGRES_PASSWORD=密码
  4. 查看容器信息
    # 查看容器是否运行
    docker ps
    # 查看容器列表(得到容器名或者容器ID)
    docker ps -a
    # 查看容器日志
    docker logs 容器名或者容器ID
    # 获取容器的元数据
    docker inspect 容器名或者容器ID
    
  5. 还原数据库
    1. 通过工具或者命令把最开始备份的文件上传到/home/centos/data-volume/postgresql-volume/databasefile目录下

    2. 复制备份文件至容器中

      # docker cp 宿主机文件路径 容器名或者容器ID:容器文件路径
      docker cp /home/centos/data-volume/postgresql-volume/databasefile/demo_postgresql.bak demo-postgresql:/home
      
    3. 进入容器

      # exec命令可以进入容器并且在退出时不会打断容器运行
      docker exec -it demo-postgresql /bin/bash
      
    4. 登录postgresql命令行控制台

      # psql -U 用户名(容器创建时若不指定用户则postgres为默认用户)
      psql -U postgres
      
    5. 创建新的数据库(在执行还原命令前需要创建一个空的数据库)

      # 以下为postgresql命令行控制台状态
      # 创建新的数据库
      postgres=# create database demo_postgresql;
      # 查看数据库列表
      postgres=# \l
      # 退出控制台状态
      postgres=# \q
      
    6. 执行数据库还原命令

      # psql -h localhost -p 数据库端口 -U 数据库用户名 -d 要还原的数据库名 < 还原文件的路径/还原文件名
      psql -h localhost -p 5432 -U postgres -d demo_postgresql < /home/demo_postgresql.bak
      
    7. 退出容器

      exit 或者 Ctrl + D
      
  6. 保存日志
    # 将容器的日志实时下载到指定路径:  docker logs -f 容器名或者Id >> 路径/文件 &
    docker logs -f demo-postgresql >> /home/centos/data-volume/postgresql-volume/log/demo-postgresql.log &
    #查看日志
    docker logs -f demo-postgresql
    cat /home/centos/data-volume/postgresql-volume/log/demo-postgresql.log
    
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值