PostgreSQL从小白到专家,是从入门逐渐能力提升的一个系列教程,内容包括对PG基础的认知、包括安装使用、包括角色权限、包括维护管理、、等内容,希望对热爱PG、学习PG的同学们有帮助,欢迎持续关注CUUG PG技术大讲堂。
本文主要介绍 Windows 环境下搭建 PostgreSQL 的主从逻辑复制,关于 PostgreSQl 的相关运维文章,网络上大多都是 Linux 环境下的操作,鲜有在 Windows 环境下配置的教程,所以本文采用 Windows 环境作为演示系统来进行 PostgreSQL 高可用数据库服务的搭建。
PostgreSQL 高可用数据库的常见搭建方式主要有两种,逻辑复制和物理复制,上周已经写过了关于在Windows环境搭建PostgreSQL逻辑复制的教程,这周来记录一下 物理复制的搭建方法。
在PG10及以后版本中,引入了 synchronous_standby_names 这种基于 Quorum的同步复制优选提交的机制。
连续归档可以被用来创建一个高可用性(HA)集群配置,其中有一个或多个后备服务器随时准备在主服务器失效时接管操作。这种能力被广泛地称为温备或日志传送。
PostgreSQL支持物理复制(流复制)及逻辑复制2种。通过流复制技术,可以从实例级复制出一个与主库一模一样的实例级的从库。流复制同步方式有同步、异步两种。
PostgreSQL在9.x之后引入了主从的流复制机制,所谓流复制,就是备服务器通过tcp流从主服务器中同步相应的数据,主服务器在WAL记录产生时即将它们以流式传送给备服务器,而不必等到WAL文件被填充。
docker exec -it -u postgres pgsslave /bin/bash
Postgresql9开始支持流复制(stream replication),作为pg原生的复制技术,有着很好的性能。本文从几个方面全面介绍pg的流复制技术。
数据库逻辑解码很有必要,也很有用处,多用于异构数据库逻辑复制中。另外逻辑解码在某些关键时候可以救命,比如主从脑裂的场景,如果在主备切换后原主库还有业务写入会造成脑裂,这时候如果创建了逻辑复制槽,那么可以将某段时间的xlog日志解码成sql语句,找回丢失的数据,这一点很有用。
第二步:pg_basebackup -Fp -P -x -D ~/app/data/pg_root21 -l basebackup21
主备流复制,是PostgreSQL最常用、最简单的一种高可用、读写分离的形式,类似于Oracle的ADG,主库用于读写,备库可以只读。
环境说明 Docker Ubuntu/CentOS PostgreSQL v10.1 1. 运行PostgreSQL 1.1 主库 docker run --name pgsmaster -p 5500:5432 -e POSTGRES_PASSWORD=pgsmaster -v $(pwd)/pgsmaster:/var/lib/postgresql/data -d postgres 1.2 从库 docker run --name pgsslave -p 5501:5432 -e POS
WAL日志是Postgres何其重要的一个部分,它活跃在Postgres的各个功能模块,绝大多数的数据库行为都会被记录在WAL日志中。正因为如此我们可以把WAL日志看作是数据库变更的履历,也因为这一特性,WAL日志在数据库恢复、高可用、流复制、逻辑复制等Postgres模块中扮演着极其重要的角色。如下一张图片描述了WAL日志从产生到使用过程中涉及的各种各样的wal相关的配置参数(基于PG12)。弄清楚每一个参数的意义对我们优化数据库性能,配置高可用集群等有举足轻重的作用。我们可以从PostgreSQL文档中找到每一个配置参数的定义,但是我们从简单的几行描述很能很难理解参数的内在意义,或者不知道为什么要有这个参数的存在,更有甚者你在根据别人的博客配置数据库时,发现你的数据库版本不认识博客里面的配置参数。这篇博客将从PostgreSQL 7.1版本最原始的WAL日志开始理解wal日志,迭代wal日志的发展过程。
我们知道postgresql的主从切换有点麻烦,或者说操作步骤要求很严格。可能我们经常遇到这种情况,在没有将主库杀死的情况下将备库提升为主,这时主备库可能由于某种原因都在提供写入操作,这时发生脑裂,如果不考虑数据丢失因素,这时我们可能想将原来的主库以备库的模式重新加入集群,但是主备库此时的时间线已经偏离了,这时就需要我们的pg_rewind工具了。
GreenPlum是基于PostgreSQL的分布式数据库,master用于接收用户请求并生成执行计划与分发,当然也可以参与计算;而segment则用于存储数据,将计算的结果传递给master。Segment本身具有高可用特性,即分为primary和mirror,通过主从复制构建高可用关系。默认使用同步复制,若FTS检测到mirror发生异常,则修改为异步复制。本文关注如何从同步复制切换到异步复制。
版权声明:本文为木偶人shaon原创文章,转载请注明原文地址,非常感谢。 https://blog.csdn.net/wh211212/article/details/80666735
PG学习初体验--源码安装和简单命令(r8笔记第97天) 记得在2年前写过一篇PostgreSQL的文章,当时处于兴趣,本来想在工作中接一下PG的业务,最后因为各种各样的原因就搁置了。 今天整理了下PostgreSQL的一些基础内容,参考的书是唐成老师的那本《PostgreSQL修炼之道》,有了Oracle和MySQL的基础,看起来会比从零开始要容易一些,总体的感觉,PG功能确实很多很全,功能上像Oracle看齐,技术风格和MySQL很像,在做一些总结的时候,不停的在两个数据库之间来回切换。 关于主备环
在MySQL被收购之后,虽然有其替代品为: MariaDB,但是总感觉心里有点膈应。大家发现了另一款开源的数据库: PostgreSQL。
PostgreSQL复制中有个很重要的参数:synchronous_commit。它决定何时向客户端确认事务提交成功。这个参数不仅仅关于主备同步,还有更广泛的含义,对于单机PG实例也很有用。为了更好地理解,需要了解WAL记录的整个传播过程以及可以接受提交确认的各个阶段。这使得我们能够为每个事务选择不同级别的持久性。持久性的级别越低,确认越快,从而提高系统整体吞吐量和性能。
如果打开这个参数,PostgreSQL服务器将尝试确保更新被物理地写入到磁盘,做法是发出fsync()系统调用或者使用多种等价的方法(见wal_sync_method)。
Postgresql中常见的的sharebuffer配置为内存的25%,而mysql的bp常见配置为内存的75%,原因和刷盘方式不同有关。
摘要: 数据库 ACID 中的持久化如何实现 数据库 ACID 里面的 D,持久化。 指的是对于用户来说提交的事务,数据是可靠的,即使数据库 crash了,在硬件完好的情况下,也能恢复回来。PostgreSQL 是怎么做到的呢,看一幅图,画得比较丑,凑合看吧。假设一个事务,对数据库做了一些操作,并且产生了一些脏数据。
PostgresSQL在9.1之后引入了主从的流复制机制,所谓流复制,就是从服务器通过tcp流从主服务器中同步相应的数据。这样当主服务器数据丢失时从服务器中仍有备份。与基于文件日志传送相比,流复制允许保持从服务器更新。从服务器连接主服务器,其产生的流WAL记录到从服务器, 而不需要等待主服务器写完WAL文件。
Postgresql主从复制 📷 主备数据库启动,备库启动wal_receiver进程,wal进程向主库发送连接请求; 主库收到连接请求后启动wal_sender进程,并与wal_receiver进程建立tcp连接; 备库wal_receiver进程发送最新的wal lsn 给主库; 主库进行lsn 对比,定期向备库发送心跳信息,来确认备库的可用性,并且将没有传递的wal日志文件进行发送,同时调用SyncRepWaitForLSN()函数来获取锁存器,并且等待备库响应;锁存器的释放时机和主备同步模式的选择有
standby_mode (boolean) 指定是否将PostgreSQL服务器作为一个后备服务器启动。如果这个参数为on,当到达已归档 WAL 末尾时该服务器将不会停止恢复,但是将通过使用restore_command获得新的WAL 段以及/或者通过使用primary_conninfo设置连接到主服务器来尝试继续恢复。
本文档主要测试Greenplum集群的Master与Standby节点异常后数据同步问题,之相互切换的过程。在操作时通过手动停掉Master节点看Standby节点是否能正常的启动,期间是否有数据不同步的问题,再通过恢复原Master节点查看集群是否正常运行。在切换期间要注意Master与Standby脑裂的情况的发生。
本文讨论PostgreSQL 14数据库连接参数target_session_attrs增强的功能,并解释该功能背后的历史、如何使用它以及它提供的各种好处。
简单来说GPDB是一个分布式数据库软件,其可以管理和处理分布在多个不同主机上的海量数据。对于GPDB来说,一个DB实例实际上是由多个独立的PostgreSQL实例组成的,它们分布在不同的物理主机上,协同工作,呈现给用户的是一个DB的效果。Master是GPDB系统的访问入口,其负责处理客户端的连接及SQL 命令、协调系统中的其他Instance(Segment)工作,Segment负责管理和处理用户数据。
更多参数参考:http://postgres-xc.sourceforge.net/docs/1_1/pgxc-ctl.html
114.112.77.199 master、segment 210.73.209.103 standby master、segment 140.210.73.67 segment
WAL 机制 write ahead log ,在 PG 中是很重要的,关于数据库的安全和性能都会和 WAL 有牵扯。
通过keepalived 来实现 PostgreSQL 数据库的主从自动切换,以达到高可用。当主节点宕机时,从节点可自动切换为主节点,继续对外提供服务。
6)通过pg_waldump --path=/tmp/sd/pg_wal -start=0/1C420B8看下日志文件里内容。使用的是步骤3中的起始LSN。注意WAL中包含创建物理文件的指令:
最近在测试openGauss主从复制时发现一个问题:当备机落后主机很多时(比如停了一段时间后再启动),启动后会自动的追数,追数的过程状态是catchup,而在catchup的过程中,主库上的写入会全部阻塞,当然经过进一步验证,如果存在其他正常的备库(状态是normal),那么其中一个备库catchup不会阻塞主库。
Mysql的逻辑复制性能虽然被诟病的比较久了,但是功能多,延迟复制,级联复制,多源复制. 尤其MYSQL的复制的灵活性有种被玩坏了感觉. POSTGRESQL 的复制方式其实也是支持延迟库的,POSTGRESQL 的WAL 的复制方式也是比较灵活的,PITR . 实际上原理就是延迟数据的重放.PostgreSQL使用的是流复制,所以它的设计速度非常快,因为WAL接收者截取了一组日志记录,然后把这些日志记录写到WAL文件中。那么这篇文字要说的一个复制延迟是人为的复制延迟, 另一个是实际上由于某些原因导致的复制延迟.
环境:VirtualBox 5.0.14 + RHEL 6.5 需求:个人实验搭建一套Standby RAC时,为了节约时间,直接复制之前安装RAC的主机模板。 但复制之后发现网卡名称不一致: 我这里的环境,Primary RAC的Public IP和Private IP分别对应的网卡名称是eth2,eth3。 而复制Standby RAC的其中一台网卡名称是eth6,eth7;另一台是eth4,eth5.为了保持一致方便后续管理维护,需要将Standby RAC的两台机器的网卡都统一改为eth2,eth3. 同样的,复制的主机主机名是和之前一样的,所以把主机名也修改一下。
Pgpool 是一个高性能的连接池和负载均衡器,用于 PostgreSQL 数据库。Pgpool 可以作为中间层,位于客户端和 PostgreSQL 服务器之间,来管理连接请求并分配给不同的 PostgreSQL 服务器进行处理,以提高整体的系统性能和可用性。Pgpool 的一些主要功能包括:
前些天给个环境部署PostgreSQL 主从负载均衡,这里仅仅简单记录一下命令以备后续使用,至于数据库的更多配置请自行根据需求配置.
在前面我们已经掌握了单个容器的管理操作,但是在实际工作中很少是只运行一个容器,而更多的是需要运行多个容器进行协作的情况,因此就需要多个容器之间能够互相访问到对方的服务,那么本篇文章就来学习Docker端口映射与容器互联相关的知识,注意本文所提到的宿主机是指VMware虚拟机,而非本地的Windows系统主机。
https://network.pivotal.io/products/vmware-tanzu-greenplum#/releases/1163282/file_groups/9837
wget https://download.postgresql.org/pub/repos/yum/9.6/redhat/rhel-7-ppc64le/pgdg-centos96-9.6-3.noarch.rpm yum install pgdg-centos96-9.6-3.noarch.rpm
某些情况下,一个后备服务器会尽快恢复来自于主服务器的 WAL 记录。有一份数据的延时拷贝是有用的,它能提供机会纠正数据丢失错误。这个参数允许你将恢复延迟一段固定的时间,如果没有指定单位则以毫秒为单位。例如,如果你设置这个参数为5min,对于一个事务提交,只有当后备机上的系统时钟超过主服务器报告的提交时间至少 5分钟时,后备机才会重放该事务。
Greenplum是一个MPP分布式数据库软件,本质上是并行利用硬件使其充分发挥能力以达到最佳性能。Greenplum可以运行在多种环境中,如物理机、虚拟机、云服务器等等,但无论哪种环境,要保证高可用、高性能和稳定性,必须以选择适当的硬件、操作系统、文件系统为基础。对底层系统和数据库的合理配置,也是获得一个强力Greenplum集群的重要前提条件。本篇详细论述Greenplum 6安装部署所涉及的各方面问题。
wal_level (enum) wal_level决定多少信息写入到 WAL 中。默认值是replica,它会写入足够的数据以支持WAL归档和复制,包括在后备服务器上运行只读查询。minimal会去掉除从崩溃或者立即关机中进行恢复所需的信息之外的所有记录。最后,logical会增加支持逻辑解码所需的信息。每个层次包括所有更低层次记录的信息。这个参数只能在服务器启动时设置。
此种方式是直接备份数据库物理文件,在pg数据库里,这通常指的是PGDATA变量定义的文件夹,例如:
Odoo(以前称为OpenERP)是一个由10,000多个开源应用程序组成的自托管套件,可满足各种业务需求,包括CRM,电子商务,会计,库存,销售点和项目管理。这些应用程序都是完全集成的,可以通过Web界面进行安装和访问,从而可以轻松实现公司流程的自动化和管理。
第一个重要的子模块就是这个 Server 相关的模块。Server 代表服务的意思,其实就是这个 Nginx 的 HTTP 服务端所能提供的服务。或者更直白点说,就是虚拟主机的配置。通过 Server ,我们可以在同一台服务器上,配置监听不同端口号的 HTTP 应用,配置不同域名解析的 HTTP 服务,并且还可以灵活组合进行各种不同的域名和端口号的配置。这就是 Server 模块的作用。
领取专属 10元无门槛券
手把手带您无忧上云