官网地址
一、Bucardo介绍Bucardo 是基于表复制的系统
Bucardo 可以实现PostgreSQL数据库的双master/多master的方案
Bucardo的核心是一个Perl守护进程,它侦听通知请求并对其进行操作,方法是连接到远程数据库并来回复制数据。
守护进程需要的所有特定信息都存储在主bucardo数据库中,包括复制所涉及的所有数据库的列表以及如何到达这些数据库、要复制的所有表以及如何复制每个表。
运行Bucardo的第一步是向主Bucardo数据库添加两个或更多数据库。
完成此操作后,将添加关于要复制哪些表的信息以及表的任何分组。然后添加同步。
同步被称为复制操作,将一组特定的表从一台服务器复制到另一台服务器或一组服务器。
一旦设置好Bucardo,触发器就开始存储有关所有相关的表中哪些行被更改的信息。对于多主机。
过程是这样的: 1、对表进行更改并记录在bucardo_delta表中。 2、向主Bucardo守护进程发送通知,让它知道表已经更改。 3、守护进程通知控制器进行同步,然后返回侦听。 4、控制器创建一个“kid”来处理复制,或者通知已经存在的复制。 5、孩子开始一个新的事务,禁用相关表上的触发器和规则。 6、然后,它收集自上次复制以来哪些行发生了更改的列表,然后比较这两个行以确定应该做什么。 7、如果存在冲突,则会运行标准冲突处理程序,或者为每个表设置的自定义处理程序来对内容进行排序。 8、触发器和规则被重新启用,事务被提交。 9、如果事务失败,则运行任何自定义异常处理程序。 10、子程序向控制器发出它已经完成的信号。 二、Bucardo 的安装 2.1、安装依赖包Bucardo 软件依赖包有如下:
build, test, and install Perl 5 (at least 5.8.3) build, test, and install Postgres (at least 8.2) build, test, and install the DBI module (at least 1.51) build, test, and install the DBD::Pg module (at least 2.0.0) build, test, and install the DBIx::Safe module (at least 1.2.4) 1、安装 Perl本次系统linux版本是6.5 Perl是linux系统自带;默认版本是v5.10.1;可行
[root@node3 Bucardo]# perl -v This is perl, v5.10.1 (*) built for x86_64-linux-thread-multi 2、安装 PostgreSQL软件在编译的过程需要带上 --with-perl;
3、安装 DBI module安装DBI 依赖 Test-Simple;
# 安装 Test-Simple Test-Simple下载地址 https://metacpan.org 搜索 Test-Simple # 解压Test-Simple源码包 tar -zxvf Test-Simple-1.302183.tar.gz # 进入Test-Simple目录进行安装 cd Test-Simple-1.302183 perl Makefile.PL make make install # 接下来安装DBI # 下载地址: tar -zxvf DBI-1.630.tar.gz cd DBI-1.630 perl Makefile.PL make make install 4、 安装DBD::Pg module安装最新的DBD::Pg;需要依赖 Time::HiRes
# 安装 Time::HiRes 下载地址: https://metacpan.org 搜索 Time::HiRes tar -zxvf Time-HiRes-1.9764.tar.gz cd Time-HiRes-1.9764 perl Makefile.PL make make install # 接下来安装DBD::Pg # 安装DBD::Pg;需要确定已经安装 PostgreSQL 环境;即pg_config输出 # 加载 PostgreSQL 环境变量 tar -zxvf DBD-Pg-3.14.2.tar.gz cd DBD-Pg-3.14.2 perl Makefile.PL make make install 5、安装DBIx::Safe # 下载地址:https://bucardo.org/DBIx-Safe/ tar -zxvf DBIx-Safe-1.2.5.tar.gz cd DBIx-Safe-1.2.5 perl Makefile.PL make make install 2.2、安装 Bucardo # 在网站https://bucardo.org/Bucardo/下载 tar -zxvf Bucardo-5.6.0.tar.gz cd Bucardo-5.6.0 perl Makefile.PL make make install # 查看Bucardo版本 [postgres@node3 ~]$ bucardo --version bucardo version 5.6.0 三、创建元数据库bucardo元数据库存储bucardo复制的配置信息,使用 bucardo install 命令创建;
3.1、创建.bucardorc文件在系统用户home目录下创建;内容如下:
log_conflict_file = /home/postgres/bucardo/log/bucardo_conflict.log piddir = /home/postgres/bucardo/run reason_file = /home/postgres/bucardo/log/bucardo.restart.reason.log warning_file = /home/postgres/bucardo/log/bucardo.warning.log syslog_facility = LOG_LOCAL1 3.2、创建所需目录 mkdir -p /home/postgres/bucardo/log mkdir -p /home/postgres/bucardo/run 3.3、执行 bucardo install 命令准备工作完成;开始执行 bucardo install 命令创建 元数据库;
# /usr/local/share/bucardo/bucardo.schema [postgres@node3 ~]$ bucardo install This will install the bucardo database into an existing Postgres cluster. Postgres must have been compiled with Perl support, and you must connect as a superuser Current connection settings: 1. Host: <none> 2. Port: 6000 3. User: bucardo 4. Database: bucardo 5. PID directory: /home/postgres/bucardo/run Enter a number to change it, P to proceed, or Q to quit: 1 -- 推荐使用unix套接字方式连接数据;可以使用dbuser:postgres;dbname:postgres去连接。 Change the host to: /tmp Changed host to: /tmp Current connection settings: 1. Host: /tmp 2. Port: 6000 3. User: postgres 4. Database: postgres 5. PID directory: /home/postgres/bucardo/run Enter a number to change it, P to proceed, or Q to quit: P Attempting to create and populate the bucardo database and schema Database creation is complete Updated configuration setting "piddir" Installation is now complete. If you see errors or need help, please email bucardo-general@bucardo.org You may want to check over the configuration variables next, by running: bucardo show all Change any setting by using: bucardo set foo=bar 四、Bucardo配置同步本次简单演示下;在同个数据库服务器下不同的实例;
用数据库master、slave来演示
[postgres@node3 ~]$ createdb master [postgres@node3 ~]$ createdb slave 4.1、Add databases