8.5 维护 pgbouncer 除了我们在本章已经说明的,pgbouncer有一个很好的能够执行基本管理和监控任务的交互式管理界面. 它是如何工作的呢?pgbouncer提供给您一个虚假的称为pgbouncer的数据库.它不能被用于查询,因为它只提供简单的语法来处理基本的管理任务. [如果您正在使用pgbouncer,请不要使用普通的数据库名为pgbouncer—它将会导致混乱,它将不会产生好处.] 8.5.1 配置管理接口 为了配置这个接口,我们必须改写我们的配置文件.在我们的例子中,我们将…
8.4 提升性能 从一开始考虑pgbouncer的时候,性能就是一个关键的因素.为了确保高性能,有些问题必须认真对待.首先,确保参与您设置的所有节点相互之间的距离较近.这对于降低网络往返时间有很多的帮助,从而提升性能.减少调用fork()的开销和为了性能的提升而付出网络时间是没有必要的.正如在大多数情况下,降低网络时间和延迟绝对是一笔巨大的开销. 基本上,pgbouncer可以放到一台专用的pgbouncer服务器上,直接放在一个数据库节点,或者放在web服务器上.一般来说,建议不要把数据库基础…
8.3 配置您的第一个pgbouncer设置 一旦我们已经完成了pbouncer的编译与安装,我们可以容易地启动它.要做到这一点,我们已经在一个本地实例(p0和p1) 建立了两个数据库.在本例中,执行设置的想法是使用pgbouncer作为代理. 8.3.1 写一个简单的配置文件并启动pgbouncer 为了使pgbouncer工作,我们可以写一个简单的配置文件,它可以被添加到pgboucner: [databases] p0 = host=localhost dbname=p0 p1 = hos…
8.2 安装pgbouncer 在我们深入细节之前,我们将看看如何安装pgbouncer.正如PostgreSQL一样,您可以采取两种途径.您可以安装二进制包或者直接从源代码编译.在我们的例子中,我们将向您展示如何采用源代码进行安装. 您想要做的第一件事是从官方网站下载pgbouncer:http://pgfoundry.org/projects/pgbouncer. 一旦以下载了.tar归档文件,您可以放心地使用如下命令进行解压: tar xvfz pgbouncer-1.5.4.tar.gz…
当您在使用大规模的设施工作,可能有时候,您必须处理许多并发打开的连接.没有人会使用十台服务器来为两个并发用户提供服务--在许多情况下,这根本没有意义.大量的设施通常会处理成百上千的并发连接.引入连接池,例如pgbouncer,会有助于挤出您的系统的更多的性能. 通常创建成千上万个连接可以说是一笔相当的开销,因为每次一个连接到PostgreSQL的连接被创建需要调用fork().如果一个连接仅使用较短的时间,这可是昂贵的事.这是需要使用pgbouncer的时候.基本上,pgbouncer不是一个复…
在前面的章节中,我们已经能够深入地理解了pgbouncer,同时也学会了如何使用它来尽可能地优化复制设置.在本章我们将了解一个经常被称作与pgbouncer相对应的工具.尽管pgpool的思想与pgbouncer有许多相似地方,它已经被设计为比pgbouncer多好多的特性.虽然做一件事pgbouncer更轻盈和优化过的.pgpool提供了更多的特点和承诺了附加的功能. 根据您的需求,您可以自由决定对于您的特殊设置来说哪个工具较好. 9.1 安装pgpool 正如我们已经看到的PostgreSQ…
9.7 处理故障转移和高可用 可以使用pgpool来解决的一些明显的问题是高可用性和故障转移.一般来讲,有使用pgpool或者不使用pgpool可以用来处理这些问题的各种方法. 9.7.1 使用PostgreSQL流和Linux HA 使用pgpool解决高可用性的最简单的方法是和Linux HA一起使用PostgreSQL的板载工具.在这种情况下,在我们的世界中,最好的方法是不使用语句级别的复制运行pgpool和使用PostgreSQL的流复制来同步数据. pgpool可以被配置来做负载均衡,…
9.6 运行pgpool和流复制 pgpool也可以和除了语句级别的复制之外的流复制一起使用.一个完美的方案是使用PostgreSQL的板载复制和仅仅使用pgpool的负载均衡与连接池. 实际上,这样做是非常有好处的,因为您没有必要担心函数的副作用或潜在的其他问题.PostgreSQL的事务日志总是正确的,并且它被认为是终极法则. 在流复制没引入到PostgreSQL内核之前,pgpool的语句级的复制是一个复制数据的很好的功能. 除此之外,这对只有一个master来说也是非常有益的.原因很简单…
9.4 设置复制和负载均衡 要配置pgpool,我们可以简单地使用一个包含一种典型的配置信息的已经存在的样本文件,将它拷贝到我们的配置目录并修改之: $ cp /usr/local/etc/pgpool.conf.sample /usr/local/etc/pgpool.conf 改写这个配置文件比从头写这个文件要容易的多.在下面的列表中,您将看到一个实例配置,您可以把它用于两个节点的简单配置: listen_addresses = 'localhost' port = 9999 socket_…
9.3 理解pgpool的架构 一旦我们安装了pgpool,是时候来讨论软件架构了.从一个用户的角度看,pgpool就像一个 正常的数据库服务器,您可以想连接任何其他服务器一样连接到它: pgpool将根据您的需要调度请求. 一旦您理解了总体架构,因为从使用者的角度看,我们可以挖掘更详细的信息: 当pgpool启动了,我们就启动了pgpool的父进程.这个进程将分配并创建所谓的子进程.这些进程将负责为请求提供服务给终端用户并处理与我们的数据库节点的交互.这一策略将急剧减少到PostgreSQL的…
9.2 理解pgpool的功能 pgpool提供了如下功能: •连接池 •语句级别的复制 •负载均衡 •限制连接 •内存缓存 •并行查询 [当决定使用那些功能的时候,记住并非所有的功能可以在同一时间使用是很重要的.下面的网站什么功能可以一起使用,什么功能不能一起使用:http://www.pgpool.net/docs/latest/pgpool-en.html#config] pgpool的一个核心功能是做连接在的能力.这个思想和我们在前面章节中所描述的一个软件大致相同.我们想减少每次一个网页…
9.5 检查复制 如果所有的节点都处于开机并运行的状态.我们就可以在集群上运行我们的第一个操作了.在我们的例子中,我们将简单地连接到pgpool并创建一个新的数据库.createdb 是一个命令行工具提供CREATE DATABASE命令的抽象服务,它可以被pgpool很好地复制.在我们的例子中,我们简单地创建一个叫做xy 的数据库来看看复制是否工作: $ createdb xy -p 9999 要查看那个命令是否已经如期被复制.我们建议连接到两个数据库并看看新的数据库是否被显示出来.在我们的例…
PostgreSQL Replication系列翻译自PostgreSQL Replication一书 在本章中,将会介绍不同的复制概念,您会了解哪些类型的复制对哪一种实用场景是最合适的. 在本章的最后,您将能够判断某个概念在各种情况下是否是可行的. 我们在本章将介绍以下主题: • CAP理论 •复制的物理限制 •为什么延迟有影响 •同步和异步复制 •拆分和复制 在我们使用PostgreSQL实际工作之前,我们将引导您完成一些非常基本的与复制相关想法和事实. 1.1 CAP理论和物理限制 您可能…
原文:https://www.cnblogs.com/xmzzp/p/6284300.html postgres 实现master, slave ,且master是多主. ----------------------------------------------------------------------------------------------------------------------------------- PostgreSQL Replication之扩展与BDR  …
11.3 管理 pgq-queues Skytools 的一个核心组件是pgq.它提供了一个通用排队接口,它可以让您把消息从一个消息提供者传送到一个任意数目的接收者. 现在的问题是:一般来说,一个队列的要点是什么?队列有一些很不错的特征.首先,它可以保证消息的传递.除此之外,它将确保消息被放入队列的顺序会被保留.在复制的情况下,这是非常重要的,因为我们必须确保小不会相互追赶对方. 队列的思想是能够使任何东西从整个生产数据被发送到任何别的参与系统的主机.这不仅适用于复制,使用与很多—您可以把pgq…
主库IP:192.168.230.128 备库IP:192.168.230.129 PostgreSQL版本: 主备机PostgreSQL源码包均位于/opt/soft_bak OS:CentOS5 主备库PostgreSQL均安装在/usr/local/pg952目录下 数据目录均在/usr/local/pg952/data 主备机为为postgres用户配置如下环境变量: export PGPORT=5432(postgresql.conf中的端口) export PGDATA=/usr/l…
与Walbouncer 一起工作 在本书的最后一章,将引导您通向2014年发布的一个工具,称为walbouncer.本书中的大多数技巧说明了如何复制整个数据库实例,如何分片,等等.在最后一章,是关于wabouncer的,它是所有关于过滤事务日志流来选择性地复制数据库对象从一台服务器到到一组(不一定是完全相同的)slave. 本章将涵盖以下主题: • walbouncer的基本概念 •安装walbouncer •选择性地复制数据库,表,和表空间 walbouncer 工具适用于 PostgreSQ…
在这一章中,将向您介绍一个全新的技术,成为BDR.双向复制(BDR),在PostgreSQL的世界里,它绝对是一颗冉冉升起的新星.在不久的将来,许多新的东西将会被看到,并且人们可以期待一个蓬勃发展的项目. 本章将是关于如下这些主题: •理解 BDR 复制概念 •安装 BDR •设置一个简单的集群 •修改集群和故障转移 •了解 BDR 的性能 在挖掘所有的技术细节之前,理解 BDR 方面的基本技术是非常重要的.           理解 BDR 复制概念 过去,在9.0被引进之前,人们不得不使用S…
12.7 处理故障转移和删除节点 在本节中,我们将看看故障切换如何处理.我们还将看看如何使用安全可靠的方法添加节点到Postgres-XC设置以及如何从Postgres-XC设置删除节点. 12.7.1 处理节点故障转移 如果您在Postgres-XC中执行一个查询,它可能会诶分派到集群内许多不同的节点.例如,在高度分区表执行一个顺序扫描将涉及到许多不同的节点.现在的问题是:如果一个或者一些数据节点停机会发生什么? 答案很简单:Postgres-XC将无法利用发生故障的节点执行请求.这会导致一个…
12.4 性能优化 Postgres-XC不是一个奇特的PostgreSQL版本,而是一个真正的分布式系统.这意味这,您不能只存储数据,希望事情超出服务器之外的快速,高效.如果您想优化速度,思考数据是如何在幕后存储的,以及查询是如何执行的是非常有益的. 当然,您可以只加载数据,事情也会工作 ,但,如果性能真的是一个问题,您真的应该去想想如何利用您的数据.请记住,如果您的负载较低的话,使用一个分布式数据库系统是没有意义的.因此,如果您是一个Postgres-XC使用者,我们希望您的负载和您的要求非…
在这一章中,将向您介绍一个全新的技术,成为BDR.双向复制(BDR),在PostgreSQL的世界里,它绝对是一颗冉冉升起的新星.在不久的将来,许多新的东西将会被看到,并且人们可以期待一个蓬勃发展的项目. 本章将是关于如下这些主题: ?理解 BDR 复制概念 ?安装 BDR ?设置一个简单的集群 ?修改集群和故障转移 ?了解 BDR 的性能 在挖掘所有的技术细节之前,理解 BDR 方面的基本技术是非常重要的.           理解 BDR 复制概念 过去,在9.0被引进之前,人们不得不使用S…
7.6 PostgreSQL和高可用性 数据库是我们日常数字生活的一部分,并期望它们快速工作. 您浏览网上论坛吗?那个帖子在数据库中.您看医生吗?您的医疗记录在数据库中.您在网上购物吗?那个货物,您的数据和以前购买的东西都在数据库中. 希望所有这些数据在几秒钟内出现.这不仅是您的期望.一个小网店可能同时有成百上千的访客,每个访客都希望网站快速展现.较大的网站可以同时处理几万或者几十万的访问. 这意味着该服务背后的数据库必须一直可用.当我们考虑这样的网站服务于全球的用户时,问题的范围变得很明显.总…
4.4 基于流和基于文件的恢复 生活并不总只是黑色或白色:有时也会有一些灰色色调.对于某些情况下,流复制可能恰到好处.在另一些情况下,基于文件复制和PITR是您所需要的.但是也有许多情况下,您既需要流复制,也需要基于文件的复制.一个例子是:当您较长一段时间中断复制,您可能想再次使用归档来重新同步(resync)slave,而不是再次执行完全的基础备份.这也可能是有用的---保留一个归档一段时间以后调查或重放操作.好消息是PostgreSQL允许您混合基于文件和基于流的复制.您没有必要决定基于流的…
4.2 配置级联复制 正如您在本章已经看到的,设置流复制真的很容易.只需要设置几个参数,做一个基础备份,并享受您的复制设置. 在许多情况下,这种情况更有一点点微妙.在这个例子中我们假设:我们要使用一个master传送数据到几十台服务器.复制的开销其实很小(通常的说法是一个slave的开销是3%左右),但是您做小的事情是足够了,它仍然可能是一个问题.对100个 slave来说这绝对没有任何益处. 另一个用例是一个地方的master和在 另一个地方的多个slave.一遍又一遍地长距离发送大量的数据是…
执行完您的第一个即时恢复(PITR,Point-In-Time-Recovery),我们准备在一个真正的复制设置上工作.在本章,您将学会如何设置异步复制和流.我们的目标是确保您可以实现更高的高可用和更高的数据安全性. 在本章,我们将讨论以下主题: • 配置异步复制 • 理解流 • 合并流和归档 • 管理时间线 在本章的最后,您将很容易地在几分钟内设置流复制. 4.1 设置流复制 在前面章节中,我们已经从简单的16MB XLOG文件做了恢复.从逻辑上讲,重放进程一次只能重放16MB.这在您的复制设…
3.3 做基础备份 在上一节中,您已经看到,启用归档只需要几行命令,并提供了极大的灵活性.在本节,我们将看到如何创建一个所谓的基础备份,稍后这可以使用XLOG.一个基本备份是一个最初的数据的拷贝. [请记住,XLOG本身是没有什么价值的.只是在和初始备份联合起来的时候是有用的.] 在PostgreSQL中,有两个主要的选择来创建一个初始的基本备份: • 使用 pg_basebackup • 传统的基于 copy/rsync 的方法 下面两节将详细地介绍如何创建一个基础备份: 使用pg_baseb…
13.3 聪明地扩展与处理集群 建立集群不是您面临的唯一任务.如果所有的事情都做完了并且系统已经运行了,您可能需要到处调整配置. 13.3.1 添加和移动分区 一旦一个集群启动并运行,您可能会发现您的集群太小,而不能处理您的应用产生的负载.现在的问题是:如何采用最明智的方法做到这一点? 您可以做的最好的事情是创建比需要的多的多的分区.所以,如果您开始考虑使用差不多四个节点,我们直接创建十六个,每台服务器上运行四个分区.在这种情况下,扩展您的集群将会很容易: • 复制所有的生产节点 • 重新配置…
13.2 设置 PL/Proxy 简短的理论介绍之后,我们可以继续前进并运行一些简单的PL/Proxy设置.要做到这一点,我们只需安装PL/Proxy并看看这是如何被使用的. 安装PL/Proxy是一件很容易的事.首先,我们要从http://pgfoundry.org/projects/plproxy/下载源代码.当然,如果对您的系统来说,预编译表是可用的话,您也可以安装二进制包.然而,在这一节中,我们将简单地从源代码执行安装,并看看事情如何在一个非常基本的水平工作. 安装过程的第一步是解压ta…
在这里添加一个slave,真的有一个很好的可扩展性的策略,这基本上足以满足大多数现代应用程序.使用一台服务器的情况下,许多应用程序就会完美地运行,您可能想添加以副本以给基础设施增加一些安全,但在许多情况下,这是许多人想要的. 如果您的应用程序变得越来越大,可以在很多情况下,您可以添加slave和向外扩展读:这也不是什么大问题,并可以很容易地完成.如果您要添加更多的slave,您可能需要级联复制您您的基础设施,但对于98%的应用程序来说,目前为止,这就够了. 其余2%的应用程序由PL/Proxy来…
12.5 创建表和发送查询 介绍了Postgres-XC以及其底层的思想之后,是时候创建我们的第一个表,看看集群将如何表现.下面的例子演示了一个简单的表.将使用id列的哈希键来分布它: test=# CREATE TABLE t_test (id int4) DISTRIBUTE BY HASH (id); CREATE TABLE test=# INSERT INTO t_test SELECT * FROM generate_series(1, 1000); INSERT 0 1000 一旦…