标签:异步 wal postgresql postgres 复制 pg conf 备库
------------恢复内容开始------------
--物理复制,也称为流复制(streaming replication),通过流复制复制一个一模一样的备库
--逻辑复制,也称之为选择性复制,可以做到基于表级别的复制,pg10之前的不支持内置的逻辑复制,pg10以后有支持内置的逻辑复制
WAL日志记录数据库的变化,流复制和逻辑复制都是基于wal的,流复制基于wal物理复制,逻辑复制基于wal逻辑解析
异步流复制部署
配置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文件中
最开始配置pgpass脚本没有在正确目录。或者recovery.conf文件中没有写入密码就会有以下报错
配置完~/.pgpass文件之后启动备库
在主机上查看备库是否存在,并建立测试表
在备机上查看,并且测试创建表,出现以下报错(只支持读)
注意:备库的postgresql.conf的hot_standy=on才支持查询操作,调整此参数后重启生效,如果设置成off就会出现以下报错
标签:异步,wal,postgresql,postgres,复制,pg,conf,备库 来源: https://www.cnblogs.com/LuoYao666/p/15469424.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。