mkdir -p /data/psql/{master,slave,repl}
chown 999:999 /data/psql/{master,slave,repl}
docker run --name "psql-master" -d -e "POSTGRES_PASSWORD=postgres" -v /data/psql/master:/var/lib/postgresql/data postgres:12
docker exec -ti psql-master psql -U postgres -c "CREATE ROLE slave_user WITH LOGIN REPLICATION CONNECTION LIMIT 5 PASSWORD 'slave_user';"
echo "host replication slave_user 0.0.0.0/0 md5" >> master/pg_hba.conf
vi master/postgresql.conf # archive_mode = on && archive_command = '/bin/date'
docker restart psql-master
docker run -d --name "psql-slave" -e "POSTGRES_PASSWORD=postgres" -v /data/psql/slave/:/var/lib/postgresql/data -v /data/psql/repl:/var/lib/postgresql/repl --link psql-master postgres:12
docker exec -ti psql-slave pg_basebackup -R -D /var/lib/postgresql/repl -Fp -Xs -v -P -h 172.18.0.101 -p 5432 -U repuser
docker rm -f psql-slave
rm -rf slave/
mv repl slave
cat slave/postgresql.auto.conf
docker run -d --name "psql-slave" -e "POSTGRES_PASSWORD=postgres" -v /data/psql/slave/:/var/lib/postgresql/data --link psql-master postgres:12
ps -aux | grep postgres
docker exec -ti psql-master psql -U postgres -c 'select * from pg_stat_replication;'
使用 Docker 搭建 PostgreSQL 12 主从环境
最新推荐文章于 2025-06-05 11:18:21 发布