回顾一下之前的在线热备,有以下三个步骤:
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)
网友评论