Back

postgres - 设置master slave standby 主从服务器 -

发布时间: 2019-04-19 07:42:00

参考 https://linuxconfig.org/how-to-create-a-hot-standby-with-postgresql

1. 先安装 postgres

2. 配置主服务器, (MASTER)

修改配置文件:

/etc/postgresql/9.5/main/pg_hba.conf

增加下面这一行:

host replication postgres 39.140.xx.yy md5

想测试postgres的配置文件是否正确,没有nginx -t 这样的方法。 需要

postgres=# SELECT pg_reload_conf();
 pg_reload_conf
----------------
 t
(1 row)

postgres=# 

如果没报错,就说明没问题。 否则会报错。

3. 继续修改配置文件

wal_level = hot_standby
synchronous_commit = local
archive_mode = on
archive_command = 'cp %p /var/lib/postgresql/9.5/main/archive/%f'
listen_addresses = '*'
max_wal_senders = 2
wal_keep_segments = 10
hot_standby = on
# seems useless
synchronous_standby_names = 'pgmaster001'

4. 重启( 记得不能使用reload,  也不能使用postgres用户,要使用root用户的权限 )

$ sudo service postgresql stop

$ sudo service postgresql start 

记得多看看  tail /var/log/postgresql/post..main.log -f

也使用 service postgresql status 来查看状态

5. 配置slave 服务器

先把slave关掉。

wal_level = hot_standby
synchronous_commit = local
listen_addresses = '*'
max_wal_senders = 2
wal_keep_segments = 10
hot_standby = on
# seems useless
synchronous_standby_names = 'pgslave001'

然后,

$ cd /var/lib/postgresql/9.5

$ mv main main_0419

$ mkdir main  

$ chmod 700 main 

$ chown postgres:postgres main

运行备份数据的命令:

postgres@database:/root$ pg_basebackup -h 52.82.xx.yy -D /var/lib/postgresql/9.5/main -U postgres -v -P
Password: 
pg_basebackup: initiating base backup, waiting for checkpoint to complete
pg_basebackup: checkpoint completed
15944876/15944876 kB (100%), 1/1 tablespace                                         
NOTICE:  pg_stop_backup complete, all required WAL segments have been archived
pg_basebackup: base backup completed

搞定后,编辑新文件:

$ vim /var/lib/postgresql/9.5/main/recovery.conf

standby_mode = 'on'
primary_conninfo = 'host=52.82.xx.yy port=5432 user=postgres password=postgres application_name=pgslave001'
restore_command = 'cp /var/lib/postgresql/9.5/main/archive/%f %p'
trigger_file = '/tmp/postgresql.trigger.5432'

chmod 600 recovery.conf

有时候需要 ulimit -s 7000 这样的设置

然后重启 postgres.  记得  tail /var/log/postgresxx.log

使用该slave

pg_ctl promote

Back