PostgreSQL DBA快速入门(二) - 高可用流复制配置

PostgreSQL DBA快速入门(二) - 高可用流复制配置

之前的文章中我们谈论了单机PostgreSQL实例的部署,有人可能会说这不是生产级别的配置,因为没有任何高可用机制呀。那么本篇文章,我们来谈谈如何配置高可用流复制。

主从复制

PostgreSQL一直以来不支持复制,复制通过Pgpool、Slony等外部工具来实现。因为这些解决方案并不是开箱即用的,所以大部分方案的实现都需要进行复杂的配置。由于这个缺点,导致很多人转向已经提供复制功能很久的MySQL。

从PostgreSQL9.0开始,PostgreSQL自身完善了复制功能 - 主从之间的WAL流复制。下面让我们来一起看一下如何给一个PostgreSQL主节点增加一个从节点。

这里我们需要有两台PostgreSQL主机。例子中,主节点IP为10.0.0.101,从节点IP为10.0.0.102。我们假设10.0.0.101和10.0.0.102上的PostgreSQL已经运行,下面我们将102配置添加为101的从节点。

首先我们需要创建一个用于复制的用户。在主节点我们运行以下命令:

postgres=# CREATE ROLE repl WITH REPLICATION PASSWORD 'password' LOGIN;
CREATE ROLE

接下来,需要修改主节点的pg_hba.conf文件并重载PostgreSQL,以开放访问:

host  replication  repl              10.0.0.102/32  md5

service postgresql reload

我们也可以在从节点的pg_hba.conf文件上添加一条主节点的类似信息,因为在未来的某一刻,从节点会提升为主节点:

host  replication  repl              10.0.0.101/32  md5

接下来,我们需要对主节点和从节点的postgresql.conf文件进行部分配置。其中一些配置是当主节点切换为从节点时才能用到的,我们在这里提前配置好。

  • wal_level - 设置为hot_standby
  • max_wal_senders - 设置为超过当前从节点数量的值
  • checkpoint_segments - 默认值为3,建议设置的比默认值大一点,一个较好的实践值为16。
  • wal_keep_segments - 设置为同checkpoint_segments相同的值
  • hot_standby - 开启该选项

接下来需要将主节点的数据转移到从节点。要完成该操作,我们使用pg_basebackup工具,在这之前我们需要先将从节点的数据目录内容删除:

rm -rf /var/lib/postgresql/9.4/main/*

上面命令执行完后,我们可以在从节点上执行以下pg_basebackup命令:

pg_basebackup --xlog-method=stream -D /var/lib/postgresql/9.4/main/ -U repl -h 10.0.0.101

上面命令完成后,可以看到在从节点的数据目录下面出现很多新的数据文件。下面还有一些事情要做,我们需要创建一个recovery.conf文件来让从节点可以链接到主节点。配置信息如下:

standby_mode = 'on'
primary_conninfo = 'host=10.0.0.101 port=5432 user=repl password=password'
trigger_file = '/tmp/failover.trigger'

最后,我们需要确认一下数据目录的权限是否配置正确。如果没问题,下面可以启动从节点了:

chmod -R g-rwx,o-rwx /var/lib/postgresql/9.4/main/ ; chown -R postgres.postgres /var/lib/postgresql/9.4/main/

service postgresql start

从下面的信息,我们可以确认主从复制已经配置完毕:

$ psql
psql (9.4.8)
Type "help" for help.

postgres=# select client_addr, state, sent_location, write_location,
postgres-#         flush_location, replay_location from pg_stat_replication;
 client_addr |   state   | sent_location | write_location | flush_location | replay_location
-------------+-----------+---------------+----------------+----------------+-----------------
 10.0.0.102  | streaming | 0/130011E0    | 0/130011E0     | 0/130011E0     | 0/130011E0
(1 row)

总结

正如我们所见,PostgreSQL的主从复制配置并不复杂。一主多从的机制可以为生产环境提供更好的保障。

转载于:https://my.oschina.net/javacy/blog/1920016

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值