docker安装postgresql

须知:postgres为psql的超级用户
进入docker容器命令:docker exec -it 容器id bash
查看容器以及状态:docker ps -a
查看运行中的容器:docker ps
1.查询postgresql镜像 docker search postgres

NAME --镜像名称

DESCRIPTION --镜像描述

STARS --标星数

OFFICIAL --官方的

AUTOMATED – 自动化

2.拉去镜像文件 docker pull postgres:10
导入镜像:docker load -i 镜像包名.tar
3.查看docker的镜像库
docker images
4.将镜像安装到容器中并启动
docker run --name postgres -v /data/psql/data:/var/lib/postgresql/data --priviledged=true -p 5432:5432 -e POSTGRES_PASSWORD=123456 -d postgres:10

–restart=always 表示容器退出时,docker会总是自动重启这个容器(可以自行添加);
–name: 指定创建的容器的名字;
-e POSTGRES_PASSWORD=password: 设置环境变量,指定数据库的登录口令为password;
-p 5432:5432: 端口映射将容器的5432端口映射到外部机器的5432端口;
-v /data/psql/data:/var/lib/postgresql/data 将运行镜像的/var/lib/postgresql/data目录挂载到本机/data/psql/data目录下
-d postgres:10: 指定使用postgres:10作为镜像。

5.进入容器psql 命令行:
docker exec -it 容器id bash【输入命令后的目录为docker的psql容器下的root用户,可以创建文件】
6.进入psql的根部录下,也就是psql的配置文件数据等目录下:

cd $PSDATA

补充:该目录下的内容已经在安装容器的时候映射出到本地/data/psql/data 目录下,更改本地文件配置也是可以


7.进入psql命令行
**1.进入postgres用户

su - postgres

**2.输入:psql 即可进入命令行
8.创建用户名、密码以及将表的权限赋予用户(也可以在Navicat上赋予权限)
创建用户名:CREATE USER admin WITH PASSWORD '123456';
创建数据库create DATABASE “my-data”;
表的权限授给用户:GRANT ALL PRIVILEGES ON DATABASE "库名" TO “用户名”;

数据备份与还原命令

##pg_dump和pg_restore
1.pg_dump 备份

pg_dump -h 127.0.0.1 -p 5432 -U postgres -Fc -f /opt/t-bf.tar.gz my-data
-p:端口号
-Fc:F格式化 c为格式化中的模式之一
my-data:库名
-f:指定备份文件的路径文件名


2.pg_restore恢复数据
pg_resotre -h 127.0.0.1 -p 5432 -U postgres -d my-data /opt/t-bf.tar.gz
-d:指定恢复到哪个库下
补充:docker下本人是将备份文件传到docker的psql容器里进行数据恢复
将备份文件上传到psql容器的/目录下【docker exec -it 容器id bash 进入 ls查看就可以看见,然后执行恢复命令】
docker cp /opt/t-bf.tar.gz 容器id:/


pg_wal 不一样的增量备份

**pg_wal 备份日志的物理备份,没有用pg_basebackup 也米有用pg_rman插件
首先要明白 psql 下的data目录下 pg_wal 下的文件。wal文件是实现数据备份的重要条件,当开启日志归档配置后,达到配置或归档标准,日志就进行归档,最好将归档日志进行单独保存,配置中有相应配置,pg_wal备份 = 基础备份+wal增量 。只需要将pg_wal下的文件和归档日志合并,和要恢复psql的基础备份pg_wal下的文件替换 并启动即可。

1. 这里相当于做了一个基础备份。

既然是物理备份,那就可以将psql 的data下的所有文件压缩打包到另一台服务器上(新的服务器psql的data要清空:rm -rf data/*),然后解压所有文件放到新的服务器data下。

2.增量日志

既然是增量当然要将日志归档,需要用到psql 的data目录下的postgres.conf 配置文件
wal_level=replica
archive_mode=on
fsync=on
archive_command='test ! -f /pg_back/%f && cp %p /pg_back/%f ’
^ _^ :::: archive_command 配置是将归档日志放入pg_back目录下,【该目录是在psql的data目录下,本地也可以】
手动归档:前提要进入psql的命令行
select pg_switch_wal(); //低版本为select pg_switch_xlog(); 我这里用的10
手动归档完 可以查看pg_back目录下的归档日志 ,当出现 *****.done 等带有后缀 则归档失败 建议删除重新归档


增加完数据 并归档后 将pg_back 和pg_wal 合并 替换掉要恢复的psql的data下的pg_wal ,重启查看数据 或者 docker logs -f psql ID 查看docker psql 的日志。


该文章为本人笔记,如有错误还请多多指教


Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐