PG数据库安装
1、配置pg源
# 1. 安装前置依赖
sudo apt update
sudo apt install -y postgresql-common ca-certificates
# 2. 执行官方仓库配置脚本
sudo /usr/share/postgresql-common/pgdg/apt.postgresql.org.sh
# 3. 安装最新稳定版 PostgreSQL
sudo apt install -y postgresql postgresql-contrib
#如需安装指定版本例如17
sudo apt install -y postgresql-17 postgresql-client-17
2、设置基础配置
sudo -u postgres psql -c "ALTER USER postgres WITH PASSWORD '你的强密码';"
sudo vi /etc/postgresql/18/main/postgresql.conf # 可修改运行目录以及配置优化
sudo vi /etc/postgresql/18/main/pg_hba.conf # 添加 host 规则,比如远程访问
sudo systemctl restart postgresql
sudo systemctl start postgresql
sudo systemctl status postgresql
# 验证数据目录
sudo -u postgres psql -c "SHOW data_directory;"
3、配置允许从库复制
vi /etc/postgresql/18/main/pg_hba.conf
# 允许从库进行复制连接
host replication replicator 214.27.8.215/32 scram-sha-256
# 允许从库进行基础备份(pg_basebackup)
host all postgres 214.27.8.215/32 scram-sha-256
#允许所有用户远程登录
host all all 0.0.0.0/0 scram-sha-256
4、配置复制专用账号
sudo -u postgres psql
-- 创建专用复制用户
CREATE USER replicator WITH REPLICATION ENCRYPTED PASSWORD 'Dream001$';
-- 创建物理复制槽(防止主库过早清理 WAL)
SELECT pg_create_physical_replication_slot('replica_214_slot');
-- 查看复制槽
SELECT slot_name, slot_type, active FROM pg_replication_slots;
\q
#重启主库生效
sudo systemctl restart postgresql
5、从库安装
#安装步骤与主库步骤一致
#安装完后,先不启动执行向主库同步操作
sudo -u postgres pg_basebackup -h 123.181.192.66 -U repl -D /data/postgresql/17/main -Fp -Xs -P -R
#命令解读-U指定创建的复制用户 -h是连接主库的地址 -D是指定本地的数据目录位置,最后会交互式输入密码
#如果执行同步报错提示目录不存在,则需要执行下面初始化下从库
su - postgres -c "/usr/lib/postgresql/17/bin/initdb -D /data/postgresql/17/main -E UTF8 --locale=en_US.UTF-8"
同步成功后,最后启动从库的服务
6、查看主从同步状态
#在主库查看有几个从库再同步
SELECT * FROM pg_stat_replication;
#在从库查看
SELECT
now() AS check_time,
pg_is_in_recovery() AS is_standby,
pg_last_wal_receive_lsn() AS receive_lsn,
pg_last_wal_replay_lsn() AS replay_lsn,
pg_wal_lsn_diff(pg_last_wal_receive_lsn(), pg_last_wal_replay_lsn()) AS replay_lag_bytes,
pg_last_xact_replay_timestamp() AS last_replay_time,
now() - pg_last_xact_replay_timestamp() AS replay_delay;
7、如果需要将从库提升为主库
将从库提升为主库
sudo -u postgres pg_ctl promote -D /data/postgresql/17/main
sudo -u postgres /usr/lib/postgresql/17/bin/pg_ctl promote -D /data/postgresql/17/main #如果 pg_ctl 命令找不到,指定完整路径

浙公网安备 33010602011771号