栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

docker部署postgresql并挂载数据卷

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

docker部署postgresql并挂载数据卷

docker部署postgresql并挂载数据卷
  1. 备份postgresql源文件
    1. windows下备份数据库

      # 进入到postgresql安装路径下的bin文件
      cd D:Program FilesPostgreSQL10bin
      # 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
    
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/836226.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号