PostgreSQL集群篇——常用的运维SQL

PostgreSQL集群篇——常用的运维SQL

简述

本文主要是我日常使用的一些运维SQL和整理于互联网上的SQL,为了方便日常的使用,特把其汇总起来,遇到常用的时将会进行补充该文,欢迎大家在评论区进行提出一些常用的SQL。

正文

1、查询全库所有的表

1
select * from pg_tables;

2、获取表名及注释

1
2
select relname as tabname,cast(obj_description(relfilenode,'pg_class') as varchar) as comment from pg_class c 
where relkind = 'r' and relname not like 'pg_%' and relname not like 'sql_%' order by relname

3、查询所有库的连接情况

1
select * from pg_stat_activity;
阅读更多

PostgreSQL集群篇——pg_hba.confg的配置文件解析

PostgreSQL集群篇——pg_hba.confg的配置文件解析

简述

在我们生产环境使用PostgreSQL时,通常需要一定的安全限定,而pg_hba.conf就是我们比较常用的限定方式之一,其配置可以进行限定具体IP、IP段、可访问的数据库、可访问的账号、访问时使用的验证方式。下面我们就对于该配置文件进行一次简单的解析,便于我们日常配置使用。

正文

1
2
3
# TYPE  DATABASE        USER            ADDRESS                 METHOD
host all all 127.0.0.1/32 md5
host postgres all 10.10.10.0/0 md5
  • TYPE 类型:Unix套接字(local)、IPV4、IPV6、复制节点
  • DATABASE:具体指定的数据库,常用的为all(所有数据库)、授权某一个时直接写数据库名称、授权多个数据库时使用逗号(postgres,db1,db2)
  • USER:具体指定的用户,常用的为all(所有用户)、授权某一个用户时直接写用户名称、授权多个时使用逗号(user1,user2,user3)
  • ADDRESS:可访问的地址,来源地址,本地为127.0.0.1/32,多个IP时使用英文逗号分割,使用IP段时更改掩码位数即可,例如:10.10.10.0/0
  • METHOD:使用的方法、算法,常用如md5、trust等。
本文声明:

image
知识共享许可协议
本作品由 cn華少 采用 知识共享署名-非商业性使用 4.0 国际许可协议 进行许可。

PostgreSQL集群篇——2、PG环境安装(二)

PostgreSQL集群篇——2、PG环境安装准备

作者

CN華少

标签

PostgreSQL,PG,集群,DBA,架构师,PG安装,编译安装

背景

PostgreSQL官方文档中讲到了多种高可用、负载均衡和复制特性解决方案,如下图所示:

特性 共享磁盘故障转移 文件系统复制 预写式日志传送 逻辑复制 基于触发器的主-备复制 基于语句的复制中间件 异步多主控机复制 同步多主控机复制
最通用的实现 NAS DRBD 内建流复制 内建逻辑复制,pglogical Londiste,Slony pgpool-II Bucardo
通信方法 共享磁盘 磁盘块 WAL 逻辑解码 表行 SQL 表行 表行和行锁
不要求特殊硬件
允许多个主控机服务器
无主服务器负载
不等待多个服务器 with sync off with sync off
主控机失效将永不丢失数据 with sync on with sync on
复制体接受只读查询 with hot
每个表粒度
不需要冲突解决

我们在集群环境中使用这些技术,首先需要考虑的是我们目前面临的是什么问题,例如我现在面临的就是高并发问题如何来解决,按照上述图表中我选择了流复制解决方案。

在流复制解决方案中分为同步、异步两种,异步流复制通常采用的是基于wal日志来传送的方式进行,从节点通常比主节点要少一个wal日志块的数据,这给我们并发查询造成了影响,因此这里我们需要采用同步流复制解决方案,其采用的是数据流的方式,就像小溪一样,水一直流淌着,多条分支最终汇总到一处,同时接收处也在一直存储着。

阅读更多

PostgreSQL集群篇——1、PG环境安装(一)

PostgreSQL集群篇——1、PG环境安装准备

标签

PostgreSQL,PG,集群,DBA,架构师,PG安装,编译安装

背景

PostgreSQL官方文档中讲到了多种高可用、负载均衡和复制特性解决方案,如下图所示:

特性 共享磁盘故障转移 文件系统复制 预写式日志传送 逻辑复制 基于触发器的主-备复制 基于语句的复制中间件 异步多主控机复制 同步多主控机复制
最通用的实现 NAS DRBD 内建流复制 内建逻辑复制,pglogical Londiste,Slony pgpool-II Bucardo
通信方法 共享磁盘 磁盘块 WAL 逻辑解码 表行 SQL 表行 表行和行锁
不要求特殊硬件
允许多个主控机服务器
无主服务器负载
不等待多个服务器 with sync off with sync off
主控机失效将永不丢失数据 with sync on with sync on
复制体接受只读查询 with hot
每个表粒度
不需要冲突解决

我们在集群环境中使用这些技术,首先需要考虑的是我们目前面临的是什么问题,例如我现在面临的就是高并发问题如何来解决,按照上述图表中我选择了流复制解决方案。

在流复制解决方案中分为同步、异步两种,异步流复制通常采用的是基于wal日志来传送的方式进行,从节点通常比主节点要少一个wal日志块的数据,这给我们并发查询造成了影响,因此这里我们需要采用同步流复制解决方案,其采用的是数据流的方式,就像小溪一样,水一直流淌着,多条分支最终汇总到一处,同时接收处也在一直存储着。

流复制是从2010年推出pg9.0版本以后开始的,其版本到目前经历的阶段如下:

版本 方式 描述
PostgreSQL9.0 流式物理复制 开始支持流式物理复制,用户可以通过流式复制构建只读备库
PostgreSQL9.1 同步流复制 开始支持同步复制,只支持一个同步流复制节点,同步流复制能保证数据的0丢失
PostgreSQL9.2 级联流复制 开始支持联流复制,备库下面还可以再连接备库,形成级联架构
PostgreSQL9.2 流式虚拟备库 开始支持虚拟备库,即备库中没有数据文件,只包含wal文件。
PostgreSQL9.4 逻辑复制 开始支持逻辑复制,逻辑复制可以应对部分表复制的功能。
PostgreSQL9.6 同步流复制改版 同步流复制允许多个备用服务器以提高可靠性。
PostgreSQL10 使用发布/订阅进行逻辑复制
PostgreSQL11-13 持续优化
阅读更多