自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

魂醉的一亩二分地

夜阑风静縠纹平。小舟从此逝,江海寄余生。

  • 博客(351)
  • 资源 (1)
  • 论坛 (1)
  • 收藏
  • 关注

翻译 Postgresql管理系列-第九章 WAL(Write Ahead Logging)介绍

事务日志是数据库的重要组成部分,因为即使数据库发生系统故障,也要求所有数据库管理系统不能丢失任何数据。它是数据库系统中所有更改和操作的历史记录日志,以确保没有数据因故障而丢失,例如电源故障或导致服务器崩溃的其他服务器故障。由于日志包含有关已执行的每个事务充足的信息,因此数据库服务器应能够通过在服务器崩溃时重放事务日志中的更改和操作来恢复数据库集群。在计算机科学领域,WAL是Write Ahead...

2019-07-11 13:53:02 1148

翻译 Postgresql管理系列-第五章 并发控制

当数据库中多个事务并发运行时,并发控制机制用于保持一致性和隔离性,这两个特性是ACID的两个属性。有三种广泛的并发控制技术,即多版本并发控制(MVCC),严格两阶段锁(S2PL),和乐观并发控制(OCC),每个技术又有许多变体。在MVCC,每个写操作会创建一个新版本的数据项,同时保留旧版本。当一个事务读取数据项,系统选择一个版本,以确保事物之间的隔离性。MVCC的主要优势是,“读不会阻塞写,写也...

2019-07-09 14:36:31 1032

翻译 Postgresql管理系列-第四章Foreign Data Wrappers

本章将介绍两个技术上有趣和实用的功能: 外部数据包装 (FDW) 和并行查询。目前只有FDW的介绍,并行查询还在筹划中。4.1. Foreign Data Wrappers (FDW)2003年, 在 SQL 标准中添加了一个访问远程数据的规范, 称为 “SQL Management of External Data (SQL/MED)”。自9.1版以来, PostgreSQL一直在开发此功...

2019-06-12 17:15:37 563

翻译 Postgresql管理系列-第三章Query Processing(下半部分-join operation介绍)

接第三章的上半部分3.5. 连接操作PostgreSQL 支持三个联接操作: 嵌套循环联接、合并联接和哈希联接。PostgreSQL 中的嵌套循环联接和合并联接有几种变体。下面, 我们假设读者熟悉这三个连接的基本行为。如果您不熟悉这些术语, 请参阅 [1, 2]。但是, 那里没有太多关于混合哈希联接与 PostgreSQL 支持的倾斜的解释, 因为将在此处进行更详细的解释。请注意, Pos...

2019-06-10 17:28:57 493

翻译 Postgresql管理系列-第三章Query Processing(上半部分-代价评估计算)

正如官方文档中所述,PostgreSQL支持SQL2011标准大量功能。查询处理是PostgreSQL中最复杂的子系统,它可以高效地处理支持的SQL。本章概括描述了查询处理的过程;特别是,查询优化方面。本章包括以下三个部分:第1部分:第3.1节。本节概述了PostgreSQL中的查询处理过程。第2部分:第3.2节~3.4。本部分介绍了获取一个表查询的最佳计划所遵循的步骤。在第3.2和3....

2019-06-10 10:17:22 463

翻译 Postgresql管理系列-第八章Buffer Manager

缓冲区管理器管理共享内存和持久存储之间的数据传输, 并可能对DBMS的性能产生重大影响。PostgreSQL缓冲区管理器的工作效率非常高。在本章中, 介绍了PostgreSQL缓冲区管理器。第一部分是概述,接下来的部分介绍了以下主题:缓冲区管理器结构缓冲管理器锁缓冲管理器如何工作环形缓冲器清理脏页图8.1 缓冲区管理器,存储和后端进程之间的关系8.1. 概述本节介绍了在后续...

2019-06-05 10:42:46 1354

翻译 Postgresql管理系列-第七章Heap Only Tuple and Index-Only Scans

本章介绍与索引扫描相关的两个功能, 即Heap Only Tuple和Index-Only Scans。7.1. Heap Only Tuple (HOT)HOT是在8.3版中引入的, 当更新的行存储在旧行所在的page时,可以有效地使用索引和表的页。HOT有效的减少了vacuum操作。源码目录README.HOT描述了HOT的细节。 本章简要介绍了HOT。首先, 7.1.1章节介绍了如何在...

2019-06-03 11:58:39 775

翻译 Postgresql管理系列-第六章Vacuum Processing

vacuum操作是一个维护进程, 便于PostgreSQL的持久运行。它的两个主要任务是删除dead tuples和冻结事务id, 第5.10节中简要的提到了这两个问题。为了删除dead tuples, vacuum提供了两种模式, 即并发vacuum和full vacuum。并发vacuum(通常简称 “VACUUM”)为表文件的每一页删除dead tuples, 而其他事务可以在此过程中读取...

2019-05-31 15:53:46 440

翻译 Postgresql管理系列-第十章 基础备份和PITR(Point-in-Time Recovery)

数据库备份大概可以分为两类:逻辑备份和物理备份。它们两者有长处也有短处,比如,逻辑备份需要花费大量的时间,特别是需要花费大量的时间备份大的数据库,而且需要更多的时间来恢复数据库。相反的,物理备份相对在较短的时间内备份和恢复数据库,所以在实际系统中,物理备份是非常重要和有用的功能。在postgresql中,在线物理全备份从8.0版本就有了,并且运行的整个数据库集群的快照作为一个基...

2019-04-11 14:00:40 472

翻译 Postgresql管理系列-第十一章 流复制管理

同步流复制是是从9.1版本实现的,可以是一主多从的模式,在postgresql里主叫master,备节点叫standby主备是基于日志传送的技术实现同步,主节点持续发送wal数据,备节点重放接受到的wal数据主要介绍以下几个话题流复制如何启动的 主备之间如何传送数据 主节点如何管理多个备节点 主节点如何发现失败的备节点一.开始流复制在流复制中,三个进程协同工作,wal...

2019-01-14 11:41:59 611

翻译 Postgresql管理系列-第二章 进程和内存结构

在本章中,总结了PostgreSQL中的流程体系结构和内存体系结构,以帮助阅读后续章节。如果您已经熟悉它们,可以跳过本章1.进程结构Postgresql 是一个C/S架构的关系型数据库,由多个后台进程管理数据库,下面分别介绍一些这些进程postgres server process 是所有进程的父进程backend process 每一个客户端的连接都有一个后端进程存在...

2018-05-21 12:54:37 2276

翻译 Postgresql管理系列-第一章 逻辑结构和物理结构

1.数据库的逻辑结构Database cluster: 由postgresql server管理的数据库的集合,下面由多个database组成databsase: 由各种数据库对象构成,比如下图中的table,indexes, view,function,sequence...所有数据库对象都有各自的oid(object identifiers),oid是一个无符号的四字节整...

2018-05-18 16:34:36 2249 4

原创 repmgr之使用witness自动failover

接之前的环境,部署如下:db1 10.4.9.166 primarydb2 10.4.9.218 standbydb3 10.4.9.250 witnesswitness作用:witness服务是一个普通的PostgreSQL 实例,不是流复制的一部分:其目的是,如果发生故障转移的情况,提供证据,证明主节点本身不可用,而不是不同的物理网络中断导致的脑裂。witness服务的典型用例是一个双节点流复制集群,其中主和备用位于不同位置。在主节点的同一网络创建witness服务,如果主节点不

2021-05-06 20:30:05 9

转载 pg_repack使用

可参考官方文档:https://reorg.github.io/pg_repack/?spm=a2c63.p38356.879954.3.6d6d15b3rdFspHRDS PostgreSQL支持通过插件pg_repack在线清理表空间,有效解决因对全表大量更新等操作引起的表膨胀问题。pg_repack无需获取排它锁,相比CLUSTER或VACUUM FULL更加轻量化。注意事项:pg_repack需要额外的存储空间。全表repack时,剩余存储空间大小需要至少是待repack表大小的2倍。p

2021-05-06 16:44:47 7

原创 repmgr之添加witness并switchover

#查看原集群信息 repmgr -f repmgr/repmgr5.2.1.conf cluster show ID | Name | Role | Status | Upstream | Location | Priority | Timeline | Connection string ----+------+---------+-----------+----------+----------+-

2021-05-01 16:26:20 17

转载 BUG: vacuum freeze 报错 ERROR: found xmin ...... from before relfrozenxid .... 处理方法

template1=> vacuum freeze template1.pg_catalog.pg_authid; ERROR: found xmin 1988747257 from before relfrozenxid 2810153180vacuum freeze报错的问题:10.2,9.6.7,9.5.11,9.4.16以后 到 修复版本之间 的版本的PG都会存在相关问题。10.5, 9.6.10, 9.5.14, 9.4.19 对这个问题进行了修复。bugfix patch如

2021-04-28 11:08:07 14

原创 Postgresql pglogical手动failover

172.31.43.79 (原主节点)172.31.30.125 (原备节点)172.31.37.213 (逻辑复制目标节点)failover后,原来的主切换为备节点,由于用的pglogical插件,逻辑复制槽需要手动切换1.查看node信息,并添加interface,这里源节点被目标节点的node名称一样。 172.31.30.125上操作如下postgres=# \c melotlog postgresYou are now connected to database "melotlog

2021-04-27 21:01:12 19

原创 Postgresql触发器函数使用

之前介绍过事件触发器,主要是用来捕捉DDL,这边文章介绍一下普通的触发器,主要是可以用来捕捉数据变更的,支持行级别和语句级别的触发器,支持insert,update,delete,truncate操作触发。内部定义的相关变量参数:NEWData type RECORD; variable holding the new database row for INSERT/UPDATE operations in row-level triggers. This variable is null in st

2021-04-19 13:55:51 19

转载 Postgresql 物理流复制监控

流复制部署完成后,监控即为避不开的话题,本文介绍如何对流复制进行监控。pg_stat_replication视图对于监控流复制至关重要。 postgres=# select * from pg_stat_replication ;-[ RECORD 1 ]----+-----------------------------pid | 6569usesysid | 10usename | postgresapplication_nam

2021-04-16 17:07:16 26

原创 Postgresql9.5.5增量同步至阿里云mybase for postgresql

首先阅读阿里云迁移文档,一篇是说明如何安装插件迁移,一篇是如何实现DDL复制从自建PostgreSQL(9.4.8-10.0版本)增量迁移至RDS PostgreSQL通过触发器和函数实现PostgreSQL的DDL增量迁移如下,在没有安装插件的时候,我的源库已经报错那么我们安装对应版本的插件,我源库为9.5.5版本cp ali_decoding.so /opt/pgsql95/lib/cp ali_decoding.control /opt/pgsql95/share/extension/

2021-04-13 17:33:05 22

原创 Postgresql使用pg_rman恢复以及备份集的删除

从之前的介绍我们了解到,pg_rman是物理备份,所以恢复也是物理恢复,需要从物理的数据库文件恢复,提供recovery.conf配置,可以指定恢复的时间点,或者是xlog文件的位置。恢复实例:异机恢复A节点: 10.1.1.8 备份源节点B节点: 10.1.1.9 需要恢复的新机器A机器操作:pg_rman show detail -B /pgbackup/ 可以看到备份相关信息这里复制备份目录到新节点scp -r /pgbackup/ root@10.1.1.9:/B节

2021-04-12 15:50:43 35

原创 Postgresql事件触发器

目前的事件触发器有四个:ddl_command_start, ddl_command_end, table_rewrite 和sql_drop可以捕捉相应事件信息的有ddl_command_end, table_rewrite 和sql_drop。ddl_command_end事件:可以使用pg_event_trigger_ddl_commands()函数返回ddl_command_end事件的信息,改事件捕捉CREATE, ALTER, DROP, SECURITY LABEL, COMMENT,

2021-04-12 11:01:51 27

原创 阿里云逻辑slot failover实例

摘自阿里云文档背景信息使用逻辑订阅时如果不开启Failover Slot功能,当实例发生主备切换,逻辑订阅就会断开,因为slot不会随着主备切换转移到新主库上,除非手动重新创建slot,否则逻辑订阅无法重新连接。Failover Slot功能可以将所有的logical slot从主实例同步到备实例,避免逻辑订阅断开。通过设置参数rds_failover_slot_mode(即时生效,无需重启实例)可以使用Failover Slot功能,取值如下:sync:同步模式async:异步模式off:关

2021-04-06 20:00:49 26

原创 Postgresql create index,vacuum和cluster进度报告

1.CREATE INDEX 进度报告可查看pg_stat_progress_create_index视图,如下创建索引可以观察的阶段实例:#建表插入测试数据hank=> create table tbl_idx_tb01 (a int,b text);CREATE TABLEhank=> insert into tbl_idx_tb01 select t,'hank_' ||t from generate_series(1,11000000) t;INSERT 0 1100

2021-03-31 17:27:20 29

原创 pglogic之Replication Set使用

pglogic中的replication set是逻辑复制中表的集合,默认自带了三个,如下:logic=# select * from pglogical.replication_set; set_id | set_nodeid | set_name | replicate_insert | replicate_update | replicate_delete | replicate_truncate ------------+------------+--------

2021-03-24 10:45:20 36

转载 关于PostgreSQL的绑定变量窥视的问题详解

1. 绑定变量窥视的原理说明Oracle DBA都知道,绑定变量窥视功能是Oracle数据库的一个特性,自ORACLE9i版本开始引入,是可以通过参数数“_optim_peek_user_binds”来控制是否开启,默认是开启,即为TRUE。这就意味着,第一次以变量的方式执行某类SQL时,会生成第一个执行计划,后续执行该类SQL语句,即使变量的传入值不同,但因变量窥视的作用,依然会沿用第一次SQL语句执行时生成的执行计划,这种特性非常适用于业务表数据分布比较均匀的场景,执行计划比较稳定。但对于数据分布严重

2021-03-23 17:10:01 42

转载 max_wal_size、min_wal_size、wal_keep_segments参数详解

控制WAL日志的数量由这三个参数控制:max_wal_size min_wal_size wal_keep_segments而到PG13版本wal_keep_segments改为了wal_keep_size来控制。假设pg_wal下的文件为:000000A7000000040000005A000000A7000000040000005B000000A7000000040000005C000000A7000000040000005D000000A7000000040000005E000

2021-03-23 14:42:03 83

原创 Postgresql pg_rman安装使用

简单介绍一下:pg_rman可以在线备份整个数据库,支持增量备份和备份压缩,支持存储快照。pg_rman使用的是pg_start_backup(), copy, pg_stop_backup()的备份模式。pg_rman跑的不是流复制协议,而是文件拷贝,所以pg_rman必须和数据库节点跑在一起。如果在standby节点跑pg_rman,pg_rman则需要通过网络连接到主节点执行pg_start_backup和pg_stop_backup。下载安装:wget https://github.co

2021-03-18 20:34:35 35

原创 Postgresql流复制管理工具repmgr安装及使用

安装数据库tar -jxvf postgresql-12.6.tar.bz2mkdir -p /opt/pgdata/pg_rootmkdir -p /opt/pgsql12yum -y install coreutils glib2 lrzsz mpstat dstat sysstat e4fsprogs xfsprogs ntp readline-devel zlib-devel openssl-devel pam-devel libxml2-devel libxslt-devel pytho

2021-03-17 19:31:36 75

原创 Postgresql pglogic安装以及使用实践

postgresql10以后自身具有逻辑复制功能,即发布和订阅,但是之前的版本如果想要表级别的同步,需要pglogic插件实现。原理不再详述,该篇文章只介绍安装以及使用。数据库安装略。下载安装:#切换到postgres系统用户解压安装,需要在需要逻辑复制的节点均安装该插件wget https://github.com/2ndQuadrant/pglogical/archive/REL2_x_STABLE.zipunzip REL2_x_STABLE.zipcd pglogical-REL2_x_S

2021-03-17 17:54:00 73 1

原创 Postgresql shutdown_db插件

类似oracle’s shutdown command来控制访问数据库。安装:$ cd contrib$ git clone https://github.com/s-hironobu/shutdown_db.git$ cd shutdown_db$ make && make install在postgresql.conf添加如下:shared_preload_libraries = 'shutdown_db'使用步骤:$ psql postgrespsql (12

2020-12-10 14:47:38 57

原创 psql: could not fork new process for connection: Resource temporarily unavailable

业务无法和数据库建立连接,上去查看,切换用户就报错su - postgressu: cannot set user id: Resource temporarily unavailable看资源不紧张,怀疑内核参数设置进程数有问题问题如下:tail -n10 /etc/security/limits.conf # End of file* soft nofile 131072* hard nofile 131072* soft nproc 131072* h

2020-12-09 11:06:01 211

原创 ZFS添加删除高速缓存和日志设备

查看池状态 #zpool status pool: zp1 state: ONLINE scan: none requestedconfig: NAME STATE READ WRITE CKSUM zp1 ONLINE 0 0

2020-12-02 14:11:04 470

原创 Postgresql报错FATAL: XX000: database files are incompatible with server

新建数据库,迁移数据,启动的时候无法启动FATAL: XX000: database files are incompatible with serverDETAIL: The database cluster was initialized with RELSEG_SIZE 131072, but the server was compiled with RELSEG_SIZE 1048576.源数据库131072postgres=> select name,setting from p

2020-11-10 15:23:44 342

原创 TimescaleDB Continuous Aggregates介绍

pipelinedb团队加入Confluent,已经不再更新,停留在了1.0.0版本。这里介绍一下可以替换pipelineDB的TimescaleDB,TimescaleDB为时序数据库,时序数据库有以下几个特点:数据记录带有时间戳数据几乎只是追加插入新数据插入都是最新的时间,几乎不进行更新或回填以前丢失的数据。举几个场景:监控系统金融交易系统物联网事件处理应用:商业智能环境监控具体使用方法,也是在postgresql中当插件使用的,具体安装方法可以参考:https://do

2020-10-29 17:27:56 318

原创 Postgresql无法创建to_char表达式索引

PostgreSQL 函数在定义的时候有三个稳定性状态可选,分别简单说明一下:immutable:非常稳定,任何时候调用,只要函数的参数不变结果就不变。如果参数为常量或者无参数,在生成执行计划时,直接将这类函数替换为常量。一个IMMUTABLE函数不能修改数据库并且使用相同的参数永远返回相同的结果。这种状态的函数允许优化器在一个查询用常量参数调用该函数时提前计算该函数。例如,一个 SELECT … WHERE x = 2 + 2这样的查询可以被简化为 SELECT … WHERE x = 4,因为整数加法

2020-10-20 17:21:06 274

原创 Postgresql模糊查询插件pg_bigm安装

具体和pg_trgm的区别,请参考:https://github.com/digoal/blog/blob/master/202009/20200912_01.md下载地址:https://pgbigm.osdn.jp/index_en.html安装tar -zxvf pg_bigm-1.2-20200228.tar.gzcd pg_bigm-1.2-20200228/make USE_PGXS=1make USE_PGXS=1 installpg_bigm使用连续两个字切分pg

2020-09-17 17:05:57 388

原创 Postgresql中$$(双美元符)替换‘(单引号)

1.正常情况下使用单引号引用一个字符串hank=# select 'the world is so beautiful'; ?column? --------------------------- the world is so beautiful2.如果字符串中有单引号,可以写两个单引号hank=# select 'I''m OK'; ?column? ---------- I'm OK(1 row)--如果是老版本的数据库,使用E加\的方式,如下

2020-09-14 16:28:40 242

原创 PostgreSQL存储过程介绍

PG的从11版本支持存储过程,存储过程支持事物,所以在存储过程中可以commit,rollback事物,从oracle迁移存储过程也得到了更好的支持。语法如下:create [or replace] procedure procedure_name(parameter_list)language plpgsqlas $$declare-- variable declarationbegin-- stored procedure bodyend; $$可以看到和创建函数语法类似,但是参数

2020-09-11 16:36:30 279

原创 Postgresql插件sql_firewall介绍

sql_firewall是PostgreSQL扩展插件,旨在防止SQL注入或意外查询数据库。该插件可以学习定义好的一些规则,然后过滤掉定义规则之外的SQL。如下图,有三种模式SQL防火墙共有三种模式,学习模式、预警模式与防火墙模式。• 学习模式,防火墙会记录用户的SQL查询,作为用户常用查询的预期白名单,此时防火墙打开不做校验。• 预警模式,此模式下,防火墙会对用户的SQL进行判断,如果用户的SQL不在白名单中,仍然会执行该SQL,但是会给用户一个报警,告知用户这条SQL不符合白名单记录的业务规则

2020-09-01 15:38:24 226

GREENPLUM管理向导

This guide provides information and instructions for configuring, maintaining and using a Greenplum Database system. This guide is intended for system and database administrators responsible for managing a Greenplum Database system. This guide assumes knowledge of Linux/UNIX system administration, database management systems, database administration, and structured query language (SQL). Because Greenplum Database is based on PostgreSQL 8.2.14, this guide assumes some familiarity with PostgreSQL. Links and cross-references to PostgreSQL documentation are provided throughout this guide for features that are similar to those in Greenplum Database.

2018-04-28

dazuiba008的留言板

发表于 2020-01-02 最后回复 2020-01-02

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人 TA的粉丝

提示
确定要删除当前文章?
取消 删除