CentOS docker-compose安装Postgresql 17主从
时间: 2025-06-29 08:11:27 浏览: 23
### 部署 PostgreSQL 17 主从集群
为了在 CentOS 上通过 Docker Compose 实现 PostgreSQL 17 的主从复制配置,需遵循特定步骤来设置环境并编写 `docker-compose.yml` 文件。
#### 准备工作
确保已安装 Docker 和 Docker Compose。对于 Centos 系统而言,可以按照官方指南完成这两个工具的安装[^2]。考虑到 PostgreSQL 官方并没有提供版本号为 17 的镜像(当前最高稳定版远低于此编号),这里假设意图是指向最新可用的主要版本之一;实际操作时应替换为目标的具体标签。
#### 编写 docker-compose.yml 文件
创建一个新的目录用于保存项目文件,并在此目录下建立名为 `docker-compose.yml` 的文件:
```yaml
version: '3'
services:
db_master:
image: postgres:latest
container_name: pg_master
environment:
POSTGRES_USER: user
POSTGRES_PASSWORD: password
POSTGRES_DB: mydb
volumes:
- ./master-data:/var/lib/postgresql/data
ports:
- "5432:5432"
networks:
- pgnet
db_slave:
image: postgres:latest
container_name: pg_slave
depends_on:
- db_master
environment:
POSTGRES_USER: user
POSTGRES_PASSWORD: password
PGDATA: /var/lib/postgresql/data/pgdata
POSTGRES_HOST_AUTH_METHOD: trust
command: >
bash -c "
echo 'host replication all 0.0.0.0/0 trust' >> $$PGDATA/pg_hba.conf &&
echo 'wal_level=replica' >> $$PGDATA/postgresql.conf &&
echo 'max_wal_senders=3' >> $$PGDATA/postgresql.conf &&
echo 'hot_standby=on' >> $$PGDATA/postgresql.conf &&
pg_basebackup -h db_master -D $$PGDATA -U replicator -P --write-recovery-conf &&
exec postgres -D $$PGDATA
"
volumes:
- ./slave-data:/var/lib/postgresql/data/pgdata
networks:
- pgnet
networks:
pgnet:
volumes:
master-data:
slave-data:
```
上述 YAML 文件定义了一个包含两个服务 (`db_master`, `db_slave`) 的网络,在其中设置了必要的环境变量以及命令以初始化数据库实例间的流复制连接[^1]。
请注意,这段脚本中的某些部分可能需要根据实际情况调整,比如用户名、密码等敏感信息应当被妥善保管而不是硬编码于配置文件内。
执行如下指令启动集群:
```bash
$ sudo docker-compose up -d
```
这将会以后台模式运行所有指定的服务容器。
阅读全文
相关推荐



















