博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PostgreSQL pg_stat_replication sync_state introduce
阅读量:6219 次
发布时间:2019-06-21

本文共 3449 字,大约阅读时间需要 11 分钟。

PostgreSQL 9.2引入同步复制后, pg_stat_replication的sync_state列有3种状态.
syncasyncpotential
分别代表同步standby, 异步standby, 可升级为同步的standby.
状态来自以下函数 : pg_stat_get_wal_senders
详见参考部分.

[测试]
环境:
1个 primary, 3个 standby.
第一种配置 : 
primary配置
postgresql.confsynchronous_standby_names = 'test1,test2,test3'
standby1配置
primary_conninfo = 'application_name=test1 host=127.0.0.1 port=1999 user=postgres keepalives_idle=60'
standby2配置
primary_conninfo = 'application_name=test2 host=127.0.0.1 port=1999 user=postgres keepalives_idle=60'
standby3配置
primary_conninfo = 'application_name=test3 host=127.0.0.1 port=1999 user=postgres keepalives_idle=60'
primary查询
digoal=# select pid,application_name,client_addr,sync_state from pg_stat_replication; pid  | application_name | client_addr | sync_state ------+------------------+-------------+------------ 6311 | test1            | 127.0.0.1   | sync 6321 | test2            | 127.0.0.1   | potential 6391 | test3            | 127.0.0.1   | potential(3 rows)
如果sync节点挂掉, 按synchronous_standby_names的顺序, 第一个potential节点会变成sync状态.
pg_ctl stop -m fast -D /pgdata11999digoal=# select pid,application_name,client_addr,sync_state from pg_stat_replication; pid  | application_name | client_addr | sync_state ------+------------------+-------------+------------ 6564 | test2            | 127.0.0.1   | sync 6568 | test3            | 127.0.0.1   | potential(2 rows)
当test1重新起来后又会变成sync状态.
pg93@db-172-16-3-33-> pg_ctl start -D /pgdata11999server startingdigoal=# select pid,application_name,client_addr,sync_state from pg_stat_replication; pid  | application_name | client_addr | sync_state ------+------------------+-------------+------------ 6564 | test2            | 127.0.0.1   | potential 6605 | test1            | 127.0.0.1   | sync 6568 | test3            | 127.0.0.1   | potential(3 rows)
第二种配置 : 
primary配置
synchronous_standby_names = 'test1,test2'
standby1配置不变
standby2配置不变
standby3配置不变
primary查询
digoal=# select pid,application_name,client_addr,sync_state from pg_stat_replication; pid  | application_name | client_addr | sync_state ------+------------------+-------------+------------ 6470 | test1            | 127.0.0.1   | sync 6472 | test3            | 127.0.0.1   | async 6474 | test2            | 127.0.0.1   | potential(3 rows)
test3变成异步了. 因为test3没有配置在primary的synchronous_standby_names 中.

第三种配置 : 
primary配置
synchronous_standby_names = 'test1'
standby1配置不变
standby2配置不变
standby3配置不变
primary查询
digoal=# select pid,application_name,client_addr,sync_state from pg_stat_replication; pid  | application_name | client_addr | sync_state ------+------------------+-------------+------------ 6519 | test2            | 127.0.0.1   | async 6521 | test3            | 127.0.0.1   | async 6523 | test1            | 127.0.0.1   | sync(3 rows)
test2,test3变成异步了. 因为test2,test3没有配置在primary的synchronous_standby_names 中.

[参考]
1. src/backend/replication/walsender.c
/* * Returns activity of walsenders, including pids and xlog locations sent to * standby servers. */Datumpg_stat_get_wal_senders(PG_FUNCTION_ARGS){...略            /*             * More easily understood version of standby state. This is purely             * informational, not different from priority.             */            if (sync_priority[i] == 0)                values[7] = CStringGetTextDatum("async");            else if (i == sync_standby)                values[7] = CStringGetTextDatum("sync");            else                values[7] = CStringGetTextDatum("potential");...略

转载地址:http://pymja.baihongyu.com/

你可能感兴趣的文章
手写代码生成器
查看>>
SQL Server 维护计划备份主分区
查看>>
VS2008的安装,OpenCV2.1的安装,以及变量环境的设置
查看>>
Unable to install breakpoint in XXX due to missing line number attributes的解决
查看>>
分享SQL2005 查询表结构的SQL语句
查看>>
Android 手机如何防范吸费插件
查看>>
Copy-On-Write容器之二:CopyOnWriteArraySet
查看>>
ACCESS的分页之道,Access中实现row_number() over()聚合函数功能
查看>>
IOS成长之路-NSMutableURLRequest实现Post请求
查看>>
【Cocos2D-X 】初窥门径(9)播放音乐/音效
查看>>
HDU3930(离散对数与原根)
查看>>
茴香豆的第五种写法---设置ExpandableListView系统自带图标按下效果
查看>>
MSSQL Rebuild(重建)索引
查看>>
Linux_CentOS-服务器搭建 <七>
查看>>
转载:mysql如果数据不存在,则插入新数据,否则更新的实现方法
查看>>
<转>多线程中的lua同步问题
查看>>
转oracle 学习- 数据类型
查看>>
Eclipse安装插件支持jQuery智能提示
查看>>
cidaemon.exe进程cpu占用率高及关闭cidaemon.exe进程方法
查看>>
C语言课程设计—图书管理系统
查看>>