pg_basebackup方式部署流复制

回顾一下之前的在线热备,有以下三个步骤:
1、主库执行pg_start_backup('hmcbk')
2、拷贝主库的$PGDATA数据文件和表空间到备份节点
3、主库执行pg_stop_backup()

而pg_basebackup可以整合这几个步骤。(前提是主库部分的postgresql.conf内容正常配置,创建好流复制用户和修改好pg_hba)。

开始--------------------------------------------------------------
备库执行命令

pg_basebackup -D /data/pgdata -Fp -Xs -v -P -h 172.17.0.2 -p 5432 -U repuser

重要参数解释:

  • -D 指定数据目录,尽量和主库保持一致。
  • -F 指定生成的备份数据格式,有两个选项(t、p)
    t:(tar)格式是指将备份文件打个tar包存放在-D指定的目录里,系统文件被打成了base.tar,其它表空间文件被打成了oid.tar,其中oid为表空间的oid。此选项适用于备份存档。
    p: (plain)格式是指生成的备份数据和主库上的数据文件布局一样,也就是和主库上一样。
  • -X 设置在备份的过程中产生的wal日志包含在备份中的方式,有两个选项(f、s)。
    f: (fetch)是指wal日志在基准备份完成后被传送备份节点,这时主库上的wal_keep_segments参数需要设置的较大,以免备份过程中产生的wal还没发送到备份节点之前的就备主库覆盖了,那么将会失败。
    s: (stream)方式中主库上除了启动一个基准备份的wal发送进程外还会额外启动一个wal发送进程用于发送主库产生的wal增量日志流,生产环境推荐此种方式。
  • -v 表示启用verbose模式,命令执行过程中打印出各阶段的日志。
  • -P 显示数据文件、表空间文件近似传输百分比,可以了解进度。
  • -h -p -U这些都是数据库连接通用参数。

然后再创建recovery.conf文件。
文件内容

recovery_target_timeline = 'latest'
standby_mode = on
primary_conninfo = 'host=172.17.0.2 port=5432 user=repuser'

这里没有直接写明文密码,我们在~.pgpass文件下添加内容。
内容如下

[postgres@pgslave ~]$ cat .pgpass
172.17.0.2:5432:replication:repuser:12345
172.17.0.3:5432:replication:repuser:12345

然后启动备库即可。

以上就是异步流复制的实现。

同步流复制只需要处理两个地方,一个是备库的recovery.conf文件,另一个是主库的postgresql.conf。

其中备库的recovery.conf中primary_conninfo里面添加一个字段application_name用来向主库说明身份。如

recovery_target_timeline = 'latest'
standby_mode = on
primary_conninfo = 'host=172.17.0.2 port=5432 user=repuser application_name=node2'

主库postgresql.conf中synchronous_standby_names参数中添加上面recovery.conf里面新加的application_name的值,如果是多个备库的话,用“,”分隔。如

synchronous_standby_names = 'node2'

最后reload主库,重启备库。
主库验证 状态已经成了sync同步了。

postgres=# select * from pg_stat_replication ;
 pid | usesysid | usename | application_name | client_addr | client_hostname | client_port |         backend_start         | backend_xmin |   state   | sent_lsn  | write_lsn | flush_
lsn | replay_lsn |    write_lag    |    flush_lag    |   replay_lag    | sync_priority | sync_state
-----+----------+---------+------------------+-------------+-----------------+-------------+-------------------------------+--------------+-----------+-----------+-----------+-------
----+------------+-----------------+-----------------+-----------------+---------------+------------
 411 |    16384 | repuser | node2            | 172.17.0.3  |                 |       47542 | 2019-11-24 00:47:37.278837+00 |              | streaming | 0/40002C8 | 0/40002C8 | 0/4000
2C8 | 0/40002C8  | 00:00:00.000315 | 00:00:00.000315 | 00:00:00.000315 |             1 | sync
(1 row)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。