摘要: 一、背景 对于PostgreSQL处理MVCC(数据文件中新增tuple)的方式;相比其他数据库(Oracle、Mysql)而言;更容易触发表/索引膨胀。因为update操作也会影响表膨胀的问题。PostgreSQL处理的方式是对表autovacuum,vacuum是不会降低水位线。能避免表、索引膨 阅读全文
posted @ 2021-03-17 15:06 lottu 阅读(1440) 评论(0) 推荐(0) 编辑
摘要: 2020-06-09 19:31:01 一、疑问 前段时间;QQ群里有人对“这个表(0,4)这行数据我做了update操作,查看索引的page数据,看到索引一直指向(0,4),用ctid='(0,4)'查询业务表是查不到数据的;然后我做了表的vacuum,reindex甚至drop/create i 阅读全文
posted @ 2020-06-09 19:30 lottu 阅读(844) 评论(0) 推荐(0) 编辑
摘要: PostgreSQL逻辑复制之slony篇 一、pglogical介绍 pglogical 是 PostgreSQL 的拓展模块, 为 PostgreSQL 数据库提供了逻辑流复制发布和订阅的功能。 pglogical 重用了 BDR 项目中的一部分相关技术。pglogical 是一个完全作为Pos 阅读全文
posted @ 2019-06-04 12:06 lottu 阅读(8658) 评论(0) 推荐(1) 编辑
摘要: 开发同事在自己的windos电脑搭建了PostgreSQL,但是应用程序连接数据库,出现“数据库的连接太多了**”。由于未设置详细的log内容;只获取到这个信息。 先查看实例的max_connections; show max_connections; select name, setting, c 阅读全文
posted @ 2021-04-24 11:02 lottu 阅读(2479) 评论(0) 推荐(0) 编辑
摘要: 于2021-02-24日;“广告推广平台” 的数据库服务器正式成功上 ucloud 云。采用repmgr的主备切换 switchover 的方式。运行正常,数据验证一致。定时任务运行也正常。 第二天;即2021-02-25日;在物化视图更新时。出现 > ERROR: could not read b 阅读全文
posted @ 2021-02-25 11:56 lottu 阅读(236) 评论(0) 推荐(0) 编辑
摘要: 最近项目中数据库服务迁移到U_cloud云服上,有些项目中数据量比较少,在迁移过程;表数据迁移过去;但是序列需要重置下;接下来讲到如何快速获取同步序列的SQL 一、构建同步序列函数 CREATE OR REPLACE FUNCTION "pg_sync_seq"() RETURNS TABLE("s 阅读全文
posted @ 2021-01-26 15:13 lottu 阅读(893) 评论(0) 推荐(0) 编辑
摘要: 在PostgreSQL中;说得连接池,立马想到pgbouncer。pgbouncer 的目标是降低因为新建到 PostgreSQL/Greenplum 的连接而导致的性能损失。 在项目中;DBA会劝开发人员使用连接池。这样可以控制连接数。也避免反复建立连接带来的性能消耗。对连接池的优点。这篇文章讲解 阅读全文
posted @ 2021-01-19 14:38 lottu 阅读(424) 评论(0) 推荐(0) 编辑
摘要: PostgreSQL 引进“分区”表特性,解放了之前采用“表继承”+ “触发器”来实现分区表的繁琐、低效。而添加分区,都是手动执行 SQL。 **演示目的:**利用 python 来为 PostgreSQL 的表自动添加分区。 python版本: python3+ pip3 install psyc 阅读全文
posted @ 2021-01-04 10:26 lottu 阅读(1983) 评论(0) 推荐(0) 编辑
摘要: 在 PostgreSQL 的事务中;执行的SQL遇到错误(书写,约束限制);该事务的已经执行的SQL都会进行rollback。那如何忽略其中的错误。将SQL执行到底?在事务中设置 ON_ERROR_ROLLBACK 即可。 下面演示 1、未作任何设置 演示脚本 begin; -- 1、创建表tbl_ 阅读全文
posted @ 2020-12-09 16:03 lottu 阅读(1593) 评论(0) 推荐(0) 编辑
摘要: 一、介绍 pgloader是一款PostgreSQL数据迁移工具,最初只用于支持格式化文件的数据快速导入到PostgreSQL。pgloader支持跳过无法导入的出错数据并进行记录,因此在源数据文件有部份错误数据的情况下依然可以继续完成迁移任务,节省迁移排错后重复导入的时间损耗。最新的版本中,还支持 阅读全文
posted @ 2020-12-09 11:58 lottu 阅读(4564) 评论(0) 推荐(0) 编辑
摘要: 描述 pg_probackup是由俄罗斯PG社区组织Postgres Professional发布的一个用于管理PostgreSQL数据库备份和恢复的工具。支持PostgreSQL9.5+的版本;是基于pg_rman扩展而来 安装和设置 wget https://github.com/postgre 阅读全文
posted @ 2020-12-07 16:44 lottu 阅读(2667) 评论(0) 推荐(0) 编辑
摘要: 官网示例 一、实现原理 使用 pgpool-II 软件;我们常用来实现流复制的高可用性;备库只读的,不可写;就是当主库出现问题时;需要把备库自动激活为主库;来接管服务。 这在其他高可用软件也有这功能,而 pgpool-II 在配置文件 pgpool.conf 中提供配置项 failover_comm 阅读全文
posted @ 2020-12-01 17:12 lottu 阅读(2865) 评论(2) 推荐(0) 编辑
摘要: 一、架构图 PostgreSQL 流复制是基于 wal 日志复制。主库产生 wal 日志并发送给备库;备库接收 wal 日志记录;并重放这些 wal 日志。从而达到主备库数据同步。备库只读。 复制级别是实例级 在这个模式下:Pgpool 充当连接池作用; 读写查询智能分发;可以实现负载均衡;这是其他 阅读全文
posted @ 2020-12-01 17:11 lottu 阅读(1284) 评论(0) 推荐(0) 编辑
摘要: 一、Pgpool-II 内置复制原理 在 pgpool-II 内置复制模式;架构图如下: 对数据库的写操作直到所有 PostgreSQL 服务器完成写操作后才返回,对写模式性能有损耗 对数据库的读操作可以发送任意一台,并不是随机分发的;可以通过 show pool_nodes 查看,可以实现读的负载 阅读全文
posted @ 2020-12-01 17:10 lottu 阅读(1100) 评论(0) 推荐(0) 编辑
摘要: 本文介绍 pgpool-II 的配置 一、创建用户 pgpool 创建管理用户pgpool,单独来管理pgpool服务。此步骤非必需。可使用 postgres 用户进行管理 $ useradd -g postgres -u 702 pgpool 用 pgpool 用户管理, 添加环境变量 [root 阅读全文
posted @ 2020-12-01 17:07 lottu 阅读(1175) 评论(0) 推荐(0) 编辑
摘要: https://www.pgpool.net/docs/latest/en/html/admin.html 本章节描述是源码方式安装pgpool-II 一、安装软件 官网地址:https://www.pgpool.net;获取对应的版本。 -- 解压 $ tar -zxvf pgpool-II-4. 阅读全文
posted @ 2020-12-01 17:06 lottu 阅读(1655) 评论(0) 推荐(1) 编辑
摘要: 1、age函数 用于获取两个时间相差 audit=# select age('2020-01-01 17:53:02' :: TIMESTAMP , '2020-01-01 17:46:20' :: TIMESTAMP); age 00:06:42 (1 row) -- 等价于 select '20 阅读全文
posted @ 2020-11-26 11:23 lottu 阅读(1988) 评论(0) 推荐(0) 编辑
摘要: 一、流复制的机制 PostgreSQL流复制是基于wal日志。主库产生wal日志并发送给备库;备库接收wal日志记录;并重放这些wal日志。从而达到主备库数据同步。备库只读。 二、冲突检测机制 PostgreSQL流复制中备库是只读的;备库在读某些记录时;跟主库执行的ddl操作/或者一些维护操作。例 阅读全文
posted @ 2020-11-17 11:08 lottu 阅读(675) 评论(0) 推荐(0) 编辑
摘要: novel开发重建visit表;没考虑之前的visit表是分区表;过了几天;平台数据迟迟未出。visit表一天大概3-4G的量级。 1、获取非分区表的大小,以及最开始的数据 这个好确定分区从那个时间开始 --获取大小 select pg_size_pretty(pg_relation_size('t 阅读全文
posted @ 2020-11-11 11:22 lottu 阅读(936) 评论(0) 推荐(0) 编辑
摘要: 官网地址 一、Bucardo介绍 Bucardo 是基于表复制的系统 Bucardo 可以实现PostgreSQL数据库的双master/多master的方案 Bucardo的核心是一个Perl守护进程,它侦听通知请求并对其进行操作,方法是连接到远程数据库并来回复制数据。 守护进程需要的所有特定信息 阅读全文
posted @ 2020-11-04 11:31 lottu 阅读(2031) 评论(1) 推荐(1) 编辑
摘要: 近日;novel 项目需要搭建一个测试数据库;并且需要测试数据。如何快速打造模拟生产环境的测试数据库?下面揭晓。 一、准备环境 安装PostgreSQL软件 安装线上环境PostgreSQL数据所需的扩展 创建所需要的目录;并分配权限 二、拷贝数据库 你使用 “pg_start_backup+scp 阅读全文
posted @ 2020-10-15 14:21 lottu 阅读(634) 评论(0) 推荐(0) 编辑
摘要: 在使用 awk 脚本;数组是一大利器;在很多场景是用数组能处理。 在 python 中,数据类型list;相当于array类型。 在 Oracle 中,对 array 不够友好,感觉像是鸡肋。但是在 PostgreSQL 中,对array有很多支持,很多场景可以应用到。下面慢慢说 1、any(arr 阅读全文
posted @ 2020-09-25 15:07 lottu 阅读(930) 评论(0) 推荐(0) 编辑