postgresql之物理复制与逻辑复制_异步流复制部署

------------恢复内容开始------------

--物理复制,也称为流复制(streaming replication),通过流复制复制一个一模一样的备库

--逻辑复制,也称之为选择性复制,可以做到基于表级别的复制,pg10之前的不支持内置的逻辑复制,pg10以后有支持内置的逻辑复制

WAL日志记录数据库的变化,流复制和逻辑复制都是基于wal的,流复制基于wal物理复制,逻辑复制基于wal逻辑解析postgresql之物理复制与逻辑复制_异步流复制部署

 

异步流复制部署

配置postgresql.conf文件

wal_level = replica

archive_mode = on

archive_command ='/bin/date'

max_wal_senders = 10

wal_keep_segments = 512

配置主,备库pg_hba.conf文件

host replication repuser 192.168.12.10/32 trust
host replication repuser 192.168.12.11/32 trust

创建流复制用户

postgres=# create user repuser replication login connection limit 5 encrypted password 'Aa123456';
CREATE ROLE

 在主库执行(主库发起一个在线备份,执行成功后将文件拷贝至备节点)

postgres=# select pg_start_backup('france_bk1');
tar czvf data.tar.gz data --exclude=data/pg_wal
scp data.tar.gz postgres@192.168.12.11:/home/postgres

主库执行以下命令:

postgres=# select pg_stop_backup();
Sun Oct 31 23:29:04 EDT 2021
Sun Oct 31 23:29:04 EDT 2021
NOTICE:  pg_stop_backup complete, all required WAL segments have been archived
 pg_stop_backup
----------------
 0/B000130
(1 row)

在备库配置recovery.conf文件

[postgres@localhost ~]$ cat /database/pg10/pg_root/recovery.conf

standby_mode = on

#primary_conninfo = 'host=192.168.12.10 port=1921 user=repuser password=Aa123456'
primary_conninfo = 'host=192.168.12.10 port=1921 user=repuser'
recovery_target_timeline = 'latest'

配置 ~/.pgpass文件,注意最好不要把密码写在recovery.conf文件中

postgresql之物理复制与逻辑复制_异步流复制部署

 

 最开始配置pgpass脚本没有在正确目录。或者recovery.conf文件中没有写入密码就会有以下报错

postgresql之物理复制与逻辑复制_异步流复制部署

 配置完~/.pgpass文件之后启动备库

postgresql之物理复制与逻辑复制_异步流复制部署

 

在主机上查看备库是否存在,并建立测试表

postgresql之物理复制与逻辑复制_异步流复制部署 postgresql之物理复制与逻辑复制_异步流复制部署

在备机上查看,并且测试创建表,出现以下报错(只支持读)

postgresql之物理复制与逻辑复制_异步流复制部署

 

 postgresql之物理复制与逻辑复制_异步流复制部署

注意:备库的postgresql.conf的hot_standy=on才支持查询操作,调整此参数后重启生效,如果设置成off就会出现以下报错

postgresql之物理复制与逻辑复制_异步流复制部署

 

postgresql之物理复制与逻辑复制_异步流复制部署

 

上一篇:PostgreSQL 插入数据报错:column "xxx" does not exist 解决方法


下一篇:Openjudge-计算概论(A)-年龄与疾病