docker pg9.6 主从配置
时间: 2024-10-11 19:01:11 浏览: 26
Docker用于容器化应用,而PostgreSQL(pg9.6)是一款流行的开源关系型数据库管理系统。要在Docker容器中设置主从复制(Master-Slave replication),你需要执行以下步骤:
1. **安装PostgreSQL Docker镜像**:
使用官方的PostgreSQL镜像,例如`postgres`, 或者如果需要特定版本如pg9.6,你可以使用`library/postgres:9.6-alpine`。
```sh
docker pull library/postgres:9.6-alpine
```
2. **启动主数据库(Master)**:
创建一个新的容器并映射数据卷到容器内部,以便持久存储数据。在启动时指定 `-e POSTGRES_PASSWORD=mysecretpassword` 设置密码,确保容器监听网络端口供其他容器连接。
```sh
docker run -d --name my_postgres_master \
-p 5432:5432 \
-v /path/to/local/data:/var/lib/postgresql/data \
-e POSTGRES_PASSWORD=mysecretpassword \
library/postgres:9.6-alpine
```
3. **启动从数据库(Slave)**:
创建另一个容器并设置为从主数据库复制。同样,创建数据卷,指定数据库密码和网络参数。使用`-e MASTER_HOST=$(hostname)` 和 `--link my_postgres_master:maindb` 命令,连接到主数据库。
```sh
docker run -d --name my_postgres_slave \
-p 5433:5432 \
-e POSTGRES_PASSWORD=mysecretpassword \
-e MASTER_USER=your_username \
-e MASTER_HOST=$(hostname) \
--link my_postgres_master:maindb \
library/postgres:9.6-alpine
```
4. **配置主从复制**:
在主数据库上运行SQL命令启用wal接收器(walreceiver),然后在从库上运行`pg_basebackup`或`streaming-replication-start`等命令启动复制。这通常在启动时由脚本处理,但也可以手动进行。
```sql
-- 主库(master)
ALTER SYSTEM SET listen_addresses = '*';
CREATE USER your_username WITH REPLICATION ENCRYPTED PASSWORD 'your_password';
-- 从库(slave)
pg_basebackup -h $(hostname) -U your_username -P your_password -Ft -D /var/lib/postgresql/data
```
5. **监控与故障转移**:
可以考虑使用如pgAdmin或Prometheus、Grafana这样的工具对主从模式进行管理和监视,以防主库出现问题时能自动切换到从库。
阅读全文