文档说明
本文档用于介绍使用docker来部署postgresql(主从)
环境
软件 | 版本信息 |
---|---|
docker | Docker version 20.10.1, build 831ebea |
postgresql | postgres:12.5 |
部署步骤
1、docker拉postgresql镜像。
docker pull postgres:12.5
2、编辑配置文件docker-compose.yml如下。
version: ``'3' services: ``database: ``image: ``'postgres:12.5' ``container_name: ``'postgres-dev-slave' ``restart: always ``privileged: ``true ``environment: ``POSTGRES_USER: ``'postgres' ``POSTGRES_PASSWORD: ``'fdafadfafa' ``POSTGRES_DB: ``'postgres' ``PGDATA: ``'/var/lib/postgresql/data/pgdata' ``ports: ``- ``'5501:5432' ``volumes: ``- /data/postgresql/pg_data/data2:/var/lib/postgresql/data/pgdata |
---|
3、启动postgresql。
在配置文件目录下,执行docker-compose up -d
4、配置master主库
编辑配置文件pg_hba.conf,添加如下配置
// replication_username: 复制账号; slave_ip: 从库所在的服务器ip ``host replication <replication_username> <slave_ip>/``32 md5 |
---|
5、进入master容器,创建复制账号并验证
# ``1``.进入容器 ``docker exec -it pgsmaster bash # ``2``.连接PostgreSQL ``psql -U postgres # ``3``.创建用户 ``set synchronous_commit =off; ``// replication_username: 对应上面设置的复制账号; replication_username_password: 认证密码 ``create role <replication_username> login replication encrypted password ``'<replication_username_password>'``; # ``4``.验证用户 ``\du |
---|
6、配置slave从库
# ``1``.拷贝主库的data文件到从库 使用cp、ssh方式均可 # ``2``.修改从库配置文件postgresql.conf文件,添加以下配置 // replication_username: 复制账号(同主库); master_ip: 主库所在的服务器ip; master_port: 主库端口; replication_username_password: 认证密码 ``primary_conninfo = ``'host=<master_ip> port=<master_port> user=<replication_username> password=<replication_username_password>' # ``3``.在与postgresql.conf同级的目录下,新增空文件standby.signal # ``4``.启动从库 |
---|
7、测试
在主库建表,发现在从库会自动同步该表。
从库无法进行写操作。
演练主库故障
1、将主库关闭
docker stop postgres-dev-master
2、进入从库
docker exec -it postgres-dev-slave /bin/bash
3、进入postgres
psql -U postgres
4、执行
select pg_promote(true,60);
以下步骤就将从库提升为主库,如果需要添加其他从库,需要按照上面的配置进行配置即可。