9.4.1 中的 PostgreSQL 切换和切换
PostgreSQL Switchover and Switchback in 9.4.1
环境:
PostgreSQL EDB 9.4.1
OS:rhel7
我已经配置了连续归档的流式复制。
我已执行以下步骤进行切换和切换。
我已阅读 this 其他文章。
我很困惑如果存档位置不是共享位置会发生什么。
我已按照以下步骤进行切换和切换。
切换
在高手(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 documentation.
创建一个新的时间线 ID
如果我们使用 recovery_target_timeline='latest'
那么它将使用在存档中找到的时间线,但在我的环境中存档不是共享安装点。
如果在存档中找不到时间线,是否通过流复制接收?
是的,包含时间线开关的历史文件也会被流式传输到备用服务器。
它将出现在备用目录的 pg_wal
目录中。关联的日志消息是:
LOG: fetching timeline history file for timeline 2 from primary server
备用数据库将能够跟随主数据库跨时间线切换。
环境:
PostgreSQL EDB 9.4.1 OS:rhel7
我已经配置了连续归档的流式复制。 我已执行以下步骤进行切换和切换。
我已阅读 this 其他文章。
我很困惑如果存档位置不是共享位置会发生什么。 我已按照以下步骤进行切换和切换。
切换
在高手(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 documentation.
创建一个新的时间线 ID如果我们使用 recovery_target_timeline='latest'
那么它将使用在存档中找到的时间线,但在我的环境中存档不是共享安装点。
如果在存档中找不到时间线,是否通过流复制接收?
是的,包含时间线开关的历史文件也会被流式传输到备用服务器。
它将出现在备用目录的 pg_wal
目录中。关联的日志消息是:
LOG: fetching timeline history file for timeline 2 from primary server
备用数据库将能够跟随主数据库跨时间线切换。