news 2026/4/15 18:02:19

Docker 启动 PostgreSQL 主从架构:实现数据同步

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Docker 启动 PostgreSQL 主从架构:实现数据同步

1、准备环境

IP地址主机名角色
10.16.12.115postgresql01主库
10.16.12.116postgresql02从库

3、拉取postgresql镜像

docker pull registry.cn-hangzhou.aliyuncs.com/qiluo-images/postgres-with-gis:16.4

4、创建db网络

docker network create --driver bridge dbnet

5、创建数据目录

mkdir/data/postgresql/data -pchmod-R777/data/postgresql/data

docker-compose.yml文件编写

主库文件:

sudotee/data/postgresql/docker-compose.yml<<-'EOF' version: '3.0' services: postgresql: image: registry.cn-hangzhou.aliyuncs.com/qiluo-images/postgres-with-gis:16.4 restart: always container_name: postgresql01 environment: POSTGRES_PASSWORD: admin@123 working_dir: /postgresql networks: - dbnet ports: - "5432:5432" volumes: - /data/postgresql/data:/var/lib/postgresql/data networks: dbnet: external: true EOF

从库文件:

sudotee/data/postgresql/docker-compose.yml<<-'EOF' version: '3.0' services: postgresql: image: registry.cn-hangzhou.aliyuncs.com/qiluo-images/postgres-with-gis:16.4 restart: always container_name: postgresql02 environment: POSTGRES_PASSWORD: admin@123 working_dir: /postgresql networks: - dbnet ports: - "5432:5432" volumes: - /data/postgresql/data:/var/lib/postgresql/data networks: dbnet: external: true EOF

启动postgresql服务

cd/data/postgresql docker-compose up -d docker-composeps

部署主库

dockerexec-it postgresql01 /bin/bashsu- postgres psql CREATE ROLE replica login replication encrypted password'replica@123';
修改postgresql.confvi/data/postgresql/data/postgresql.conf ```bash listen_addresses='*'archive_mode=on archive_command='/bin/date'max_connections=1024max_wal_senders=32wal_sender_timeout=60s wal_keep_size=16wal_level=replica

修改pg_hba.conf
vi /data/postgresql/data/pg_hba.conf

hostreplication replica0.0.0.0/32 trust

部署从库

dockerexec-it postgresql02 /bin/bash 在容器中运行相关命令:rm-rf /var/lib/postgresql/data/*

如果退出了,则再次进入

dockerexec-it postgresql02 /bin/bashsu- postgres pg_basebackup -R -D /var/lib/postgresql/data -P -h192.168.52.15 -p5432-U replica
docker restart postgresql02# 查看/data/postgresql/data下的 postgresql.auto.conf

、查看进程

主机查看主数据库

ps-ef|greppostgres

从机查看从数据库

dockerps|greppostgres

测试同步

在主机容器中

dockerexec-it postgresql01 /bin/bashsu- postgres psql create database test12;\list

在从机查看已经同步

dockerexec-it postgresql02 /bin/bashsu- postgres psql\list

关闭selinux

sed-i's#SELINUX=enforcing#SELINUX=disabled#g'/etc/selinux/config setenforce0
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!