docker run --name pgsmaster -p 5500:5432 -e POSTGRES_PASSWORD=pgsmaster -v /home/pg/pgsmaster:/var/lib/postgresql/data -d postgres
docker run --name pgsslave -p 5501:5432 -e POSTGRES_PASSWORD=pgsslave -v /home/pg/pgsslave:/var/lib/postgresql/data -d postgres
POSTGRES_USER
POSTGRES_PASSWORD
POSTGRES_DB
psql -h172.17.0.2 -Upostgres -p5432
sed -ir "s/#*max_replication_slots.*/max_replication_slots= 10/" postgresql.conf
sed -ir "s/#*max_wal_senders.*/max_wal_senders = 10/" postgresql.conf
sed -ir "s/#*wal_level.*/wal_level = replica/" postgresql.conf
sed -ir "s/#*archive_mode.*/archive_mode = on/" postgresql.conf
sed -ir "s/#*archive_command.*/archive_command = '\/bin\/date'/" postgresql.conf
sed -ir "s/#*synchronous_standby_names.*/synchronous_standby_names = '*'/" postgresql.conf
# 检查
cat postgresql.conf | grep "max_replication_slots\|max_wal_senders\|wal_level\|archive_mode\|archive_command\|synchronous_standby_names"
增加复制节点授权
host replication postgres 172.17.0.3/32 trust
docker exec -it -u postgres pgsmaster pg_ctl stop
docker restart pgsmaster
docker exec -it -u postgres pgsslave /bin/bash
postgres@2311e1d22803:~$ pg_basebackup -R -D /var/lib/postgresql/repl -Fp -Xs -v -P -h 172.17.0.2 -p 5432 -U postgres
pg_basebackup: initiating base backup, waiting for checkpoint to complete
pg_basebackup: checkpoint completed
pg_basebackup: write-ahead log start point: 0/3000028 on timeline 1
pg_basebackup: starting background WAL receiver
pg_basebackup: created temporary replication slot "pg_basebackup_37"
24291/24291 kB (100%), 1/1 tablespace
pg_basebackup: write-ahead log end point: 0/3000100
pg_basebackup: waiting for background process to finish streaming ...
pg_basebackup: syncing data to disk ...
pg_basebackup: renaming backup_manifest.tmp to backup_manifest
pg_basebackup: base backup completed
docker cp pgsslave:/var/lib/postgresql/repl /home/pg
docker run --name pgsslave -p 5501:5432 -e POSTGRES_PASSWORD=pgsslave -v /home/pg/repl:/var/lib/postgresql/data -d postgres
select * from pg_stat_replication;
开启归档
# - Archiving -
archive_mode = on
# (change requires restart)
archive_command = 'mkdir -p /var/lib/postgresql/data/archivedir && test ! -f /var/lib/postgresql/data/archivedir/%f && cp %p /var/lib/postgresql/data/archivedir/%f'
# placeholders: %p = path of file to archive
# %f = file name only
# e.g. 'test ! -f /mnt/server/archivedir/%f && cp %p /mnt/server/archivedir/%f'
然后重复上述步骤即可,也可一次性到位
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。