简单写一写Pgsql-12集群的搭建过程


# 获取安装包,网速较慢,建议Ke Xue Shang Wang
sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
sudo yum install -y postgresql12-server

# 数据目录建立与赋权
sudo mkdir /mnt/data/pgdata
sudo chown -R postgres.postgres /mnt/data/pgdata

# 环境变量
sudo vim /usr/lib/systemd/system/postgresql-12.service
Environment=PGDATA=/mnt/data/pgdata
sudo systemctl daemon-reload

# 初始化(以下操作在postgres角色下进行)
/usr/pgsql-12/bin/postgresql-12-setup initdb
systemctl start postgresql-12

# 创建主从备份用户及改密
psql
create role pgpool with login password 'postgres';
create role repl login replication encrypted password 'postgres';
alter user postgres with password 'postgres';


主节点进行以下配置
cat >> /mnt/data/pgdata/pg_hba.conf << EOF
host    all            all     0.0.0.0/0          md5 
host    replication    repl    本机ip/32    trust
host    replication    repl    节点1 ip/32    trust #从节点1
host    replication    repl    节点n ip/32    trust #从节点n
host    all                all      本机ip 最后一位替换为0/24      md5 
EOF

cat >> /mnt/data/pgdata/postgresql.conf << EOF
listen_addresses = '*' #开启后子节点才能访问
archive_mode = on
max_connections = 21000
archive_command = 'cp "%p" "/var/lib/pgsql/archivedir/%f"'
max_wal_senders = 10
max_replication_slots = 10
wal_level = replica
hot_standby = on
wal_log_hints = on
EOF


从节点进行以下配置:
cat >> /mnt/data/pgdata/postgresql.conf << EOF
primary_conninfo = 'host=主节点ip port=5432 user=repl(主节点对应账号) password=密码'
recovery_target_timeline = latest  
hot_standby = on
max_standby_streaming_delay = 30s
wal_receiver_status_interval = 10s
hot_standby_feedback = on
EOF

echo "standby_mode = on" >> /mnt/data/pgdata/standby.signal


# 重启服务
使用启停方式,不要restart

# 从库进行以下验证:
rm ‐rf /mnt/data/pgdata/*
pg_basebackup -h 主节点ip -U repl -D /data/pgdata -X stream -P 
iptables -I INPUT -p tcp --dport 5432 -j ACCEPT

# 查询同步状态
select client_addr,usename,backend_start,application_name,sync_state,sync_priority FROM pg_stat_replication;

相关