PG主从搭建——简易版

本文介绍如何在单台机器上使用PostgreSQL 9.6版本进行主从数据库的搭建,包括环境准备、主从库创建、同步状态检查等步骤,并解决了配置过程中遇到的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

此次主从搭建全部使用pg9.6,在同一个机器上安装主库和从库,主库从库分别使用不同的端口

目录

1 环境准备

2 主从搭建-主库

3.主从搭建-备库

4.主从同步状态检查

5.安装过程中的问题


​​​​​​​​​​​​​​

​​​​​​​

1 环境准备


1.1 软件准备

文件:postgresql-9.6.17.tar.bz2(直接官网下载)
解压:tar -xvf /pg/soft/postgresql-9.6.17.tar.bz2

软件目录:
/pg/soft/postgresql-9.6.17
安装目录:(prefix指定安装目录)
/pg/pg96
主库data目录:/pg/pg96data_pri
从库data目录:/pg/pg96data_slave

(注意区分软件目录,安装目录,data目录)


1.2 configure
cd /pg/soft/postgresql-9.6.17
 ./configure --prefix=/pg/pg96 

1.3 编译
make  && make install

2 主从搭建-主库


2.1 创建主库
/pg/pg96/bin/initdb -D /pg/pg96data_pri

2.2 创建同步用户
启动数据库
/pg/pg96/bin/pg_ctl -D /pg/pg96data_pri -l /pg/pg96data_pri/server.log start
登陆数据库
psql postgres
创建用户
create role lzl login replication encrypted password 'lzl';

2.3 网络访问设置 pg_hba.conf
vi /pg/pg96data_pri/pg_hba.conf

host replication      lzl         172.17.100.150/32          md5 
#host    replication            lzl           0.0.0.0/0               trust

2.4 数据库配置 postgresql.conf
vi /pg/pg96data_pri/postgresql.conf
listen_addresses = '172.17.100.150'   #监听地址
wal_level = hot_standby  #热备模式 
max_wal_senders= 6 #可以设置最多几个流复制链接 
wal_keep_segments = 64
max_connections = 512 
archive_mode = on #允许归档  
archive_command = 'cd ./'

2.5 重启主库
/pg/pg96/bin/pg_ctl -D /pg/pg96data_pri stop
/pg/pg96/bin/pg_ctl -D /pg/pg96data_pri -l /pg/pg96data_pri/server.log start

3.主从搭建-备库

3.1 备份一个复制库
/pg/pg96/bin/pg_basebackup -h 172.17.100.150 -U lzl -D /pg/pg96data_sla -X stream -P 

3.2 recovery.conf 
#copy recovery.conf文件不太需要cp,它仅是一个都是注释的一般配置文件
#cp /pg/pg96/share/postgresql/recovery.conf.sample /pg/pg96data_sla/recovery.conf 

编辑recovery.conf 
vi /pg/pg96data_sla/recovery.conf 
standby_mode = on
primary_conninfo = 'host=172.17.100.150 port=5432 user=lzl password=lzl'
trigger_file = '/pg/pg96data_sla/trigger.kenyon'
recovery_target_timeline = 'latest' 

3.3 配置从库配置文件postgresql.conf
vi /pg/pg96data_sla/postgresql.conf
listen_addresses = '172.17.100.150'
port = 5433  #端口
wal_level = hot_standby 
hot_standby = on #从库开启查询
max_connections = 512 

3.4 启动从库

/pg/pg96/bin/pg_ctl -D /pg/pg96data_sla -l /pg/pg96data_sla/server.log start

4.主从同步状态检查


4.1 同步状态检查
#>psql postgres
postgres=# \x on
Expanded display is on.
postgres=# select * from pg_stat_replication;
-[ RECORD 1 ]----+------------------------------
pid              | 15335
usesysid         | 16384
usename          | lzl
application_name | walreceiver
client_addr      | 172.17.100.150
client_hostname  | 
client_port      | 13336
backend_start    | 2021-07-27 09:22:57.140532+00
backend_xmin     | 
state            | streaming
sent_location    | 0/3000AE0
write_location   | 0/3000AE0
flush_location   | 0/3000AE0
replay_location  | 0/3000AE0
sync_priority    | 0
sync_state       | async

4.2 数据同步测试
#>psql postgres
create table t1(a int);
insert into t1 values(1);
#>psql -p5433 postgres
postgres=# select * from t1;
 a 
---
 1
(1 row)

5.安装过程中的问题

 ./configure 报错

configure时报错如下:

configure: error: zlib library not found
If you have zlib already installed, see config.log for details on the
failure.  It is possible the compiler isn't looking in the proper directory.
Use --without-zlib to disable zlib support.

解决办法:

1. --without-zlib      zlib会用于pg的压缩功能,如果不用可以不需要编译
2.yum install zlib-devel       如果只安装zlib是不行的,同样会报zlib找不到,需要安装zlib-devel

备库启动报错

备库start报错如下:
FATAL:  data directory "/pg/pg96data_sla" has group or world access
DETAIL:  Permissions should be u=rwx (0700).

解决办法:

data目录权限因为0700
chmod 700 /pg/pg96data_sla

参考资料:
http://www.postgres.cn/docs/12/warm-standby.html#STREAMING-REPLICATION
https://www.cnblogs.com/sunshine-long/p/9059695.html
https://blog.csdn.net/yaoqiancuo3276/article/details/80404883
https://blog.csdn.net/zhuenze1991/article/details/78517842
https://blog.csdn.net/qianglei6077/article/details/94379351

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

liuzhilongDBA

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值