使用PostgreSQL9.5配置级联复制

首先

继续MySQL之后,我们也可以在PostgreSQL中配置相同的复制。

在MySQL中,chained replication被称为PostgreSQL中的cascading replication。

即是指
主节点 -> 从节点1 -> 从节点2
的配置。

在这种情况下,Slave 1也是Slave 2的主节点。

特别事项

通过在slave1和slave2上执行常规的复制构建步骤,可以实现级联复制。但是,如果直接将slave1晋升为master,那么slave1->slave2的复制将停止。

由于slave1晋升时TimeLineID会增加,导致与slave2的TimeLineID产生差异。

为了避免这种情况发生,需要在slave的recovery.conf中添加额外的设置。

前提 tí) – premise, assumption, prerequisite

    • PostgreSQL9.5

 

    • ストリーミングレプリケーション(スレーブ非同期)

 

    • レプリケーション用ユーザ:replicator

 

    • 各ノードは全て192.168.1.0/24のネットワークに所属

 

    Ubuntu16.04

必要的设置 (bì de shè zhì)

共通 []

postgresql.conf 触发器_settings_customize.sql_file。

wal_level = hot_standby
synchronous_commit = local #スレーブ非同期
max_wal_senders = 2 #1以上、slaveの数+1
wal_keep_segments = 8 #任意

pg_hba.conf (PG Host-Based Authentication Configuration file) 在中国本地化被称为 “主机身份验证配置文件”。

host    replication     replicator      192.168.1.0/24           trust #必要に応じてmd5

在进行基本备份时,MD5将要求输入replicator用户的密码。

由postgres用户进行公钥认证设置。

我将省略详细步骤。
我们将确保所有节点都允许postgres用户使用公钥认证进行ssh登录。

师傅

创建用于复制的用户

postgres=# create user replicator replication password 'replicator';

奴隶一号

停下 PostgreSQL

$ sudo service postgresql stop

基本备份

$ sudo su - postgres
$ mv /var/lib/postgresql/9.5/main /var/lib/postgresql/9.5/main.org
$ pg_basebackup -U replicator -h MASTER_IP -D /var/lib/postgresql/9.5/main --xlog --progress --verbose

创建recovery.conf文件

$ sudo su - postgres
$ vi /var/lib/postgresql/9.5/main/recovery.conf
standby_mode = 'on'
primary_conninfo = 'user=replicator password=replicator host= MASTER_IP'
trigger_file = '/var/lib/postgresql/9.5/main/failover'
recovery_target_timeline='latest'
restore_command = 'scp MASTER_IP:/var/lib/postgresql/9.5/main/pg_xlog/%f %p 2> /dev/null'

启动PostgreSQL

$ sudo service postgresql start

奴隶2

停止 PostgreSQL

$ sudo service postgresql stop

备份基础

$ sudo su - postgres
$ mv /var/lib/postgresql/9.5/main /var/lib/postgresql/9.5/main.org
$ pg_basebackup -U replicator -h SLAVE1_IP -D /var/lib/postgresql/9.5/main --xlog --progress --verbose

创建recovery.conf文件

$ sudo su - postgres
$ vi /var/lib/postgresql/9.5/main/recovery.conf
standby_mode = 'on'
primary_conninfo = 'user=replicator password=replicator host= MASTER_IP'
trigger_file = '/var/lib/postgresql/9.5/main/failover'
recovery_target_timeline='latest'
restore_command = 'scp SLAVE1_IP:/var/lib/postgresql/9.5/main/pg_xlog/%f %p 2> /dev/null'

启动PostgreSQL

$ sudo service postgresql start

复制确认

师傅,奴隶1

$ sudo -i -u postgres psql -x -c 'SELECT * from pg_stat_replication;'
state            | streaming
であればレプリケーションが正常に行なわれている

故障切换(主节点晋升)

只需按照recovery.conf文件中指定的触发器文件创建该文件,然后通过重新启动postgresql即可实现主服务器升级。

奴隶1或奴隶2

$ sudo su - postgres
$ touch /var/lib/postgresql/9.5/main/failover
$ exit
$ sudo service postgresql restart 
广告
将在 10 秒后关闭
bannerAds