docker部署postgresql并挂载数据卷
-
备份postgresql源文件
-
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
-
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
-
-
创建数据卷
# 创建总数据卷文件夹 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;
-
下载镜像并创建运行容器
# 下载指定镜像版本或者下载最新版本(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=密码 -
查看容器信息
# 查看容器是否运行 docker ps # 查看容器列表(得到容器名或者容器ID) docker ps -a # 查看容器日志 docker logs 容器名或者容器ID # 获取容器的元数据 docker inspect 容器名或者容器ID
-
还原数据库
-
通过工具或者命令把最开始备份的文件上传到/home/centos/data-volume/postgresql-volume/databasefile目录下
-
复制备份文件至容器中
# docker cp 宿主机文件路径 容器名或者容器ID:容器文件路径 docker cp /home/centos/data-volume/postgresql-volume/databasefile/demo_postgresql.bak demo-postgresql:/home
-
进入容器
# exec命令可以进入容器并且在退出时不会打断容器运行 docker exec -it demo-postgresql /bin/bash
-
登录postgresql命令行控制台
# psql -U 用户名(容器创建时若不指定用户则postgres为默认用户) psql -U postgres
-
创建新的数据库(在执行还原命令前需要创建一个空的数据库)
# 以下为postgresql命令行控制台状态 # 创建新的数据库 postgres=# create database demo_postgresql; # 查看数据库列表 postgres=# \l # 退出控制台状态 postgres=# \q
-
执行数据库还原命令
# psql -h localhost -p 数据库端口 -U 数据库用户名 -d 要还原的数据库名 < 还原文件的路径/还原文件名 psql -h localhost -p 5432 -U postgres -d demo_postgresql < /home/demo_postgresql.bak
-
退出容器
exit 或者 Ctrl + D
-
-
保存日志
# 将容器的日志实时下载到指定路径: 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