目录
一、多节点搭建pg单库
装机3大项、网卡、互信、yum等...
二、主库postgres.conf:
listen_addresses = '*' # 监听的IP地址
wal_level = hot_standby # 启用热备模式
synchronous_commit = on # 开启同步复制
max_wal_senders = 32 # 同步最大的进程数量
wal_sender_timeout = 60s # 流复制主机发送数据的超时时间
max_connections = 100 # 最大连接数,从库的max_connections必须要大于主库的
wal_keep_segments = 256 # 设置流复制保留的最多的xlog数目,不要设置太小导致WAL日志还没有来得及传送到standby就被覆盖。一个WAL文件默认16M
hot_standby = on # "on" allows queries during recovery 设置为备库时是否支持可读
logging_collector = on
log_directory = 'pg_log'
log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log'
三、pg_hba.conf
3.1去数据库先建立同步用户:
CREATE ROLE replica login replication encrypted password 'replica';
SELECT usename from pg_user;
SELECT rolname from pg_roles;
3.2给pg_hba.conf加
host replication xxx 10.10.10.0/32 trust
四、从库
4.1
先吧data下清空,然后:
pg_basebackup -D /usr/local/postgresql/data -h 主节点ip -p 5432 -U replica -X stream -P
4.2 从库配置文件设置1
vim /usr/local/postgresql/data/recovery.conf
standby_mode = on #声明此节点为从库
primary_conninfo = 'host=192.168.79.110 port=5432 user=replica password=replica' #对应主库的连接信息
recovery_target_timeline = 'latest' #流复制同步到最新的数据
4.3 从库配置文件设置2
vim /usr/local/postgresql/data/postgresql.conf
max_connections = 1000 # 最大连接数,从节点需设置比主节点大
hot_standby = on # 开启热备
max_standby_streaming_delay = 30s # 数据流备份的最大延迟时间
wal_receiver_status_interval = 1s # 从节点向主节点报告自身状态的最长间隔时间
hot_standby_feedback = on # 如果有错误的数据复制向主进行反馈
4.4 启动从库
4.5 检查
ps -ef | grep wal
or:
select usename "username"
,client_addr "client_addr"
,backend_start "backend_start"
,state "state"
,case
when state = 'startup' then '正在启动'
when state = 'catchup' then '追赶主库'
when state = 'streaming' then '流传送'
when state = 'backup' then '发送备份'
when state = 'stopping' then '发送停止'
end "WAL状态"
,case
when sync_state = 'async' then '异步'
when sync_state = 'potential' then '后备失效变同步'
when sync_state = 'sync' then '同步'
when sync_state = 'quorum' then '候选'
end "同步状态名称"
,round(pg_wal_lsn_diff(pg_current_wal_lsn(),replay_lsn) /(1024 * 1024),2) as "同步延迟_MB"
from pg_stat_replication;
select
sender_host,sender_port
,status "WAl接收状态"
,last_msg_send_time "接收到最后的消息发送时间"
,last_msg_receipt_time "接收到最后的消息接收时间"
from pg_stat_wal_receiver;
本文详细介绍了如何搭建PostgreSQL的多节点环境,包括主库和从库的配置,如设置postgres.conf和pg_hba.conf文件,创建同步用户,使用pg_basebackup创建从库,以及从库的启动和状态检查。重点强调了同步复制和热备的相关参数设置。
3684

被折叠的 条评论
为什么被折叠?



