本安裝記錄基于SymmetricDS Quick Start Guide中的樣例,安裝在兩個機(jī)器上。
Machine1:hadoop3.highgo.com
Machine2:hadoop4.highgo.com
1. 下載SymmetricDS服務(wù)器程序,當(dāng)前是Symmetric⑶.6.14,下載Symmetric⑶.6.14-server.zip文件。解壓到兩臺機(jī)器的/opt/目錄下,更改SymmetricDS根目錄具有者為highgo。
2. Hadoop4.highgo.com作為root端,負(fù)責(zé)corp數(shù)據(jù)庫,hadoop3.highgo.com作為store端,負(fù)責(zé)store001數(shù)據(jù)庫。在hadoop4端,將SymmetricDS安裝副本根目錄下的samples目錄下的corp-000.properties文件復(fù)制到engines目錄下,在hadoop3端,將SymmetricDS安裝副本根目錄下的samples目錄下的store-001.properties文件復(fù)制到engines目錄下。修改兩個配置文件的數(shù)據(jù)庫信息,我的配置以下:
3. Store真?zhèn)€配置文件需要配置registration.url
SymmetricDS層面上的主從關(guān)系,也就是這么來的,真正運(yùn)行起來,SymmetricDS就跟它的名字1樣Symmetric,各個節(jié)點(diǎn)是對等的。
1. 分別在兩臺機(jī)器上安裝了1個PostgreSQL數(shù)據(jù)庫實(shí)例,分別創(chuàng)建數(shù)據(jù)庫用戶highgo,密碼為highgo。在hadoop3.highgo.com 上創(chuàng)建store001數(shù)據(jù)庫,owner為highgo,在hadoop4.highgo.com上創(chuàng)建corp數(shù)據(jù)庫,owner為highgo。
2. 在hadoop4真?zhèn)€SymmetricDS安裝副本的samples目錄下履行下面的命令:
這是文檔上的做法,不過履行上邊的命令后,報錯,找不到create_sample.xml這個文件。因而打開這個文件發(fā)現(xiàn)就是幾張表的定義,是以xml這類通用的格式定義的。1共4張表item,item_selling_price,sale_transaction,sale_return_line_item。索性根據(jù)xml文件中的描寫,直接寫SQL語句,寫成的SQL語句以下:
這4個表是我們這個分銷業(yè)務(wù)的例子的業(yè)務(wù)表。
3. 還是在hadoop4端,履行下面的命令:
這個命令是創(chuàng)建SymmetricDS的系統(tǒng)表,這個履行成功,沒有報錯甚么的。
4. 還是在hadoop4端,履行下面的命令:
Insert_sample.sql文件主要分兩部份,1個是往業(yè)務(wù)表里插入樣例數(shù)據(jù),另外一部份是往SymmetricDS的系統(tǒng)表里插入本樣例的系統(tǒng)數(shù)據(jù)。首先創(chuàng)建了兩個節(jié)點(diǎn),然后創(chuàng)建了兩個channel,又創(chuàng)建了6個trigger,接著創(chuàng)建了3個Router,最后創(chuàng)建了6個Trigger-Router Links,這里所謂的創(chuàng)建,其實(shí)就是往系統(tǒng)表里插入創(chuàng)建的信息而已。
順便說下,這條命令履行的時候,也是報錯,找不到insert_sample.sql文件,我是打開這個文件,1部份1部份,在PostgreSQL的命令行履行的。估計履行全部文件也能夠。
5. 在hadoop3端,進(jìn)入到store001的SymmetricDS安裝副本的根目錄下的samples目錄,履行下面的命令:
這條命令跟第2條在hadoop4端履行的目的是1樣的,都是創(chuàng)建本樣例的業(yè)務(wù)表。固然了,履行也是報錯的,找不到文件,將上邊的SQL語句,在這在履行1遍就能夠了。
1. 在hadoop4端,也就是root端,corp端,在SymmetricDS安裝副本的根目錄下的samples目錄下履行下面的命令:
這個進(jìn)程會根據(jù)之前的配置文件和在SymmetricDS系統(tǒng)表中插入的數(shù)據(jù),創(chuàng)建必要的Trigger等等的組件。然后等待其他節(jié)點(diǎn)的注冊。
2. 在hadoop3端,也就是client端,store端在SymmetricDS安裝副本的根目錄下的samples目錄下履行下面的命令:
這條命令,啟動hadoop3上的SymmetricDS程序。并根據(jù)配置信息嘗試連接root節(jié)點(diǎn)。固然,由于這時候候,root真?zhèn)€注冊還沒開啟,這時候候,在root端可以收到hadoop3上的SymmetricDS的注冊要求,但是認(rèn)證會失敗。
在hadoop4上的SymmetricDS安裝副本的根目錄下的samples目錄下履行下面的命令:
為store 001 開啟注冊,這時候候就可以看到注冊成功的信息了。為了方便,可以先把兩臺機(jī)器的防火墻先關(guān)閉。
開始我們在hadoop4真?zhèn)€數(shù)據(jù)庫的業(yè)務(wù)表上插入了幾條數(shù)據(jù),但是hadoop3上的數(shù)據(jù)庫的業(yè)務(wù)表都是空的。既然要同步,那我們必須先把這1部份的數(shù)據(jù)同步,這1部份數(shù)據(jù)的同步就叫做同步初始負(fù)載。要發(fā)起這個初始負(fù)載同步,要履行下面的命令,還是在hadoop3的SymmetricDS安裝副本的samples目錄下履行:
從上邊的insert_sample.sql文件中往SymmetricDS系統(tǒng)表中插入的數(shù)據(jù)可以知道,item表和item_selling_price表的同步配置是從corp端(hadoop4)到store端(hadoop3),單向的,也就是說,我們從corp端插入1條數(shù)據(jù),數(shù)據(jù)會被推送到store端,而我們從store端增加1條數(shù)據(jù),則不會影響到corp真?zhèn)€數(shù)據(jù)。
下面我們在corp真?zhèn)€數(shù)據(jù)庫中插入兩條數(shù)據(jù):
在hadoop4端履行完這兩條插入語句后,在hadoop3真?zhèn)€數(shù)據(jù)查看1下,數(shù)據(jù)應(yīng)當(dāng)已同步了。
從上邊的insert_sample.sql文件中往SymmetricDS系統(tǒng)表中插入的數(shù)據(jù)可以知道,sale_transaction表和sale_return_line_item表的同步配置是從store端(hadoop3)同步到corp端(hadoop4),單向的,也就是說,我們從store端(hadoop3)增加1條數(shù)據(jù),數(shù)據(jù)會被推送到corp端(hadoop4),而從corp端(hadoop4)增加1條數(shù)據(jù),則不會影響到store端(hadoop3)的數(shù)據(jù)。
下面我們在store真?zhèn)€數(shù)據(jù)庫中插入兩條數(shù)據(jù):
在hadoop3端履行完這兩條插入語句后,在hadoop4真?zhèn)€數(shù)據(jù)庫查看1下,數(shù)據(jù)應(yīng)當(dāng)已同步了。