为了在两台RHEL 8服务器上安装并配置PostgreSQL 14的主从架构,你需要按照以下步骤操作。这将包括安装PostgreSQL、初始化数据库、调整配置、设置归档目录等。请确保你具有root或具有适当权限的用户访问权限来执行这些操作。
1. 安装PostgreSQL 14
在两台服务器上都执行以下步骤:
-
添加PostgreSQL Yum仓库:
sudo dnf -y install https://download.postgresql.org/pub/repos/yum/reporpms/EL-8-x86_64/pgdg-redhat-repo-latest.noarch.rpm
-
安装PostgreSQL:
sudo dnf -y install postgresql14-server
2. 初始化数据库
在两台服务器上都执行:
sudo /usr/pgsql-14/bin/postgresql-14-setup initdb
3. 更改数据目录
-
停止PostgreSQL服务:
sudo systemctl stop postgresql-14
-
创建新的数据目录:
sudo mkdir -p /data/postgres/pgdata sudo chown -R postgres:postgres /data/postgres
-
初始化新的数据目录:
sudo -u postgres /usr/pgsql-14/bin/initdb -D /data/postgres/pgdata
-
更新PostgreSQL服务文件:
编辑/usr/lib/systemd/system/postgresql-14.service
,找到Environment=PGDATA=
行并更改为:Environment=PGDATA=/data/postgres/pgdata
然后重新加载systemd配置:
sudo systemctl daemon-reload
4. 配置PostgreSQL
在主服务器上:
-
修改postgresql.conf:
编辑/data/postgres/pgdata/postgresql.conf
文件,设置以下参数:listen_addresses = '*' max_connections = 2000 wal_level = replica archive_mode = on archive_command = 'cp %p /home/postgres/archives/%f'
-
修改pg_hba.conf:
编辑/data/postgres/pgdata/pg_hba.conf
,添加以下行以允许从服务器连接:host replication all 192.168.197.129/32 md5
同时允许远程连接:
host all all 0.0.0.0/0 md5
在从服务器上:
-
修改postgresql.conf:
编辑/data/postgres/pgdata/postgresql.conf
文件,设置以下参数:listen_addresses = '*' max_connections = 2000 hot_standby = on
-
修改pg_hba.conf 与主服务器相同。
5. 设置归档目录
在两台服务器上都执行以下步骤:
sudo mkdir -p /home/postgres/archives
sudo chown -R postgres:postgres /home/postgres/archives
6. 设置主从复制
-
在主服务器上创建复制用户:
sudo -u postgres psql -c "CREATE USER replicator REPLICATION LOGIN CONNECTION LIMIT 2 ENCRYPTED PASSWORD 'your_password';"
-
在从服务器上配置复制:
停止PostgreSQL服务:sudo systemctl stop postgresql-14
清理旧的数据目录:
sudo -u postgres rm -rf /data/postgres/pgdata/*
使用pg_basebackup进行基础备份:
sudo -u postgres pg_basebackup -h 192.168.197.128 -D /data/postgres/pgdata -U replicator -v -P --wal-method=fetch
创建recovery.conf文件:
sudo -u postgres bash -c "cat > /data/postgres/pgdata/recovery.conf <<EOF standby_mode = 'on' primary_conninfo = 'host=192.168.197.128 port=5432 user=
replicator password=your_password’
trigger_file = ‘/tmp/MasterNow’
EOF"
### 7. 启动PostgreSQL服务
在两台服务器上:
```bash
sudo systemctl start postgresql-14
sudo systemctl enable postgresql-14
8. 验证设置
- 在主服务器上,检查是否有连接到从服务器的复制流程。
- 在从服务器上,检查是否能够查询数据并确认处于只读模式。
注意事项
- 确保防火墙和安全组设置允许这两台服务器在相应端口(默认是5432)上相互通信。
- 保持密码的安全性和复杂性。
- 以上步骤可能需要根据实际环境进行适当调整。