postgresql - PostgreSQL 9.4.1 中的切换和切回
问题描述
环境:
PostgreSQL EDB 9.4.1 操作系统:rhel 7
我已经配置了带有连续归档的流复制。我已执行以下步骤进行切换和切回。
我已经阅读了其他文章。
如果存档位置不是共享位置,我很困惑会发生什么。我已按照以下步骤进行切换和切回。
切换
在主人 (192.xxxx.128)
pg_ctl -D /opt/PostgresPlus/9.4AS/data stop --mode=fast
创建
recovery.conf
:standby_mode = 'on' primary_conninfo = 'user=replication password=Replication@123 host=192.xxx.129 port=5432' recovery_target_timeline = 'latest' trigger_file = '/tmp/node1' restore_command = 'rsync -a /home/postgres/restore/%f %p
pg_ctl -D /opt/PostgresPlus/9.4AS/data start
psql -U postgres -c "select pg_is_in_recovery()"
在待机 (192.xx.129):
ps -ef | grep postgres
touch locationoftrigeerfile
在主要(192.xx.129):
- 连接应用程序和测试
以上步骤完成切换。
现在切换
在主要(192.xx.129):
pg_ctl -D $PGDATA stop --mode=fast
创建
recovery.conf
并添加standby_mode = 'on' primary_conninfo = 'user=replication password=postgres host=192.xxx.128 port=5432 sslmode=prefer sslcompression=1 krbsrvname=postgres' restore_command = 'cp %p /home/postgres/restore_5444/%f' recovery_target_timeline = 'latest' trigger_file='/tmp/pg_promote_5432'`
pg_ctl -D $PGDATA start --mode=fast
psql -U postgres -c "select pg_is_in_recovery();"
在中学 (192.xxx.128):
ps -ef | grep postgres
touch locationoftrigeerfile
我的问题:
对于每个促销活动,都会根据PostgreSQL 文档创建一个新的时间线 ID 。
如果我们使用recovery_target_timeline='latest'
,那么它将使用在存档中找到的时间线,但在我的环境中存档不是共享挂载点。
如果在存档中找不到时间线,是否通过流复制接收?
解决方案
是的,包含时间线切换的历史文件也将流式传输到备用服务器。
它将显示在备用pg_wal
目录中。相关的日志消息是:
LOG: fetching timeline history file for timeline 2 from primary server
备用数据库将能够跨时间线切换跟随主要数据库。
推荐阅读
- go - 如何在 Golang 中重新输入函数?
- javascript - 如何在选择选项上保留一次更改的数据值?
- swift - Swift 从私钥获取公共 RSA 密钥?
- c# - 在网格视图中显示列表
- materialize - 如何使用物化使元素在大屏幕上居中?
- android - 再次滚动到顶部时的 TwoWayView 空白问题
- javascript - 无法在 Sinon 中对 Firebase 功能进行单元测试
- reactjs - React 中的 props 和紧耦合组件如何处理?
- batch-file - 如何使用 ffmpeg 将 rmvb 转换为相同质量的 mp4?
- sql - 不使用任何函数或 where 子句的表的最后一行