一监控Streaming Replication集群

1 pg_stat_replication视图(主库端执行)

pid

Wal sender process的进程ID

usesysid

执行流复制的用户的OID

usename

执行流复制的用户名

application_name

连接到master的Application name

client_addr

standby的ip地址

client_hostname

Standby主机名

client_port

standby上连接端口

backend_start

Wal sender process启动时间。

state

WAL sender process状态

sent_location

WAL发送位置

write_location

Standby端写WAL位置

flush_location

Standby端写WAL刷新到磁盘的位置

replay_location

Standby端应用WAL位置

sync_priority

standby的优先级

sync_state

standby的同步类型

主库上通过执行函数把WAL位置转换成WAL文件名与偏移量

select  *   from pg_xlogfile_name_offset('XXX');

查看备库落后主库多少个字节的wal日志

select pg_xlog_location_diff(pg_current_xlog_location(),replay_location)  from pg_stat_replication;

2pg_is_in_recovery()查看数据库状态

3pg_controldata查看数据库信息

4hot standby查看备库接收wal日志和应用wal日志的状态信息(standby上执行)

pg_last_xlog_receive_location()//standby最后接收到的事务日志。

pg_last_xlog_replay_location()//standby最后应用到的事务日志位置。

pg_last_xact_replay_timestamp()//recovery过程中最后一个事务执行的时间。

select pg_last_xlog_receive_location(),pg_last_xlog_replay_location(),pg_last_xact_replay_timestamp();

二Streaming Replication集群常见问题

2.1备库查询限制

DML,DDL限制

select * from  table for update;

比row exclusivemode级别高的表锁不能执行等。

2.2备库查询冲突与处理

Ø  冲突如下:

1主库上运行的vacuum清理掉了备库上查询还需要的多版本数据。

2主库上执行lock命令或各种DDL语句会在表上产生exclusive锁,而在备库上对这些表进行查询时,就会产生冲突。

3在主库上删除一个表空间,而备库上的查询需要存放的一些工作临时文件在此表空间中。

4主库上删除了一个数据库,而备库上还有还多session还在连接在这个数据库上。

Ø  处理方法:

1备库延迟应用wal日志

参数用于控制应用wal日志最多等多久,超过这个时间,将应用wal日志,取消备库上正在执行的查询(在视图pg_stat_database_conflicts中查询取消执行的sql)。

Max_standby_archive_delay备库从归档中读取的最大延迟,默认是30s,如果设置是-1,则一直等下去。

Max_standby_streaming_delay备库从流复制中读取wal时的最大延迟,默认是30s,如果设置是-1,则一直等下去。

2主库上运行的vacuum清理掉了备库上查询还需要的多版本数据,

解决方法1

在备库上设置参数hot_standby_feedback为true来解决,设置该参数为true后,备库会通知主库,那些多版本的数据在备库上还需要,这样主库上的autovacuum就不会清理掉这些数据,从而减少冲突。

解决方法2.

在主库增大vacuum_defer_cleanup_age值,让数据库延迟清理多版本数据。

在备库recovery.conf中参数recovery_min_apply_delay。

2.3流复制注意事项

1wal_keep_segments:为备库保留多少个日志文件

主库还没有来得及把wal日志传送到备库,可能被覆盖,如果没有被归档,那么日志文件不连续了。

2vacuum_defer_cleanup_age:延迟清理多少个事务

原因:主库清理的数据,有可能备库正在查询使用,会导致查询失败。

3关于主备库archive_mode、archive_command

(1)在主库postgresql.conf配置文件配置如下

archive_mode = on

archive_command = 'cp  %p  /pgdb/archlog/%f'

主库开启归档模式,事务日志写入.. /data/pg_xlog目录,archive_command把归档日志复制到/ pgdb /archlog

(2)在备库archive_mode、archive_command值对备库没有任何影响,备库不会加载该配置。主库事务提交后,备库接收日志流,写入../data/pg_xlog目录并应用,但不执行archive_command归档命令。

新特性:PostgreSQL9.5.1:archive_mode = always  支持备节点应用日志流后,归档。

postgresql Streaming Replication监控与注意事项的更多相关文章

  1. 配置PostgreSQL Streaming Replication集群

    运行环境: Primary: 192.168.0.11 Standby: 192.168.0.21, 192.168.0.22 OS: CentOS 6.2 PostgreSQL: 9.1.2 版本以 ...

  2. PostgreSQL Streaming Replication的FATAL ERROR

    磨砺技术珠矶,践行数据之道,追求卓越价值回到上一级页面: PostgreSQL集群方案相关索引页     回到顶级页面:PostgreSQL索引页[作者 高健@博客园  luckyjackgao@gm ...

  3. PostgreSQL 9.3 Streaming Replication 状态监控

    postgresql是使用Streaming Replication来实现热备份的,热备份的作用如下: 灾难恢复 高可用性 负载均衡,当你使用Streaming Replication来实现热备份(h ...

  4. Streaming replication slots in PostgreSQL 9.4

    Streaming replication slots are a pending feature in PostgreSQL 9.4, as part of the logical changese ...

  5. PostgreSQL的streaming replication

    磨砺技术珠矶,践行数据之道,追求卓越价值回到上一级页面: PostgreSQL集群方案相关索引页     回到顶级页面:PostgreSQL索引页[作者 高健@博客园  luckyjackgao@gm ...

  6. PostgreSQL Cascade Replication

    PostgreSQL Cascade Replication node1:master:10.2.208.10:repclia(user) node2:upstreamnode:10.2.208.11 ...

  7. LoadRunner添加Weblogic监控的注意事项(非单纯的操作步骤)

    LoadRunner添加Weblogic监控的注意事项(非单纯的操作步骤)   关于LR如何监控Weblogic(JMX方式)的操作就不在这里多说了,帮助文件和网上的介绍已经非常多了,关键是对各操作步 ...

  8. [笔记] postgresql 流复制(streaming replication)

    基本环境说明: os:FreeBSD 9.3 postgresql version: master:192.168.56.101 standby:192.168.56.102 安装过程略,基于pkg包 ...

  9. postgreSQL数据库的监控及数据维护

    目前postgreSQL数据库的管理,数据查询等都需要安装postgreSQL软件或安装pgadmin等,远程访问都需要先登录到服务器等繁琐的操作.如果是开发团队,那么每个开发,测试,管理人员都要经历 ...

随机推荐

  1. mysql WHERE语句 语法

    mysql WHERE语句 语法 作用:如需有条件地从表中选取数据,可将 WHERE 子句添加到 SELECT 语句.珠海大理石平尺 语法:SELECT 列名称 FROM 表名称 WHERE 列 运算 ...

  2. SQL—事物

    [选择题]以下哪个选项是DBMS的基本单位,是构成单一逻辑工作单元的操作集合. A.进程 B.SQL C.事务 D.文件 分析: (1)一个事务包含一个或多个SQL语句,是逻辑管理的工作单元(原子单元 ...

  3. [luogu]P2279 [HNOI2003]消防局的设立[贪心]

    [luogu]P2279 [HNOI2003]消防局的设立 题目描述 2020年,人类在火星上建立了一个庞大的基地群,总共有n个基地.起初为了节约材料,人类只修建了n-1条道路来连接这些基地,并且每两 ...

  4. R 画散点图

    ggplot(data=df, aes(x=n, y=rt, group=kernel, shape=kernel, colour=kernel)) + geom_point(fill="w ...

  5. .NET COM+级别的事务Transaction实现

    参考: https://docs.microsoft.com/zh-cn/dotnet/api/system.enterpriseservices.contextutil?view=netframew ...

  6. Python学习笔记(二)Sublime Text 3 安装Package Control

    原来Subl3安装Package Control很麻烦,现在简单的方法来了 一.简单的安装方法 使用Ctrl+`快捷键或者通过View->Show Console菜单打开命令行,粘贴如下代码: ...

  7. java 中 进程和线程的区别

    目录 什么是进程?什么是线程? 为什么要有线程? 进程与线程的区别? 进程与线程的选择取决条件? 什么是进程?什么是线程?进程:进程是并发执行程序在执行过程中资源分配和管理的基本单位(资源分配的最小单 ...

  8. Powershell指令集_1

    目录 目录 前言 程序进度条 Write-Progress 执行表达式 Invoke-Expression 表格化打印信息 Format-Table 获取系统服务 Get-WmiObject 循环 F ...

  9. 阶段1 语言基础+高级_1-3-Java语言高级_06-File类与IO流_05 IO字符流_2_字符输入流读取字符数据

    读取的文件有中文也有英文 强转为char类型 缓冲读取多个字符 使用string的构造方法转换为字符输出

  10. 16/7/8_PHP-单引号和双引号的区别

    在PHP中,字符串的定义可以使用英文单引号' ',也可以使用英文双引号" ". 但是必须使用同一种单或双引号来定义字符串,如:'Hello World"和"He ...