数据库同步——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等,文件内容包括以下属性。
engine.name=节点专属名称,例如corp-000
group.id=节点组id,与节点id相匹配,例如corp
external.id=节点id,例如000
sync.url=同步url,格式如:http://{hostname}:{port}/{webcontext}/sync/{engine.name}
registration.url=注册url,配置主节点时,该项设置为空
db.driver=数据库驱动
db.url=数据库url
db.user=数据库用户名
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 及其他表数据是如何设置的,可根据实际需要实现自己的同步需求。
- 数据库同步——SymmetricDS快速入门指南
- 数据库同步——SymmetricDS快速入门指南(续)
- SymmetricDS文档翻译--【Chapter 0.SymmetricDS快速入门指南( Quick Start Guide)】
- SymmetricDS 数据库双向同步开源软件入门
- 嵌入式使用Symmetricds进行数据库同步
- 基于SymmetricDS的多主一从数据库同步方案
- 基于SymmetricDS的多主一从数据库同步方案
- 数据库 文件同步工具 java 开源 http://www.symmetricds.org
- SymmetricDS数据同步配置
- RMAN快速入门指南
- RMAN快速入门指南
- Quartz快速入门指南
- MINA 快速入门指南
- android快速入门指南
- Spark快速入门指南
- MailCore 快速入门指南
- DragonBones快速入门指南
- DragonBones快速入门指南
- UIPageControl向右对齐
- leetcode_Largest Number
- PHP 5.2 5.3 5.4 5.5 memcache dll扩展
- 9patch图片制作
- c3p0、dbcp和proxool比较
- 数据库同步——SymmetricDS快速入门指南
- java书籍推荐
- 深度学习之赞美篇
- appfuse生成项目指令
- 解决文件过滤驱动安装失败,提示依赖的 fltmgr.sys 不存在的问题
- 教你怎样给apk签名,这样你修改的任何APK就能正常安装了
- java中replaceAll不区分大小写替换
- 软件版本号命名规则
- VC 显示红绿灯