linux下postgresql数据库采用slony实现数据同步

转载 2007年10月12日 15:44:00

轉:http://blog.csdn.net/joliny/archive/2007/07/31/1719039.aspx

需要有postgresql的源代码,并且编译过(不一定安装)。

步骤:
1,先下载这个:

http://laser.dyndns.zhengmai.net.cn/download/slony1-1.0.2.tar.gz

解压缩后,有slony1-1.0.2目录。

2,进入该目录,configure --with-pgsourcetree=<postgresql 源代码目录>

3,make & make install

4,以一个数据库用户的身份,我先说一个最简单的,所有表都有主键
的,点对点的主从复制方案,我们需要写下面这么一个脚本:

#!/bin/sh

CLUSTER=『你的集群的名称,随意』
DBNAME1=『需要复制的源数据库』
DBNAME2=『需要复制的目的数据库』
HOST1=『源库IP或主机名』
HOST2=『目的库IP或主机名』
SLONY_USER=『源库数据库超级用户名』
PGBENCH_USER=『源库用户名,没啥用』

slonik <<_EOF_
#这句是定义集群名
cluster name = $CLUSTER;

#这两句是定义复制节点
node 1 admin conninfo = 'dbname=$DBNAME1 host=$HOST1 user=$SLONY_USER';
node 2 admin conninfo = 'dbname=$DBNAME2 host=$HOST2 user=$PGBENCH_USER';

#初始化集群,id从1开始,如果只有一个集群,那么肯定是1
#comment里可以写一些自己的注释,随意
init cluster ( id = 1, comment = 'Node 1' );

#创建一个复制集,id也是从1开始
create set ( id = 1, origin = 1, comment = 'All pgbench tables' );

#向自己的复制集种添加表,每个需要复制的表一条set命令,
#id从1开始,逐次递加,步进为1;
#fully qualified name是表的全称:模式名.表名
#这里的复制集id需要和前面创建的复制集id一致,origin关键字
#这里暂时不解释
set add table ( set id = 1, origin = 1,
id = 1, fully qualified name = 'public.accounts',
comment = 'Table accounts' );
set add table ( set id = 1, origin = 1,
id = 2, fully qualified name = 'public.branches',
comment = 'Table branches' );
set add table ( set id = 1, origin = 1,
id = 3, fully qualified name = 'public.tellers',
comment = 'Table tellers' );
#
#假如某个表没有主键,但是有唯一键字,那么可以用key关键字
#指定其为复制键字,如下面的key参数,如果都没有,则需要添加
#主键,我们以后来讲
set add table ( set id = 1, origin = 1,
id = 4, fully qualified name = 'public.history',
key = "column",
comment = 'Table history' );

#存储主从两个节点的信息
#下面是从节点
store node ( id = 2, comment = 'Node 2' );
#下面是主节点的连接参数
store path ( server = 1, client = 2,
conninfo = 'dbname=$DBNAME1 host=$HOST1 user=$SLONY_USER');
#下面是从节点的连接参数
store path ( server = 2, client = 1,
conninfo = 'dbname=$DBNAME2 host=$HOST2 user=$PGBENCH_USER');
#设置复制中角色,主节点是原始提供者,从节点是接受者
store listen ( origin = 1, provider = 1, receiver = 2 );
store listen ( origin = 2, provider = 2, receiver = 1 );
_EOF_

5,然后执行这个脚本,在任何数据库用户下都可以,自己搞定认证问题吧。

6,在源库(主服务器)上运行命令:

slon 『你的集群的名称』 "dbname=『需要复制的源数据库』 user=『源库数据库超级用户名』"&

7,在目的库(从服务器)上运行命令:

slon 『你的集群的名称』 "dbname=『需要复制的目的数据库』 user=『源库数据库超级用户名』"&

8,提交复制集,可以用下面的脚本:

#!/bin/sh

CLUSTER=『你的集群的名称,随意』
DBNAME1=『需要复制的源数据库』
DBNAME2=『需要复制的目的数据库』
HOST1=『源库IP或主机名』
HOST2=『目的库IP或主机名』
SLONY_USER=『源库数据库超级用户名』
PGBENCH_USER=『源库用户名,没啥用』

slonik <<_EOF_
# ----
# This defines which namespace the replication system uses
# ----
cluster name = $CLUSTER;

#提供连接参数
node 1 admin conninfo = 'dbname=$DBNAME1 host=$HOST1 user=$SLONY_USER';
node 2 admin conninfo = 'dbname=$DBNAME2 host=$HOST2 user=$PGBENCH_USER';

#提交复制集
subscribe set ( id = 1, provider = 1, receiver = 2, forward = no);
_EOF_


slony1是基于postgresql的异步通知机制做的复制技术,
其同步速度非常快,我测试的结果是近乎实时。目前我这个bbs
采用这个复制技术来做备份,呵呵,除了配置稍微复杂点,非常好用!

因为时间关系,更复杂的层次复制我们以后再谈吧。slony自己的
文档也不老少。最近忙坏了。实在没时间细讲。有具体试验问题,
在这里讨论吧,我抽空回复大家。 

Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1719039需要有postgresql的源代码,并且编译过(不一定安装)。

步骤:
1,先下载这个:

http://laser.dyndns.zhengmai.net.cn/download/slony1-1.0.2.tar.gz

解压缩后,有slony1-1.0.2目录。

2,进入该目录,configure --with-pgsourcetree=<postgresql 源代码目录>

3,make & make install

4,以一个数据库用户的身份,我先说一个最简单的,所有表都有主键
的,点对点的主从复制方案,我们需要写下面这么一个脚本:

#!/bin/sh

CLUSTER=『你的集群的名称,随意』
DBNAME1=『需要复制的源数据库』
DBNAME2=『需要复制的目的数据库』
HOST1=『源库IP或主机名』
HOST2=『目的库IP或主机名』
SLONY_USER=『源库数据库超级用户名』
PGBENCH_USER=『源库用户名,没啥用』

slonik <<_EOF_
#这句是定义集群名
cluster name = $CLUSTER;

#这两句是定义复制节点
node 1 admin conninfo = 'dbname=$DBNAME1 host=$HOST1 user=$SLONY_USER';
node 2 admin conninfo = 'dbname=$DBNAME2 host=$HOST2 user=$PGBENCH_USER';

#初始化集群,id从1开始,如果只有一个集群,那么肯定是1
#comment里可以写一些自己的注释,随意
init cluster ( id = 1, comment = 'Node 1' );

#创建一个复制集,id也是从1开始
create set ( id = 1, origin = 1, comment = 'All pgbench tables' );

#向自己的复制集种添加表,每个需要复制的表一条set命令,
#id从1开始,逐次递加,步进为1;
#fully qualified name是表的全称:模式名.表名
#这里的复制集id需要和前面创建的复制集id一致,origin关键字
#这里暂时不解释
set add table ( set id = 1, origin = 1,
id = 1, fully qualified name = 'public.accounts',
comment = 'Table accounts' );
set add table ( set id = 1, origin = 1,
id = 2, fully qualified name = 'public.branches',
comment = 'Table branches' );
set add table ( set id = 1, origin = 1,
id = 3, fully qualified name = 'public.tellers',
comment = 'Table tellers' );
#
#假如某个表没有主键,但是有唯一键字,那么可以用key关键字
#指定其为复制键字,如下面的key参数,如果都没有,则需要添加
#主键,我们以后来讲
set add table ( set id = 1, origin = 1,
id = 4, fully qualified name = 'public.history',
key = "column",
comment = 'Table history' );

#存储主从两个节点的信息
#下面是从节点
store node ( id = 2, comment = 'Node 2' );
#下面是主节点的连接参数
store path ( server = 1, client = 2,
conninfo = 'dbname=$DBNAME1 host=$HOST1 user=$SLONY_USER');
#下面是从节点的连接参数
store path ( server = 2, client = 1,
conninfo = 'dbname=$DBNAME2 host=$HOST2 user=$PGBENCH_USER');
#设置复制中角色,主节点是原始提供者,从节点是接受者
store listen ( origin = 1, provider = 1, receiver = 2 );
store listen ( origin = 2, provider = 2, receiver = 1 );
_EOF_

5,然后执行这个脚本,在任何数据库用户下都可以,自己搞定认证问题吧。

6,在源库(主服务器)上运行命令:

slon 『你的集群的名称』 "dbname=『需要复制的源数据库』 user=『源库数据库超级用户名』"&

7,在目的库(从服务器)上运行命令:

slon 『你的集群的名称』 "dbname=『需要复制的目的数据库』 user=『源库数据库超级用户名』"&

8,提交复制集,可以用下面的脚本:

#!/bin/sh

CLUSTER=『你的集群的名称,随意』
DBNAME1=『需要复制的源数据库』
DBNAME2=『需要复制的目的数据库』
HOST1=『源库IP或主机名』
HOST2=『目的库IP或主机名』
SLONY_USER=『源库数据库超级用户名』
PGBENCH_USER=『源库用户名,没啥用』

slonik <<_EOF_
# ----
# This defines which namespace the replication system uses
# ----
cluster name = $CLUSTER;

#提供连接参数
node 1 admin conninfo = 'dbname=$DBNAME1 host=$HOST1 user=$SLONY_USER';
node 2 admin conninfo = 'dbname=$DBNAME2 host=$HOST2 user=$PGBENCH_USER';

#提交复制集
subscribe set ( id = 1, provider = 1, receiver = 2, forward = no);
_EOF_


slony1是基于postgresql的异步通知机制做的复制技术,
其同步速度非常快,我测试的结果是近乎实时。目前我这个bbs
采用这个复制技术来做备份,呵呵,除了配置稍微复杂点,非常好用!

因为时间关系,更复杂的层次复制我们以后再谈吧。slony自己的
文档也不老少。最近忙坏了。实在没时间细讲。有具体试验问题,
在这里讨论吧,我抽空回复大家。 

Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1719039 

Linux下的 Postgresql的slony-i的数据同步配置

Linux下的 Postgresql的slony-i的数据同步配置 1、安装slony 去slony官网:http://www.slony.info/中下载合适的版本 例如:slony1-2.1.4....
  • silenceray
  • silenceray
  • 2016年09月23日 11:25
  • 973

Windows下Postgre SQL数据库通过Slony-I 实现数据库双机同步备份

一、 我们要实现的环境是windows xp、windows2003上安装Postgre SQL数据库,实现目的是两台数据库服务器进行数据库同步,即数据库同步更新、删除、插入等对数据库的操作。 二、 ...
  • ma12shuai
  • ma12shuai
  • 2013年07月31日 14:43
  • 1922

使用postgreSQL DataSync 进行pg数据库升级 数据同步 升级脚本生成, postgreSQL DataSync简单教程

最近,项目进行版本升级,数据库用的是postgresql ,而且数据库表结构有所改变,需要在保留原有数据库数据的情况下对数据库进行升级,那么怎样知道数据库哪些表哪些字段改变了呢?难道一个一个表一个一个...
  • u013009809
  • u013009809
  • 2017年06月23日 09:34
  • 440

postgresql 数据库同步复制

一、 我们要实现的环境是windows xp、windows2003上安装Postgre SQL数据库,实现目的是两台数据库服务器进行数据库同步,即数据库同步更新、删除、插入等对数据库的操作。 ...
  • zsz0088
  • zsz0088
  • 2014年12月14日 21:46
  • 798

PostgreSQL复制集群概总

pg的复制、高可用、负载均衡相关集群,这儿写个概要备查。 pg有以下各种基于复制的集群方案,多数配过,有的当时没有整理。现在网上也有很多这些集群配置的文档,在这篇文档后找完备点的集中一下备档,不用...
  • BeiiGang
  • BeiiGang
  • 2014年09月06日 12:06
  • 10180

Postgresql 远程同步(非实时同步,小数据量)

源端要开通目标的相关访问权限 目标端: 1.建立远程表的视图 create view v_bill_tbl_version_update_control_info as SELECT...
  • dazuiba008
  • dazuiba008
  • 2016年05月06日 10:31
  • 1461

Postgresql主备同步流复制及主备切换、IP漂移

主备流复制环境搭建请参考http://blog.csdn.net/baiyinqiqi/article/details/47833811 这篇文章介绍的是异步流复制环境的搭建,实际上同步模式只需要修改...
  • baiyinqiqi
  • baiyinqiqi
  • 2015年08月24日 18:03
  • 5424

postgresql多实例创建与Slony-I复制配置

 第一部分 在一个主机上创建多个 postgresql实例 步骤一:安装postgresql软件 安装 postgresql实例,从postgresql官网上  https://w...
  • yumushui
  • yumushui
  • 2016年11月19日 15:32
  • 1213

postgresql主从同步

pg同步的2中方式,hot standby是备库只读的方式。 warm standby 的方式是备库不能提供只读服务。 pg的备份可以是通过cp等操作系统命令直接拷贝数据文件,然后再拷贝wal文件...
  • aoerqileng
  • aoerqileng
  • 2016年09月24日 23:18
  • 1751

linux下postgresql的备份与恢复

备份和恢复 一条命令就可以解决很简单:    这是备份的命令: [sql] view plain copy     pg_du...
  • brandon333
  • brandon333
  • 2017年05月09日 16:16
  • 425
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:linux下postgresql数据库采用slony实现数据同步
举报原因:
原因补充:

(最多只允许输入30个字)