docker安装postgresql主备
时间: 2024-05-31 19:06:25 浏览: 177
api-sample-go:使用httpRouter,Docker,SwaggerUI和PostgreSQL简单Rest Golang
首先,您需要在两台服务器上安装Docker和Docker Compose。然后,您可以按照以下步骤在两台服务器上安装postgresql主备:
1. 在两台服务器上创建一个文件夹,用于存放docker-compose.yml文件和postgresql数据。
2. 创建docker-compose.yml文件,配置两个postgresql容器,并将它们连接成一个主备模式。下面是一个示例docker-compose.yml文件:
```
version: '3'
services:
master:
image: postgres:latest
restart: always
environment:
POSTGRES_PASSWORD: example
volumes:
- ./master_data:/var/lib/postgresql/data
networks:
- postgresql_network
slave:
image: postgres:latest
restart: always
environment:
POSTGRES_PASSWORD: example
POSTGRES_SLAVE: "true"
POSTGRES_MASTER_HOST: master
POSTGRES_MASTER_PORT: 5432
volumes:
- ./slave_data:/var/lib/postgresql/data
depends_on:
- master
networks:
- postgresql_network
networks:
postgresql_network:
```
在这个文件中,我们定义了两个postgresql容器,一个是主容器,另一个是备容器。主容器被命名为master,备容器被命名为slave。我们还定义了POSTGRES_SLAVE环境变量来指示备容器是从容器,并且必须连接到主容器。我们还定义了POSTGRES_MASTER_HOST和POSTGRES_MASTER_PORT环境变量来指定主容器的地址和端口。
3. 在两台服务器上运行以下命令,以启动postgresql容器:
```
docker-compose up -d
```
这将启动两个容器,一个是主容器,另一个是备容器。
4. 配置主容器以允许从备容器复制数据。在主容器中的postgresql.conf文件中添加以下配置:
```
listen_addresses = '*'
wal_level = replica
max_wal_senders = 10
```
5. 配置备容器以连接到主容器并复制数据。在备容器中的recovery.conf文件中添加以下配置:
```
standby_mode = on
primary_conninfo = 'host=master port=5432 user=postgres password=example'
trigger_file = '/var/lib/postgresql/data/failover.trigger'
```
这将使备容器连接到主容器并复制数据。如果主容器无法正常工作,则会在failover.trigger文件中创建一个标志文件,并且备容器将自动接管为主容器。
6. 在两台服务器上启动postgresql服务:
```
docker exec -it <container-name> /bin/bash
service postgresql start
```
在这里,<container-name>是您的postgresql容器名称。
现在您已经成功地安装了postgresql的主备模式。您可以测试它是否正常工作,例如在主节点创建一个表,然后在备节点上查询该表是否存在。如果主节点无法正常工作,则备节点将自动接管并成为新的主节点。
阅读全文