文档说明
本文档用于介绍使用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);
以下步骤就将从库提升为主库,如果需要添加其他从库,需要按照上面的配置进行配置即可。
