数据库同步——SymmetricDS快速入门指南

来源:互联网 发布:沙发管家tcl优化版 编辑:程序博客网 时间:2024/05/20 10:53

        本文主要内容是对SymmetricDS-3.7.16版本的快速入门指南的翻译,并做了部分修改,用于快速了解SymmetricDS并利用其实现两数据库的同步。

        SymmetricDS,利用数据库的触发器捕捉数据库变化来实现数据库同步,可以有两个节点或多个节点,可实现同服务器不同数据库同步或不同服务器数据库同步。基本模型如图所示。图中有一个主节点001和两个节点001、002,当主节点和各个节点连通后,由各个节点实现数据的推、拉,主节点不对数据进行操作,只负责管理。


1、系统环境

  • 下载并安装java SE 6及以上版本
  • 下载SymmetricDS
  • Windows, Linux, Solaris, HP-UX, AIX, Mac OS X, 或 Android 操作系统

2、配置

  • 连接源数据库

       将下载的SymmetricDS解压至指定目录,例如D:/corp/目录下。

在SymmetricDS 中engines目录下创建xxx.properties的文件,xxx为主节点名称,例如homeoffice, central, server等,文件内容包括以下属性。

  1. engine.name=节点专属名称,例如corp-000

  2. group.id=节点组id,与节点id相匹配,例如corp

  3. external.id=节点id,例如000

  4. sync.url=同步url,格式如:http://{hostname}:{port}/{webcontext}/sync/{engine.name}

  5. registration.url=注册url,配置主节点时,该项设置为空

  6. db.driver=数据库驱动

  7. db.url=数据库url

  8. db.user=数据库用户名

  9. db.password=数据库密码

  • 连接目标数据库

       将SymmetricDS解压至指定目录,例如D:/store/目录下。

       配置如上,需要注意的是属性中

registration.url=必须与连接源数据库配置文件中sync.url属性值一致

3、创建数据库

       步骤2中主要说明主节点和子节点属性文件的格式,也可以直接采用samples目录下的文件corp-000.properties、store-001.properties和store-002.properties,第一个为主节点,后两个为节点,修改其中部分属性即可。

       根据主节点和子节点属性文件创建数据库和数据库用户,并为用户分配权限,这里最好拥有数据库所有权限。

       在主节点服务器上,打开系统命令窗口,定位至SymmetricDS bin目录下,这里即D:/corp/symmetric-server-3.7.16/bin/,依次执行以下命令

  • 创建数据库表
dbimport --engine corp-000 --format XML --alter-case create_sample.xml
  • 创建系统表
symadmin --engine corp-000 create-sym-tables
  • 插入原始数据
dbimport --engine corp-000 insert_sample.sql
       其中,create_sample.xml和insert_sample.sql文件在samples目录下。

       在子节点服务器上,打开系统命令窗口,定位至SymmetricDS bin目录下,这里即D:/store/symmetric-server-3.7.16/bin/,执行以下命令

dbimport --engine store-001 --format XML --alter-case create_sample.xml

4、启动SymmetricDS

       在主节点服务器上,以8080端口监听数据库,命令窗口执行命令

sym --engine corp-000 --port 8080

       在子节点服务器上,以9090端口监听数据库,命令窗口执行命令

sym --engine store-001 --port 9090
       启动成功后,命令行提示Started SymmetricDS。

5、注册并重新加载节点

       在主节点服务器上,命令窗口依次执行命令

symadmin --engine corp-000 open-registration store 001
symadmin --engine corp-000 reload-node 001

       现在,配置并启动SymmetricDS的操作完成了,可通过以下几方面查看数据库是否正确:

  • 查看条目表(包括item、item_selling_price)是否从corp节点同步到store节点数据库
  • 查看销售表(包括sale_transaction 、 sale_return_line_item)是否从store节点同步到corp节点数据库
  • 查看系统表(以sym为前缀)
  • 验证条目表是否有相同数据

6、Pulling Data

       修改corp节点数据库条目表数据(增加一个条目),观察数据是否被拖到store节点数据库。

  • 新建数据

打开corp节点数据库会话窗口,添加一条数据。

insert into item (item_id, name) values (110000055, 'Soft Drink');insert into item_selling_price (item_id, store_id, price)        values (110000055, '001', 0.65);insert into item_selling_price (item_id, store_id, price)        values (110000055, '002', 1.00);
        观察log日志,查看数据转换。设置每分钟拖一次数据。

  • 验证输出批次

       打开corp节点数据库会话窗口,执行查询语句,查看status是否为OK。

select * from sym_outgoing_batch order by batch_id desc

  • 验证输入批次

       打开corp节点数据库会话窗口,执行查询语句,查看status是否为OK。

select * from sym_incoming_batch order by batch_id desc

  • 验证数据

       验证store节点数据库变化

select * from item_selling_price

7、Pushing Data

       模拟一条销售记录,观察数据是否被推送至中央节点数据库。

  • 新建数据

打开store节点数据库会话窗口,添加一条数据。

insert into sale_transaction (tran_id, store_id, workstation, day, seq)        values (1000, '001', '3', '2014-03-21', 100);insert into sale_return_line_item (tran_id, item_id, price, quantity)        values (1000, 110000055, 0.65, 1);
        观察log日志,查看数据转换。设置每分钟推一次数据。
  • 验证输出批次

       打开store节点数据库会话窗口,执行查询语句,查看status是否为OK。

select * from sym_outgoing_batch order by batch_id desc
  • 验证输入批次

       打开store节点数据库会话窗口,执行查询语句,查看status是否为OK。

select * from sym_incoming_batch order by batch_id desc
  • 验证数据

       验证corp节点数据库变化

select * from sale_transaction;
select * from sale_return_line_item;
       这里只配置了一个子节点数据库,根据需求可修改相关属性配置多个。
       另外仔细观察基本的triggers, routers, group links 及其他表数据是如何设置的,可根据实际需要实现自己的同步需求。

0 0