docker 部署 postgresql 集群
时间: 2023-07-03 09:33:50 浏览: 216
要在 Docker 中部署 PostgreSQL 集群,可以使用 Docker Compose 来管理多个容器。以下是部署 PostgreSQL 集群的步骤:
1. 创建 Docker Compose 配置文件
在任意目录下创建一个 `docker-compose.yml` 文件,填写以下内容:
```
version: '3'
services:
primary:
image: postgres
ports:
- "5432:5432"
environment:
- POSTGRES_PASSWORD=your_password
- POSTGRES_USER=your_user
- POSTGRES_DB=your_database
volumes:
- primary:/var/lib/postgresql/data
standby:
image: postgres
environment:
- POSTGRES_PASSWORD=your_password
- POSTGRES_USER=your_user
- POSTGRES_DB=your_database
- STANDBY=1
volumes:
- standby:/var/lib/postgresql/data
depends_on:
- primary
volumes:
primary:
standby:
```
其中,`primary` 和 `standby` 分别表示主节点和备份节点,`POSTGRES_PASSWORD`、`POSTGRES_USER` 和 `POSTGRES_DB` 分别是 PostgreSQL 的密码、用户名和数据库名。`volumes` 指定了数据卷的挂载位置,这可以确保数据在容器重启后可以被保留。
2. 启动 PostgreSQL 集群
在配置文件所在目录下执行以下命令来启动 PostgreSQL 集群:
```
docker-compose up -d
```
这条命令会在后台启动两个容器,一个是主节点,一个是备份节点。
3. 切换到主节点
进入主节点容器内:
```
docker exec -it <primary_container_name> bash
```
切换到 PostgreSQL 环境:
```
psql -U your_user your_database
```
执行以下命令,将主节点设置为可写:
```
SELECT pg_create_physical_replication_slot('replica_slot');
```
4. 切换到备份节点
进入备份节点容器内:
```
docker exec -it <standby_container_name> bash
```
切换到 PostgreSQL 环境:
```
psql -U your_user your_database
```
执行以下命令,将备份节点设置为只读:
```
SELECT pg_create_physical_replication_slot('replica_slot', true);
SELECT pg_basebackup('host=<primary_container_name> port=5432 user=your_user password=your_password sslmode=prefer', '-X stream -c fast -R -P');
```
其中,`<primary_container_name>` 是主节点容器的名称。
5. 测试 PostgreSQL 集群
在主节点中创建一个表:
```
CREATE TABLE test (id SERIAL PRIMARY KEY, name VARCHAR(50));
INSERT INTO test (name) VALUES ('test');
```
在备份节点中查询该表:
```
SELECT * FROM test;
```
如果能够查询到数据,说明 PostgreSQL 集群已经搭建成功。
以上就是在 Docker 中部署 PostgreSQL 集群的步骤,希望能对你有所帮助。
阅读全文