本安装记录基于SymmetricDS Quick Start Guide中的样例,安装在两个机器上。
安装环境
Machine1:hadoop3.highgo.com
Machine2:hadoop4.highgo.com
安装SymmetricDS
1. 下载SymmetricDS服务器程序,当前是Symmetric-3.6.14,下载Symmetric-3.6.14-server.zip文件。解压到两台机器的/opt/目录下,更改SymmetricDS根目录拥有者为highgo。
2. Hadoop4.highgo.com作为root端,负责corp数据库,hadoop3.highgo.com作为store端,负责store001数据库。在hadoop4端,将SymmetricDS安装副本根目录下的samples目录下的corp-000.properties文件复制到engines目录下,在hadoop3端,将SymmetricDS安装副本根目录下的samples目录下的store-001.properties文件复制到engines目录下。修改两个配置文件的数据库信息,我的配置如下:
db.driver=org.postgresql.Driver db.url=jdbc:postgresql://hadoop3/4.highgo.com/store001 db.user=highgo db.password=highgo
3. Store端的配置文件需要配置registration.url
registration.url=http://hadoop4.highgo.com:8080/sync/corp-000
SymmetricDS层面上的主从关系,也就是这么来的,真正运行起来,SymmetricDS就跟它的名字一样Symmetric,各个节点是对等的。
安装数据库、创建业务表、导入初始数据、创建系统表
1. 分别在两台机器上安装了一个PostgreSQL数据库实例,分别创建数据库用户highgo,密码为highgo。在hadoop3.highgo.com 上创建store001数据库,owner为highgo,在hadoop4.highgo.com上创建corp数据库,owner为highgo。
2. 在hadoop4端的SymmetricDS安装副本的samples目录下执行下面的命令:
../bin/dbimport --engine corp-000 --format XMLcreate_sample.xml
这是文档上的做法,不过执行上边的命令后,报错,找不到create_sample.xml这个文件。于是打开这个文件发现就是几张表的定义,是以xml这种通用的格式定义的。一共四张表item,item_selling_price,sale_transaction,sale_return_line_item。索性根据xml文件中的描述,直接写SQL语句,写成的SQL语句如下:
createtable item( item_id INTEGER PRIMARY KEY, name VARCHAR(100) ) createtable item_selling_price( item_id INTEGER REFERENCES item(item_id), store_idVARCHAR(5), priceDECIMAL(10,2), costDECIMAL(10,2), PRIMARYKEY(item_id,store_id) ) createtable sale_transaction( tran_id INTEGER PRIMARY KEY, store_id VARCHAR(5) NOT NULL, workstation VARCHAR(3) NOT NULL, day VARCHAR(10) NOT NULL, seq INTEGER NOT NULL ) createtable sale_return_line_item( tran_id INTEGER PRIMARY KEY REFERENCES sale_transaction(tran_id), item_id INTEGER NOT NULL REFERENCES item(item_id), price DECIMAL(10,2) NOT NULL, quantity INTEGER NOT NULL, returned_quantity INTEGER )
这四个表是我们这个分销业务的例子的业务表。
3. 还是在hadoop4端,执行下面的命令:
../bin/symadmin --engine corp-000create-sym-tables
这个命令是创建SymmetricDS的系统表,这个执行成功,没有报错什么的。
4. 还是在hadoop4端,执行下面的命令:
../bin/dbimport --engine corp-000insert_sample.sql
Insert_sample.sql文件主要分两部分,一个是往业务表里插入样例数据,另一部分是往SymmetricDS的系统表里插入本样例的系统数据。首先创建了两个节点,然后创建了两个channel,又创建了6个trigger,接着创建了3个Router,最后创建了6个Trigger-Router Links,这里所谓的创建,其实就是往系统表里插入创建的信息而已。
顺便说下,这条命令执行的时候,也是报错,找不到insert_sample.sql文件,我是打开这个文件,一部分一部分,在PostgreSQL的命令行执行的。估计执行整个文件也可以。
5. 在hadoop3端,进入到store001的SymmetricDS安装副本的根目录下的samples目录,执行下面的命令:
../bin/dbimport --engine store-001 --format XMLcreate_sample.xml
这条命令跟第二条在hadoop4端执行的目的是一样的,都是创建本样例的业务表。当然了,执行也是报错的,找不到文件,将上边的SQL语句,在这在执行一遍就可以了。
启动SymmetricDS
1. 在hadoop4端,也就是root端,corp端,在SymmetricDS安装副本的根目录下的samples目录下执行下面的命令:
../bin/sym --engine corp-000 --port 8080
这个过程会根据之前的配置文件和在SymmetricDS系统表中插入的数据,创建必要的Trigger等等的组件。然后等待其他节点的注册。
2. 在hadoop3端,也就是client端,store端在SymmetricDS安装副本的根目录下的samples目录下执行下面的命令:
../bin/sym --engine store-001 --port 8080
这条命令,启动hadoop3上的SymmetricDS程序。并根据配置信息尝试连接root节点。当然,由于这时候,root端的注册还没开启,这时候,在root端可以收到hadoop3上的SymmetricDS的注册请求,但是认证会失败。
注册节点
在hadoop4上的SymmetricDS安装副本