在PostgreSQL领域中,Slony是最广泛的复制解决方案之一.它不仅是最老的复制方案实现的一个,但也是有最多的外部工具支持的一个,例如PgAdmin3等. 在本章中,我们将深入探究Slony并学习如何把Slony整合到您的复制配置中.您也可以找到您可以使用Slony解决的问题. 本章将包含如下主题: • 安装 Slony • Slony 系统架构 • 复制表 • 部署 DDLs • 处理故障转移 10.1 安装 Slony 要安装 Slony,我们可以从slony.info下载最新的压缩包…
10.6 执行故障切换 一旦您学会了如何复制表并将它们添加到集合中,是时候学习故障转移了.基本上,我们可以在两个两种类型的故障转移之间做出区分: • 计划内故障转移 • 计划外故障转移和崩溃 在本节,我们将学习这两个场景. 10.6.1计划内的故障转移 计划内的故障转移更多的是一种奢侈的场景.在许多情况下,您不会很幸运,您必须依靠自动故障转移或者面对意外中断. 基本上,一个计划内的故障转移可以看作是移动一组表到其它节点.一旦其它节点主管那些表,您就可以相应地处理事情. 在我们的例子中,我们希望将…
10.5 给复制添加表和管理的问题 一旦我们增加了此表到系统中,我们可以将它添加到复制设置.这样做有点复杂.首先,我们必须创建我们自己的新表集合并把这个和我们已经有的表合并.因此,过一段时间,我们将有两个表集合.该脚本是这样的: #!/bin/sh MASTERDB=db1 SLAVEDB=db2 HOST1=localhost HOST2=localhost DBUSER=hs slonik<<_EOF_ cluster name = first_cluster; node 1 admin…
10.4 部署DDLs 对于生产性的应用程序来说,仅仅复制一个表明显是不够的.此外,通过没有办法保证数据从来不会发生改变.在某些时候,部署变化的数据结构(所谓的DDLs)是必要的. 现在的问题是,Slony严重依赖于触发器.当表中的一行数据发生变化时,触发器触发.这对所有的表都适用—但是,它不适用于系统表.所以,如果您部署一个新表,或者您碰巧改变了一列,Slony是没有办法检查到的.所以,您必须运行一个脚本来部署在集群内部的变化来使它工作. [PostgreSQL 9.3 已经有一些基本的触发…
10.2 理解 Slony如何工作 在我们开始复制我们的第一个数据库之前,我们想深入Slony的架构.理解这是如何工作的是非常重要的,否则,将不可能以一种有用的和合理的方法使用这个软件.与事务日志流不同,Slony使用逻辑复制.这意味着它不使用内部二进制数据(比如XLOG),但逻辑数据(在Slony的情况下,这是文本)代替.使用文本数据代替内置的事务日志有一定的优势,但也有些缺点,这将在本章中详细讨论. 10.2.1 处理逻辑复制 首先,我们要讨论的是,逻辑复制的真正含义:每个Slony设置的基…
10.3 复制您的第一个数据库 这个小小的介绍之后,我们可以继续前进并复制我们的第一个数据库.要做到这一点,我们可以在一个数据库实例上创建两个数据库.我们想简单地在这两个数据库之间进行复制. [ 您在一个实例上复制或在两个实例上复制,这是没有区别的—它的工作原理完全一样.] 一旦您的实例启动并运行了,创建这两个数据库应该是一件容易的事: hs@hs-VirtualBox:~$ createdb db1 hs@hs-VirtualBox:~$ createdb db2 现在我们可以创建一个表,它应…
原文:https://www.cnblogs.com/xmzzp/p/6284300.html postgres 实现master, slave ,且master是多主. ----------------------------------------------------------------------------------------------------------------------------------- PostgreSQL Replication之扩展与BDR  …
9.7 处理故障转移和高可用 可以使用pgpool来解决的一些明显的问题是高可用性和故障转移.一般来讲,有使用pgpool或者不使用pgpool可以用来处理这些问题的各种方法. 9.7.1 使用PostgreSQL流和Linux HA 使用pgpool解决高可用性的最简单的方法是和Linux HA一起使用PostgreSQL的板载工具.在这种情况下,在我们的世界中,最好的方法是不使用语句级别的复制运行pgpool和使用PostgreSQL的流复制来同步数据. pgpool可以被配置来做负载均衡,…
登录 sudo su - postgres psql 1 创建Postgresql新用户,devpg是用户名,密码也是devpg, 不是超级管理员,拥有创建数据库权限,登录权限,继承拥有角色权限 create user devpg with NOSUPERUSER CREATEDB NOCREATEROLE INHERIT LOGIN PASSWORD 'devpg' ; 2 \du查看 postgres=# \du List of roles Role name | Attributes |…
4.4 基于流和基于文件的恢复 生活并不总只是黑色或白色:有时也会有一些灰色色调.对于某些情况下,流复制可能恰到好处.在另一些情况下,基于文件复制和PITR是您所需要的.但是也有许多情况下,您既需要流复制,也需要基于文件的复制.一个例子是:当您较长一段时间中断复制,您可能想再次使用归档来重新同步(resync)slave,而不是再次执行完全的基础备份.这也可能是有用的---保留一个归档一段时间以后调查或重放操作.好消息是PostgreSQL允许您混合基于文件和基于流的复制.您没有必要决定基于流的…