
本文共 2572 字,大约阅读时间需要 8 分钟。
作者:瀚高PG实验室 (Highgo PG Lab)-波罗·
Postgresql测试版本 V9.5.7
VMware® Workstation 12 Pro
OS版本:redhat 7.4
主库:db1(192.168.80.220)
备库:db2(192.168.80.221)
PostgreSQL异步流复制的具体实现:
主库db1(192.168.80.220)配置
vi $PGDATA/postgresql.conf
================
listen_address = ‘*’
wal_level = hot_standby
max_wal_senders=2
wal_keep_segments=16
================
注解:
wal_level表示启动搭建hot Standby
max_wal_senders 设置为一个大于0的数,表示主库最多可以有多少个并发的standby
wal_keep_segments 设置为一个尽量大的值,以防止主库生成WAL日志太快,日志还没有来得及传送到standby就被覆盖,但是需要考虑磁盘空间允许,一个WAL日志文件的大小是16M。
主库创建一个超级用户来专门负责让standby连接去拖WAL日志
------
create user repl superuser password '111111';
vi $PGDATA/pg_hba.conf,添加以下内容:
------
host replication repl 192.168.137.0/24 md5
允许用户repl从192.168.137.0/24网络上发起到主库的流复制,简言之即允许从库服务器连接主库去拖WAL日志数据。
主库配置很简单,到此就算结束了。
启动主库并继续配置从库。
备库db2配置
从此处开始配置备库(192.168.80.221),首先通过pg_basebackup命令行工具在从库上生成基础备份,命令如下:
rm -fr $PGDATA/* #做基础备份之前从库的数据目录需要手动清空
pg_basebackup -h 192.168.137.220 -U repl -F p -x -P -R -D /pgdata/data -l replbackup20180112 #生成基础备份
vi $PGDATA/postgresql.conf文件
hot_standby=on #将hot_standby改为启用状态,如果不打开,从库不允许访问
到此为止就算配置结束了,我们现在可以启动从库,如果启动成功就说明配置成功,在从库运行
pg_ctl start -l ./log/pg_server.log
启动后看一下日志,如果有报错可以进一步分析解决。
备库recovery.conf 文件配置
recovery.conf 是一个配置文件,用于主库,备库切换时的参数配置
可以从 $PGHOME/share 目录下复制一份 recovery.conf.sample 到备库 $PGDATA 目录,
也可以通过pg_basebackup制定-R参数生成。
cat $PGDATA/recovery.conf
recovery_target_timeline='latest'
standby_mode = 'on'
primary_conninfo = 'user=repl password=111111 host=192.168.137.220 port=1921 sslmode=disable sslcompression=1'
里面有众多参数,关键参数注释:
standby_mode = '' --标记PG为STANDBY SERVER
primary_conninfo = '' --标识主库信息
trigger_file = '' --标识触发器文件
主库创建表并插入数据验证异步流复制
主库下建一张表并添加几条数据:
create table repl_t(id int);
insert into repl_t select generate_series(1,10);
查看从库同步效果:
select * from repl_t;
验证从库是否能pg_controldata 执行删除、更新操作:
delete from repl_t ;
update repl_t set id=2 where id=1;
流复制状态查看命令参考(一)
可以分别看到主备库的发送接收日志的进程
ps -ef|grep -i postgres #可以区分主备库进程
命令行工具:
pg_controldata|grep -i state #控制文件相关信息,也可以区分主备库
查看主备库状态:
select pg_is_in_recovery(); --主库为f,备库为t
流复制状态查看命令参考(二)
主库查询流复制类型及备节点信息:
select pid,state,client_addr,sync_priority,sync_state from pg_stat_replication;
将主库上WAL位置转换为WAL文件名和偏移量:
select write_location from pg_stat_replication; #获取当前在线日志
select * from pg_xlogfile_name_offset('0/F0255D0'); #标红是上条语句获取的值
查看备库落后主库多少字节的WAL日志:
select pg_xlog_location_diff(pg_current_xlog_location(),replay_location) from pg_stat_replication;
查看备库接收WAL日志和应用WAL日志的状态:
select * from pg_last_xlog_receive_location();
select * from pg_last_xlog_replay_location();
select * from pg_last_xact_replay_timestamp();
发表评论
最新留言
关于作者
