docker 搭建postgresql 集群,一主两从

本文详细介绍了如何使用Docker搭建一个PostgreSQL主从集群,包括创建数据库容器,获取IP,配置主库的pg_hba.conf和postgresql.conf,创建复制角色,停服并同步从库数据,最后进行从库连接测试。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、创建三个数据库
docker run --name master -p 54320:5432 -e POSTGRES_PASSWORD=123 -v $(pwd)/master:/var/lib/postgresql/data -d postgres:9.6
docker run --name slave0 -p 54321:5432 -e POSTGRES_PASSWORD=121 -v $(pwd)/slave0:/var/lib/postgresql/data -d postgres:9.6
docker run --name slave1 -p 54322:5432 -e POSTGRES_PASSWORD=122 -v $(pwd)/slave1:/var/lib/postgresql/data -d postgres:9.6

2、获取三个数据库的ip地址
docker inspect master |grep IPAddress 172.17.0.2
docker inspect slave0 |grep IPAddress 172.17.0.3
docker inspect slave1 |grep IPAddress 172.17.0.4

3、配置主库,将从库的ip地址添加到pg_hba.conf
vim pg_hba.conf
在最下面添加:
host replication repuser 172.17.0.3/32 md5
host replication repuser 172.17.0.4/32 md5

4、在主库的目录下,修改postgresql.conf 文件
命令行:vim postgresql.conf
wal_level = hot_standby
max_wal_senders = 3
wal_keep_segments = 16
wal_sender_timeout = 60s
hot_standby = on
synchronous_standby_names = ‘*’

vim中用#进行注释,修改时需要将#删除

要在 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 集群的步骤,希望能对你有所帮助。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值