异步方式主库上的事务不会等待备库接收日志流发出确认信息后主库才 向客户端返回成功,很明显,异步方式会有延迟,但是提高了业务的响应速度。下面介绍配置环境搭建。
1. 详细配置环境
下面开始实战,首先准备两台服务器,采用了 2 个虚机做测试,分别是:
● 主库(master)CentOS release 6.5 (Final)10.0.0.100 postgresql 9.5.9。
● 从库(standby)CentOS release 6.7 (Final)10.0.0.110 postgresql 9.5.9。
2. 主库配置
首先要提前在 master 机器 10.0.0.100 安装好 PostgreSQL,采用二进制安装包,具体参考本节的 PostgreSQL 二进制安装过程。
注意此处的操作都是在主库(10.0.0.100)上进行的,首先打开数据目录下的 postgresql.conf 文件然后做以下修改:
1.listen_address = '*'( 默认 localhost) 2.port = 10280 ( 默认是 5432) 3.wal_level = hot_standby( 默认是 minimal) 4.max_wal_senders=2( 默认是 0) 5.wal_keep_segments=64( 默认是 0)
复制
下面对上述参数稍作说明。
第一个是监听任何主机,wal_level 表示启动搭建 Hot Standby,max_wal_ senders 则需要设置为一个大于 0 的数,它表示主库最多可以有多少个并发的Standby 数据库,而最后一个 wal_keep_segments 也应当设置为一个尽量大的值, 以防止主库生成 WAL 日志太快,日志还没有来得及传送到 Standby 就被覆盖, 但是需要考虑磁盘空间允许,一个 WAL 日志文件的大小是 16MB:
3.0K archive_status
如 上,一个 WAL 日志文件是 16MB,如果 wal_keep_segments 设置为 64,也就是说将为 Standby 库保留 64 个 WAL 日志文件,那么就会占用16×64=1GB 的磁盘空间,所以需要综合考虑,在磁盘空间允许的情况下设置得大一些,就会减少 Standby 重新搭建的风险。接下来还需要在主库创建一个超级用户来专门负责让 Standby 连接去拖 WAL 日志:
CREATE ROLE replica login replication encrypted password 'replica';
复制
接下来打开数据目录下的 pg_hba.conf 文件然后做如下修改:
如上配置的意思是允许用户 replica 从 10.0.0.110/32 网络上发起到本数据库的流复制连接,简言之,即允许从库服务器连接主库去拖 WAL 日志数据。主库配置很简单,到此就算结束了,启动主库并继续配置从库: