为了在两台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)上相互通信。
- 保持密码的安全性和复杂性。
- 以上步骤可能需要根据实际环境进行适当调整。