postgresql11 主从配置详解
创始人
2024-02-15 15:42:26
0

以下内容是针对pgsql11来做的。请看好版本再去考虑是否往下看

准备两台服务器,地址如下: 

主:192.168.0.1pgsql11
从:192.168.0.2pgsql11

 一、主库配置

1、创建具有复制权限的用户replica 密码为000000

CREATE ROLE replica login replication encrypted password 'xxxxxx';

2、修改postgresql.conf

首先创建归档目录:mkdir -p /var/lib/pgsql/11/data/archive。我这边是放到了我数据存储的相关目录。注意:归档目录必须要对postgres用户授权。否则启动会报错。

把postgresql.conf有关信息改成以下内容

listen_addresses = '*'            # what IP address(es) to listen on;
port = 5432                # (change requires restart)
max_connections = 1000            # (change requires restart)
shared_buffers = 128MB            # min 128kB
dynamic_shared_memory_type = posix    # the default is the first option
wal_level = replica        # minimal, replica, or logical
archive_mode = on        # enables archiving; off, on, or always
archive_command = 'cp %p  /var/lib/pgsql/11/data/archive/%f'     

# command to use to archive a logfile segment
wal_sender_timeout = 60s    # in milliseconds; 0 disables
hot_standby = on            # "on" allows queries during recovery
max_standby_streaming_delay = 30s    # max delay before canceling queries
wal_receiver_status_interval = 10s    # send replies at least this often
hot_standby_feedback = on        # send info from standby to prevent
log_directory = 'log'    # directory where log files are written
 

3、修改pg_hba.conf

把以下内容放到host最后一行。切记一定要放到最后,不然不进行复制工作。如图所示:

host replication replica 192.168.0.2/32 trust 

 4、重启主库

systemctl reload pgsql.service

这边顺带絮叨下,systemctl配置pgsql启动。

利用root权限进到目录 cd /etc/systemd/system

然后通过vi pgsql.service创建个新文件。把以下内容放到pgsql.service中。注意改下相关路径

[Unit]
Description=PostgreSQL database server
After=network.target
[Service]
Type=forking
User=postgres
Group=postgres
Environment=PGPORT=5432
Environment=PGDATA=/var/lib/pgsql/11/data/
OOMScoreAdjust=-1000
ExecStart=/usr/pgsql-11/bin/pg_ctl start -D ${PGDATA} -s -o "-p ${PGPORT}" -w -t 300
ExecStop=/usr/pgsql-11/bin/pg_ctl stop -D ${PGDATA} -s -m fast
ExecReload=/usr/pgsql-11/bin/pg_ctl reload -D ${PGDATA} -s
TimeoutSec=300
[Install]
WantedBy=multi-user.target
 

然后执行以下命令启用服务控制守护

systemctl daemon-reload 

配置开机启动 

systemctl enable pgsq.service

二、配置从库

1、验证下主库是否配置成功

[root@localhost data]# psql -h 192.168.0.1 -U postgres

psql (11.18)

Type "help" for help.

postgres=#

2、停止从库

systemctl stop pgsql.service

3、清空data数据存储

把data下的数据全清除。因为第四步要拉取主库的信息

rm -rf /var/lib/pgsql/11/data/*

4、从主库拉取数据

192.168.0.1:主库ip

pg_basebackup -h 192.168.0.1 -U replica -D /var/lib/pgsql/11/data/ -X stream -P

5、从库配置postgresql.conf

第四步拉取后的postgresql.conf文件,其实和主库中的postgresql.conf是一致的。检查下没问题就可以了

把postgresql.conf相关内容改成如下。注意归档文件的创建。

mkdir -p /var/lib/pgsql/11/data/archive/

listen_addresses = '*'            # what IP address(es) to listen on;
port = 5432                # (change requires restart)
max_connections = 1000            # (change requires restart)
shared_buffers = 128MB            # min 128kB
dynamic_shared_memory_type = posix    # the default is the first option
wal_level = replica        # minimal, replica, or logical
archive_mode = on        # enables archiving; off, on, or always
archive_command = 'cp %p /var/lib/pgsql/11/data/archive/%f'        # command to use to archive a logfile segment
wal_sender_timeout = 60s    # in milliseconds; 0 disables
hot_standby = on            # "on" allows queries during recovery
max_standby_streaming_delay = 30s    # max delay before canceling queries
wal_receiver_status_interval = 10s    # send replies at least this often
hot_standby_feedback = on        # send info from standby to prevent
log_directory = 'log'    # directory where log files are written


5、在data目录下修改或创建recovery.conf文件。如果不存在就自己创建

# 调整参数:
recovery_target_timeline = 'latest'   #同步到最新数据
standby_mode = on          #指明从库身份
trigger_file = 'failover.now'
primary_conninfo = 'host=192.168.0.1 port=5432 user=replica password=xxxxxx'   #连接到主库信息


6、启动从库

systemctl start pgsql.service

然后再主库中执行

select client_addr,sync_state from pg_stat_replication;如果有从库节点信息。表示已经创建成功了。可以实验从主库插入一条数据,不出意外的话。从库会同步到此条数据。
 

相关内容

热门资讯

公布《行政执法监督条例》 新华社北京12月23日电 国务院总理李强日前签署国务院令,公布《行政执法监督条例》(以下简称《条例》...
加快制造业中试平台高水平建设(... 四川成都高新区蜂鸟智造中试基地,洁净的车间里,数条中试生产线运转,助推科研项目“跑完”走向市场的“最...
进一步发挥房地产项目“白名单”... ● 本报记者 王舒嫄 12月22日至23日,全国住房城乡建设工作会议在北京召开。会议提出,要进一步发...
双阳法院:运用调解方式 化解行... 随着法治建设的深入推进,人民群众的法治意识和维权意识不断提高,行政案件逐渐增长,而行政争议发生在“官...
凌源钢铁股份有限公司关于诉讼进... 本公司董事会及全体董事保证本公告内容不存在任何虚假记载、误导性陈述或者重大遗漏,并对其内容的真实性、...
苏州瀚川智能科技股份有限公司 ... 证券代码:688022 证券简称:瀚川智能 公告编号:2025-097 苏州瀚川智能科技股份有限公司...
三部门:不断完善学前教育成本分... 观点网讯:12月23日,国家发展改革委、教育部、财政部联合发布《关于完善幼儿园收费政策的通知》,要求...
汪清林区法院:化解未成年人纠纷... 近日,吉林省汪清林区法院审结了一起涉未成年人在校遭受人身损害案件,法院充分考量了未成年人的行为特点及...
北京市长城保护条例 北京市人民代表大会常务委员会公告 〔十六届〕第45号 《北京市长城保护条例》已由北京市第十六届人民代...
棒杰股份(002634)披露关... 截至2025年12月23日收盘,棒杰股份(002634)报收于5.28元,较前一交易日下跌4.52%...