PG的流复制类似于Oracle中的DG,利用WAL(Redo)日志传输属于物理复制,优点在于延迟较小
主库为已初始化好数据库PG实例,备库为已安装好软件但未初始化的数据库
ip | 角色
———-|———-
192.168.56.39|主库
192.168.56.40|备库
这里注意,必须要配置replication权限
host replication all 0.0.0.0/0 trust
这里all 是不包括replication权限的
host all all 0.0.0.0/0 trust
[postgres@pg40 ~]$ pg_basebackup -D /pgdata/ -h 192.168.56.39 -R -X s -P335994/335994 kB (100%), 1/1 tablespace
我们使用了-R参数,在拉取的备份文件中会自动生成recovery文件
standby_mode = 'on'recovery_target_timeline = 'latest'primary_conninfo = 'application_name=stb40 user=postgres passfile=''/home/postgres/.pgpass'' host=192.168.56.39 port=5432 sslmode=prefer sslcompression=1 target_session_attrs=any'
pg_ctl start -D /pgdata/
在主库上查看
postgres=# select * from pg_stat_replication ;-[ RECORD 1 ]----+------------------------------pid | 10807usesysid | 10usename | postgresapplication_name | stb40client_addr | 192.168.56.40client_hostname |client_port | 50660backend_start | 2018-05-06 23:27:42.625869+08backend_xmin |state | streamingsent_lsn | 2/95000140write_lsn | 2/95000140flush_lsn | 2/95000140replay_lsn | 2/95000140write_lag |flush_lag |replay_lag |sync_priority | 0sync_state | async
使用pg_controldata查看
[postgres@pg40 ~]$ pg_controldata |grep clusterDatabase cluster state: in archive recovery //备库[postgres@pg39 log]$ pg_controldata |grep clusterDatabase cluster state: in production //主库