在两台 RHEL 8 服务器上搭建 PostgreSQL 和 pgpool-II 环境涉及到安装 PostgreSQL、配置流复制(Streaming Replication)以及安装和配置 pgpool-II。以下是详细的步骤:
### 准备工作
1. **获取服务器**:确保你有两台运行 RHEL 8 的服务器。假设服务器 IP 地址分别为 `Server1: 192.168.1.1` 和 `Server2: 192.168.1.2`。
2. **网络配置**:确保两台服务器之间的网络是通畅的,并且能够互相访问。
### 安装 PostgreSQL
1. **添加 PostgreSQL YUM 仓库**:在两台服务器上执行以下命令:
```
sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-8-x86_64/pgdg-redhat-repo-latest.noarch.rpm
```
2. **安装 PostgreSQL**:选择一个 PostgreSQL 版本进行安装,例如 PostgreSQL 12:
```
sudo dnf -qy module disable postgresql
sudo dnf install -y postgresql12-server
```
3. **初始化数据库**:在两台服务器上初始化 PostgreSQL 数据库:
```
sudo /usr/pgsql-12/bin/postgresql-12-setup initdb
```
4. **启动 PostgreSQL 服务**:
```
sudo systemctl enable postgresql-12
sudo systemctl start postgresql-12
```
### 配置流复制(主-从配置)
1. **配置主服务器(Server1)**:
- 编辑 `pg_hba.conf` 文件,允许从服务器连接:
```
host replication postgres 192.168.1.2/32 trust
```
- 编辑 `postgresql.conf`,开启复制功能:
```
listen_addresses = '*'
wal_level = replica
max_wal_senders = 3
max_replication_slots = 3
```
- 重启 PostgreSQL 服务。
2. **在主服务器上创建复制用户**:
```
sudo -u postgres psql -c "CREATE USER replicator REPLICATION LOGIN CONNECTION LIMIT 2 ENCRYPTED PASSWORD 'yourpassword';"
```
3. **配置从服务器(Server2)**:
- 停止 PostgreSQL 服务。
- 清空数据目录。
- 使用 `pg_basebackup` 从主服务器获取数据:
```
pg_basebackup -h 192.168.1.1 -D /var/lib/pgsql/12/data -U replicator -v -P -X stream
```
- 创建 `recovery.conf` 文件,配置主服务器信息。
4. **启动从服务器 PostgreSQL 服务**。
### 安装和配置 pgpool-II
1. **在两台服务器上安装 pgpool-II**:
```
sudo dnf install -y pgpool-II-12
```
2. **配置 pgpool-II**:
- 配置 `pgpool.conf`,设置后端数据库和负载均衡等。
- 配置 `pool_hba.conf` 和 `pcp.conf`。
3. **启动 pgpool-II 服务**:
```
sudo systemctl start pgpool-II-12
```
### 验证和测试
1. **验证复制状态**:在主服务器上检查复制状态。
2. **测试 pgpool-II**:通过 pgpool-II 连接数据库,并执行一些查询来测试负载均衡和故障转移。
### 注意事项
- 在执行以上步骤时,确保正确地替换 IP 地址、用户名、密码等信息。
- 还需注意防火墙和 SELinux 设置,以确保服务之间可以通信。
- 此过程可能会因具体环境和版本而有所不同,因此建议参照最新的官方文档进行操作。
这是一个基础的安装和配置指南,实际部署时可能需要更详细的配置和调整,以满足特定的性能和安全要求。