PostgreSQL Replication之第四章 设置异步复制(3)

4.3 slave到master的切换

如果您想扩展读或您想做一个数据备份,一个 slave是件美好的事情。但是,slave可能不会一直是slave。在有些时候,您可能需要把slave转换为master。PostgreSQL提供了一些简单的方法来做到这一点。第一个也是最有可能的最便捷的方法把一个slave转换为一个master是使用pg_ctl:

iMac:slavehs$ pg_ctl -D . promote

server promoting

iMac:slavehs$ psql test

psql (9.2.4)

Type "help" for help.

test=# CREATE TABLE sample (id int4);

CREATE TABLE

promote命令会给postmaster进程发送信号并把您的slave转换为master。一旦转换完成,您就可以连接和创建对象。

除了promote命令,还有第二个选项来把slave转换为master。尤其是当您试图把PostgreSQL和一个您所选择的高可用软件整合到一起的时候,创建一个简单的文件比调用init脚本更容易。

要使用基于文件的方法,您可以添加trigger_file 命令到您的 recovery.conf文件。

trigger_file = '/tmp/start_me_up.txt'

在我们的例子中,PostgreSQL将等待一个文件/tmp/start_me_up.txt 来使条件成立。这个文件的内容是完全不相干的;PostgreSQL简单地检查文件是否存在,如果存在,就会停止恢复,把自己转换为master。

创建一个空文件是相当简单的工作:

iMac:slavehs$ touch /tmp/start_me_up.txt

数据库系统将会回应新文件start_me_up.txt

FATAL: terminating walreceiver proced fire up:

LOG: trigger file found: /tmp/start_ss due to

administrator command

LOG: redo done at 0/50000E0

LOG: selected new timeline ID: 2

LOG: archive recovery complete

LOG: database system is ready to accept connections

LOG: autovacuum launcher started

PostgreSQL将会每五秒钟一次检查您已经在recovery.conf中定义的文件。大多数情况下,这是完全正常的,而且直到目前为止,足够快。

原文地址:https://www.cnblogs.com/songyuejie/p/4743512.html