基于docker容器的Postgresql 11主从复制搭建 及切换
1、背景
由于新项目要用到postgresql,且要求高可用功能,因此做可行性测试研究,并记录过程,以备查。
镜像采用官方postgresl11镜像,本地镜像只是为了加快部署进度.并无特殊之处。
首次应用,难免有疏漏错误之处,欢迎批评指正。
2、环境
192.168.200.153 部署主数据库
数据盘挂载在 /home目录
192.168.205.72 部署从数据库
数据盘挂载在 /data目录
3、安装部署
3.1 主服务器
利用 docker 搭建 postgres 服务器
mkdir -p /home/postgresql/data
docker run --name test_pg --restart=always -v /home/postgresql/data:/var/lib/postgresql/data -e POSTGRES_PASSWORD=123456 -p 5432:5432 -d 192.168.200.153:5000/test_pg:0.2
-v : 建立数据卷,将 docker 内的文件系统挂载到宿主机上, linux 目录:/home/postgresql/data, docker 容器对应的路径 /var/lib/postgresql/data
-
- 进入启动的 docker 容器内部
docker exec -it test_pg /bin/bash
-
- 进入 postgres 客户端,新建用于同步数据的用户
# 切换到 postgres 用户
su postgres
# 进去 postgres 客户端
psql
进入 postgres 客户端
CREATE ROLE replica login replication encrypted password 'replica';
注:注意语句最后添加分号
创建用户成功之后,控制台会显示 “CREATE ROLE”,利用 \du 命令可以查看 postgres 的用户列表
postgres=# \du
List of roles
Role name | Attributes | Member of
-----------+------------------------------------------------------------+-----------
postgres | Superuser, Create role, Create DB, Replication, Bypass RLS | {}
replica | Replication