基于Docker-compose实现的Postgresql-11的主从复制
以下是一个简化的Docker-compose配置示例,用于设置PostgreSQL 11的主从复制:
version: '3'
services:
master:
image: postgres:11
environment:
POSTGRES_DB: 'mydb'
POSTGRES_USER: 'myuser'
POSTGRES_PASSWORD: 'mypassword'
volumes:
- pgdata_master:/var/lib/postgresql/data
ports:
- "5432:5432"
slave:
image: postgres:11
environment:
POSTGRES_DB: 'mydb'
POSTGRES_USER: 'myuser'
POSTGRES_PASSWORD: 'mypassword'
POSTGRES_REPLICA_USER: 'replica'
POSTGRES_REPLICA_PASSWORD: 'replicapassword'
volumes:
- pgdata_slave:/var/lib/postgresql/data
depends_on:
- master
command: >
bash -c '
echo "archive_mode = on" >> /var/lib/postgresql/data/postgresql.conf;
echo "synchronous_standby_names = '*'" >> /var/lib/postgresql/data/postgresql.conf;
echo "primary_conninfo = 'host=master port=5432 user=myuser password=mypassword'" >> /var/lib/postgresql/data/recovery.conf;
chown -R postgres:postgres /var/lib/postgresql/data;
exec docker-entrypoint.sh postgres;
'
volumes:
pgdata_master:
pgdata_slave:
这个配置中,master
服务设置了一个PostgreSQL主实例,slave
服务设置了一个PostgreSQL从实例。在slave
服务中,我们定义了复制用的用户和密码。命令部分修改了PostgreSQL配置文件,以启用归档模式和同步复制。
请注意,这个配置假设您已经安装了Docker和Docker-compose。您需要根据实际情况调整环境变量中的数据库名、用户和密码。此外,对于生产环境,您还需要考虑额外的配置,如SSL配置、额外的监控和管理工具等。
评论已关闭