设为首页收藏本站

LUPA开源社区

 找回密码
 注册
文章 帖子 博客
LUPA开源社区 首页 业界资讯 技术文摘 查看内容

Bucardo 5实现PostgreSQL多master的异步复制

2014-6-25 11:57| 发布者: joejoe0332| 查看: 4015| 评论: 0|原作者: 几点人|来自: 开源中国社区

摘要: 下一代异步多个主数据库复制系统Bucardo 5发布了。这个版本删除了老版本中两个数据库源的限制,允许有更多的源数据库(即主数据库)以及更多的目标数据库(即备份数据库)。Bucardo还可以 复制到其他类型的目标数据 ...

  下一代异步多个主数据库复制系统Bucardo 5发布了。这个版本删除了老版本中两个数据库源的限制,允许有更多的源数据库(即主数据库)以及更多的目标数据库(即备份数据库)。Bucardo还可以 复制到其他类型的目标数据库,其中包括MySQL、MariaDB、Oracle、SQLite、MongoDB和Redis。Bucardo已经被完全 重写了,这个版本比前一版本Bucardo 4功能更强大,效率更高。你可以访问Bucardo wiki查找最新版本的Bucardo。


  这篇文章快速的介绍了一下Bucardo。以后的博客文章将会介绍Bucardo的强大功能,现在我们将介绍如何简单地实现多主数据库复制。


  为了演示方便,我使用了亚马逊Web服务(AWS)提供的可快速创建、随意使用的服务器,即运行Amazon Linux的基本t1.micro服务器。如果你按照提示继续的话,它将免费而且简单地给你创建一个服务器实例。一旦实例创建成功,我们就可以使用ec2-user账户通过SSH协议登陆到服务器,这时就可以开始安装PostgreSQL和Bucardo了。


# Always a good idea:
$ sudo yum update
# This also installs other postgresql packages:
$ sudo yum install postgresql-plperl
# Create a new Postgres cluster:
$ initdb btest


  此时,我们仍然不能期待哦你个PostgreSQL,因为这个发布版的socket通信目录使用的是/var/run/postgresql和/tmp。我们调整了第一个目录的权限后就可以启动PostgreSQL了,然后创建第一个测试数据库:


$ sudo chmod 777 /var/run/postgresql
$ pg_ctl -D btest -l logfile start
$ createdb shake1

  

  接下来我们就可以进行数据库复制了!为了得到样例数据,我使用了开放源代码的Shakespeare项目。它有一个易于装载的小型的、可任意使用的、简单的数据库模式。github上的这个小型项目就包含了一个现成的PostgreSQL数据库模式,现在我们将可以把它装载到新的数据库了:
$ sudo yum install git
$ git clone -q https://github.com/catherinedevlin/opensourceshakespeare.git
$ psql shake1 -q -f opensourceshakespeare/shakespeare.sql
# You can safely ignore the 'role does not exist' errors


  我们打算创建这个数据库的副本,这些副本可被当作其他数据源。换个说法,这些服务器拥有相同的数据而且可以写入。实现这些非常简单:

$ createdb shake2 -T shake1
$ createdb shake3 -T shake1


  Bucardo 需要安装一些依赖包。如果你安装的操作系统发布不同,那么你可能要安装的依赖包就不同:下面是我写这篇文章的时候Amazon Linux需要安装的依赖包。(如果幸运的话,你的发布包可能已经包含了Bucardo,在这种情况下,下面的执行步骤就不需要执行了,你只要运 行"yum install bucard"就可以了-不过要确定一下你使用的是版本5或者更好的版本!(通过yum info bucardo查看))

$ sudo yum install  perl-ExtUtils-MakeMaker  perl-DBD-Pg \
> perl-Encode-Locale  perl-Sys-Syslog perl-boolean \
> perl-Time-HiRes  perl-Test-Simple  perl-Pod-Parser
$ sudo yum install cpan
$ echo y | cpan DBIx::Safe


  在这个系统的yum软件仓库里不包含Perl模块DBIx::Safe,因此我们需要通过CPAN来安装这个模块。一旦上面的所有依赖都安装成功,这时我们就准备安装Bucardo。我们将获取官方压缩包,验证、解压,接着安装:

1$ wget -nv http://bucardo.org/Bucardo.tar.gz
2$ wget -nv http://bucardo.org/Bucardo.tar.gz.asc
3$ gpg -q --keyserver pgp.mit.edu --recv-key 14964AC8
4$ gpg --verify Bucardo.tar.gz.asc
5tar xfz Bucardo.tar.gz $ ln -s Bucardo-5.0.0 bucardo
6cd bucardo
7$ perl Makefile.PL
8make
9sudo make install



  我们对bucardorc文件(设置某些全局信息的文件)进行某些小的调整。然后运行"bucardo install",这条命令将创建bucardo的主数据库,其中包含Bucardo服务进程所需的信息:

1mkdir pid
2echo -e "piddir=pid\nlogdest=." > .bucardorc
3$ bucardo install --batch --quiet
4Creating superuser 'bucardo'

现在已经安装好Bucardo,接下来就准备复制了。此时,我们有了三个可以彼此复制的数据库。下面我们只使用了两条命令就可以实现三数据库彼此复制:

01 bucardo add dbs s1,s2,s3 dbname=shake1,shake2,shake3
02Added databases "s1","s2","s3"
03$ bucardo add sync bard dbs=s1:source,s2:source,s3:source tables=all
04Added sync "bard"
05Created a new relgroup named "bard"
06Created a new dbgroup named "bard"
07  Added table "public.chapter"
08  Added table "public.character"
09  Added table "public.character_work"
10  Added table "public.paragraph"
11  Added table "public.wordform"
12  Added table "public.work"

第一条命令,我们告诉Bucardo如何连接到三个数据库,我们告诉Bucardo数据库的名字,然后Bucardo把这三个数据库看作(s1,s2,s3)。你还可以指定端口和主机,不过在这个例子里,默认的端口为5432,而且不需要主机(采用的是Unix Socket通信机制)。



酷毙

雷人

鲜花

鸡蛋

漂亮
  • 快毕业了,没工作经验,
    找份工作好难啊?
    赶紧去人才芯片公司磨练吧!!

最新评论

关于LUPA|人才芯片工程|人才招聘|LUPA认证|LUPA教育|LUPA开源社区 ( 浙B2-20090187 浙公网安备 33010602006705号   

返回顶部