日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

國內最全IT社區(qū)平臺 聯(lián)系我們 | 收藏本站
阿里云優(yōu)惠2
您當前位置:首頁 > 數據庫 > 數據庫應用 > (SymmetricDS快速入門指南)Chapter 1. Quick Start Guide

(SymmetricDS快速入門指南)Chapter 1. Quick Start Guide

來源:程序員人生   發(fā)布時間:2014-12-20 08:22:44 閱讀次數:7169次

本文檔是SymmetricDS3.6.14文檔的第1章節(jié)Quick Start Guide文檔的翻譯,的目的是幫助讀者快速搭建1個SymmetricDS集群并普及1些基本概念術語。

 

本文檔描寫了如何在兩個SymmetricDS節(jié)點之間同步兩個相同schema的數據庫。下面的例子構建了1個分銷業(yè)務模型,有1個中央數據庫(我們叫它root或corp節(jié)點)和多個零售商店的數據庫(我們叫它client或store節(jié)點)。對本教程,我們將只有1個store(商店)節(jié)點,以下圖。如果你愿意,可以再教程的結束后,自己擴大這個例子,配置第2個商店。

在這個例子中,我們將安裝兩個獨立的SymmetricDS代表兩個不同的服務器。1個代表store服務器,1個代表corp服務器。每個SymmetricDS安裝副本將負責1個數據庫,也就是1個SymmetricDS就是1個SymmetricDS術語中的節(jié)點。1個SymmetricDS安裝副本負責1個數據庫,代表1個節(jié)點,這類配置是最經常使用的(我們可以選擇配置1個安裝副本負責兩個節(jié)點,這叫做multi-homing,將會在教程的最后討論)。你極可能在1個機器上運行兩個SymmetricDS副本,我們將運行兩個SymmetricDS安裝副本在兩個不同的端口。我們將使用8080運行corp服務器,9090運行store服務器,以下圖。

Corp SymmetricDS安裝副本將負責捕獲store真?zhèn)€item(item表和item_selling_price表)的數據變化,像itemnumber,描寫和商店的價格。Store真?zhèn)€SymmetricDS捕獲銷售交易(sale_transaction表和sale_return_line_item表)數據的變化,比如銷售的時間和商品。價格信息只發(fā)送給與價格相干的特定的商店,從而減少發(fā)送到每一個商店的定價信息數據的數量。舉個例子,換句話說,商店001的商品的定價信息只會發(fā)送給商店001的數據庫,不會發(fā)送給商店002的數據庫

這個簡單的配置總是使客戶端發(fā)起與root節(jié)點的通訊,這是1種相當常見的配置。在這個配置中,client將定期的從數據庫服務器中拉數據附加到root節(jié)點上,client也會將捕獲到的變化推送到root節(jié)點。

概述已足夠多了,下面我們開始,我們將依照下面的步驟行動:

1.      安裝和配置兩個SymmetricDS利用程序

2.      創(chuàng)建SymmetricDS配置文件和用來存儲corp數據和store數據的數據庫表。

3.      在corp數據庫中創(chuàng)建零售數據

4.      啟動SymmetricDS服務器,然后注冊store節(jié)點到corp節(jié)點

5.      發(fā)送數據的初始負載到store節(jié)點

6.      履行1個數據推送和數據拉取操作

7.      驗證發(fā)送和接收到的batch的信息

Installing SymmetricDS

首先,我們將安裝兩個SymmetricDS的副本,然后分別配置其與數據庫的連接信息:

1.      下載SymmetricDS安裝文件

2.      創(chuàng)建兩個文件夾代表兩個機器。1個寄存Corp節(jié)點的安裝副本,另外一個寄存store節(jié)點的安裝副本。例如,你可以將這兩個文件夾命名為sym-corp和sym-store001,下面將假定你是這樣命名的。解壓上面下載的文件到兩個文件夾中。

3.      屬性文件用來寄存啟動SymmetricDS需要的最小的配置信息。復制corp樣例屬性文件到corp engine文件夾,然后復制store屬性文件到store的engine文件夾。如果你使用的是上面建議的文件夾命名,你將做下面的復制動:

samples/corp-000.properties to sym-corp/symmetric-ds⑶.x.x/engines/

samples/store-001.properties to sym-store001/symmetric-ds⑶.x.x/engines/

4.      閱讀兩個屬性文件,查看不同的配置。例如,root節(jié)點給定1個值為corp的組ID,store節(jié)點給定1個值為store的組ID;root節(jié)點給定了1個值為000的外部ID,store節(jié)點給定了1個值為001的外部節(jié)點。

下面是兩個節(jié)點中engine目錄下的兩個配置文件都有的配置屬性,指定了如何連接特定的數據庫服務器(下面的值只是例子):

# The class name for the JDBC Driver db.driver=com.mysql.jdbc.Driver # The JDBC URL used toconnect to the database db.url=jdbc:mysql://localhost/sample # The user to login as whocan create and update tables db.user=symmetric # The password for the userto login as db.password=secret

5.      下1步,在store-001.properties文件中設置下面的屬性,指定root節(jié)點所在的位置:

# The HTTP URL of the root node to contact for registration registration.url=http://localhost:8080/sync/corp-000

6.      Tip,1個engine的URL是下面這類通用的格式:

http://{hostname}:{port}/sync/{engine.name}

URL中的engine.name部份來自節(jié)點的配置文件。

1.2. Creating and Populating Your Databases

Important

你必須先為你的root節(jié)點和client節(jié)點創(chuàng)建數據庫。創(chuàng)建的數據庫的名字和上邊配置文件中配置必須1致。

 

首先,通過下面的步驟,在root節(jié)點的數據庫中創(chuàng)建例子的數據庫表,加載樣例數據,加載樣例配置:

1.      打開1個命令行提示符,然落后入到corp安裝副本的samples文件夾下

2.      在root節(jié)點中通過履行下面的命令為item,price和sale創(chuàng)建樣例表:

../bin/dbimport --engine corp-000 --format XMLcreate_sample.xml

來自命令行的正告信息是安全的可以疏忽。

另外一個關于屬性文件的扼要描寫。在啟動階段,SymmetricDS尋覓engines文件夾中的1個或多個屬性文件。由于我們已在命令行中指定了1個―engine參數,所以SymmetricDS將會尋覓特定命名的文件,corp-000.properties。在這個例子中,由于在engines文件夾中只有1個屬性文件,所以SymmetricDS將會默許加載這個屬性文件中的配置。因此,在這個例子中,不指定―engine參數也是可以的。加上這個參數,運行這個例子是,可以減少由于啟動錯了安裝副本而致使的毛病。SymmetricDS將會抱怨丟失了你指定的屬性配置文件。

3.      下1步,在corp節(jié)點的數據庫中創(chuàng)建SymmetricDS特定的數據庫表。這些表將包括同步操作的配置信息。下面的命令使用自動創(chuàng)建的特性創(chuàng)建所有必要的SymmetricDS系統(tǒng)表:

../bin/symadmin --engine corp-000create-sym-tables

4.      最后1步,履行下面的操作,加載樣例商品與交易數據和SymmetricDS配置信息到root節(jié)點的數據庫

../bin/dbimport --engine corp-000insert_sample.sql

Important

上面的操作,針對MySQL,需要履行insert_sample_mysql.sql文件。針對大小寫敏感的表和列的命名,MySQL用反引號代替雙引號。

我們現(xiàn)在已穿件了corp數據庫表,然后填充了我們的SymmetricDS配置信息和樣例數據。下1步,我們將在store節(jié)點的數據庫中創(chuàng)建樣例數據庫表,準備接收數據。

5.      打開1個命令提示符,進入store節(jié)點的SymmetricDS安裝副本的samples文件夾。

6.      履行下面的命令,造store節(jié)點的數據庫中創(chuàng)建空的樣例表:

../bin/dbimport --engine store-001 --format XMLcreate_sample.xml

來自命令行的正告信息是安全的可以疏忽。你可以查看create_sample.xml文件來看看它都有甚么。

登陸數據庫,核實兩個數據庫中的表:

1.      找到需要從corp節(jié)點到store節(jié)點同步的item表:item和item_selling_price。

2.      找到需要從store節(jié)點到corp節(jié)點的sale表:sale_transaction和sale_return_line_item。

3.      找到SymmetricDS的系統(tǒng)表,這些表都以sym_作為前綴,像sym_channel,sym_trigger,sym_router和sym_trigger_router.

4.      驗證corp節(jié)點的item表是不是有樣例數據

1.3. Starting SymmetricDS

本教程中的數據庫建立和配置現(xiàn)在已完成了。是時候開始使用SymmetricDS了。現(xiàn)在我們啟動兩個SymmetricDS節(jié)點,然后視察它們的日志輸出。

1.      打開兩個命令行提示符,分別進入到兩個安裝副本的根目錄下的samples目錄下。

2.      在corp的samples目錄下,履行下面的命令啟動corp SymmetricDS:

../bin/sym --engine corp-000 --port 8080

在首次啟動時,corp節(jié)點將會創(chuàng)建樣例配置文件中所有的trigger。然后在8080端口為corp-000 engine監(jiān)聽同步和注冊要求。

3.      在store001節(jié)點的samples目錄,履行下面的命令,啟動SymmetricDS:

../bin/sym --engine store-001 --port 9090

這個命令第1次啟動store節(jié)點的服務器時,將會使用自動創(chuàng)建特性創(chuàng)建SymmetricDS的系統(tǒng)表。然后不斷的嘗試注冊到corp節(jié)點(通過前面配置的registration URL,可以知道corp節(jié)點的地址)。由于注冊還沒有打開,store節(jié)點將會收到認證失敗(403 HTTP響應)。我們在下面的注冊部份討論。

1.4. Registering a Node

當1個未注冊的節(jié)點啟動時,它將嘗試注冊到registration URL指定的節(jié)點(在幾近所有的情況下,就是root節(jié)點)。通過允許注冊和為已注冊的節(jié)點返回配置信息,Registration 節(jié)點集中的管理網絡上的其他節(jié)點。在本教程中,Registration節(jié)點就是root節(jié)點,corp節(jié)點,這個節(jié)點同時參與與其他節(jié)點的同步操作。

因此,下1步,我們需要為store節(jié)點打開注冊,以使store節(jié)點可以接收到初始負載的數據,然后就能夠接收來自corp的數據,也能夠向corp節(jié)點發(fā)送數據。有幾種方式可以完成這個任務。我們將使用SymmetricDS的管理功能,在corp節(jié)點上履行1個命令(由于這個節(jié)點負責注冊管理)。

1.      前面已啟動了corp節(jié)點和store節(jié)點的SymmetricDS利用程序,下面打開1個新的命令行提示符,進入到corp節(jié)點的安裝副本的根目錄下的samples目錄。

通過履行下面的命令打開store節(jié)點的注冊功能:

../bin/symadmin--engine corp-000 open-registration store 001

現(xiàn)在corp的注冊功能已為group為store,external id為001的節(jié)點打開了。Group和external id信息與store節(jié)點中的store-001.properties配置文件中的配置對應。在SymmetricDS中,每個節(jié)點都被分配到1個節(jié)點組(Node Group),然后給1個external ID代表這個利用程序。在本教程中,我們命名代表商店的group為store,然后我們使用以001開始的數字標示符作為external ID(000代表corp節(jié)點)。關于節(jié)點組的更多的信息將在下1章節(jié)中介紹。

2.      查看store節(jié)點的日志輸出,看是不是成功注冊到corp節(jié)點。Store被配置為以隨機的時間間隔嘗試注冊1次,最多1分鐘。1旦注冊成功,corp和store節(jié)點將開始同步。

1.5. Sending an Initial Load

下1步,我們將發(fā)送1個數據的初始負載給store節(jié)點,再1次在corp節(jié)點上使用節(jié)點管理功能。

1.      打開1個命令行提示符,進入到corp安裝副本的根目錄的samples文件夾下。(注意,通常大多數系統(tǒng)命令在corp服務器端直接發(fā)出。例如,所有的配置文件,在corp輸入,然后同步到任意的client節(jié)點。)

2.      履行下面的命令,發(fā)送1個數據的初始負載到store節(jié)點:

../bin/symadmin --engine corp-000 reload-node 001

使用這個命令以后,corp節(jié)點排隊各個store節(jié)點拉數據要求。數據的初始負載包括=被配置了同步的每表中的數據。

3.      視察兩個節(jié)點的日志輸出,查看數據傳輸。Store被配置為每分鐘從corp節(jié)點拉1次數據。

1.6 Pulling Data

下1步,我們將對中央數據庫的item數據做1些修改(我們將增加1個新的商品),然后視察數據被拉到store節(jié)點。

1.      打開1個與Corp數據庫的交互式sql Session

2.      在store001和store002(本例中只有store001),增加1個新的商品:

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);

1旦statement被提交,數據變化將被SymmetricDS捕獲,然后排隊等store節(jié)點拉數據。

4.      視察兩個節(jié)點的日志輸出,查看數據傳輸情況。Store被配置為每分鐘從corp節(jié)點拉1次數據。

5.      在本教程中,item_selling_price被配置為列匹配的Router,特定的定價數據的變化將僅發(fā)送給store_id和external ID匹配的節(jié)點。在store節(jié)點的數據庫履行SQL語句,驗證是不是有新的數據到達。在本例中,第1條記錄將僅僅被發(fā)送到store 001。

1.7. Pushing Data

現(xiàn)在,我們將假冒1條交易,然后視察SymmetricDS是怎樣把交易信息推送到中央節(jié)點的。(在這我們可以發(fā)現(xiàn),數據的拉取和推送都是各個從節(jié)點的事,中央節(jié)點只負責管理)

1.      對store節(jié)點的數據庫打開1個SQL會話

2.      增加1個新的交易信息到store節(jié)點的數據庫

insert into "sale_transaction"("tran_id", "store_id", "workstation","day", "seq") values (1000, '001', '3', '2007⑴1-01', 100); insert into "sale_return_line_item"("tran_id", "item_id", "price","quantity") values (1000, 110000055, 0.65, 1);

1旦statement被提交,數據修改將被捕獲,然后排隊等候store節(jié)點推送到中央節(jié)點。

3.      視察兩個節(jié)點的日志輸出,查看數據傳輸情況。Store節(jié)點被配置為每分鐘推送1次數據到corp節(jié)點。

1.8 Verifying Outgoing Batches

前面我們演示了已推送和拉取了數據,下面我們將描寫你如何獲得數據的batch和發(fā)送的相干的信息。1個batch被用來追蹤和發(fā)送1個或多個數據變化到給定的節(jié)點。數據所在的節(jié)點創(chuàng)建1個batch,接收數據的節(jié)點接收到數據然后做出回應。

除此以外,在SymmetricDS中,表被分組到不同的數據通道,為了允許不同的數據類型在部份數據類型有毛病的情況下也能夠同步。例如,如果將要發(fā)向給定的channel的batch產生了毛病,這個batch將會在這個channel的每次同步操作中進行嘗試,直到這個batch不在產生毛病。只有在這個batch不在產生毛病以后,發(fā)向這個channel的其余的batch才會被發(fā)送。使用這類方式,在數據源產生的數據變化的順序能保證以一樣的順序被發(fā)送到目的地,并且在目的地以一樣的順序利用這些變化。但是,1個channel上沒有毛病的batch不會被另外一個有毛病的batch的channel阻塞。使用這類方式,1個channel上的數據變化不會被另外一個channel上的毛病阻塞。

可以通過下面的步驟查看發(fā)出的batch信息:

1.      打開1個與corp或store節(jié)點的數據庫服務器連接的會話

2.      確認已捕獲到的數據變化:

select * from sym_data order by data_id desc;

這個表中的每行數據代表1行變化的數據。Data_id是順序增長的,所以最近的1個data id應當與你的數據插入SQL相干聯(lián)。Event_type是I代表insert,U代表update,D代表delete。對插入和更新,捕獲到的數據在row_data列中,對更新和刪除,主鍵的值在pk_data列中。

3.      使用上1步得到的data_id,確認數據變化在某個batch中:

select * from sym_data_event where data_id = ?;

batch是基于必要的目的節(jié)點信息被創(chuàng)建的,稱之為Route Job。作為Route Job的1部份,數據變化使用使用batch_id被分配到1個batch,batch_id在追蹤和同步數據的時候會用到。Batch和數據之間的連接信息通過sym_data_event表被連接。

4.      使用上1步得到的batch_id,去人數據變化被batch,發(fā)送到目的地并得到響應:

select * from sym_outgoing_batch where batch_id =?;

初始的Batch,在剛創(chuàng)建和還沒有發(fā)送到1個節(jié)點的時候,有1個NE(new)的狀態(tài)。1旦收到節(jié)點的響應,成功發(fā)送時,batch狀態(tài)將會變成OK,發(fā)送失敗,將會變成ER。如果這個batch失敗,這個batch的error_flag將會被設置為1,已失敗的batch可能在它在重新嘗試時成功,這時候,這個狀態(tài)需要被改變。

理解這3個表,還有我們在下個部份討論到的第4個表,是診斷可能遇到的同步問題的關鍵。在你使用SymmetricDS的時候,不論是在實驗環(huán)境還是生產環(huán)境,花些時間監(jiān)控這些表可以更好的理解SymmetricDS是如何工作的。

1.9. Verifying Incoming Batches

接收數據的節(jié)點會保持本節(jié)點響應的batch信息和加載的數據相干的統(tǒng)計信息。重復的batch默許是疏忽的,但是可以通過修改incoming.batches.skip.duplicates 改變這個行動。

通過下面的步驟視察接收到的batch信息:

1.      打開1個與corp或store節(jié)點的數據庫交互的SQL會話

2.      使用上個部份取得的batch_id,確認接收和響應的batch信息:

select * from sym_incoming_batch where batch_id =?;

1個batch代表節(jié)點加載的數據變化的集合。表中記錄了創(chuàng)建和發(fā)送這個batch的節(jié)點,batch的狀態(tài)成功時是OK,失敗時是ER。

1.10. Multi-Homing

我們的快速入門指南到這就結束了。我們已成功的創(chuàng)建了兩個同步節(jié)點,然后在兩個數據庫中履行了同步操作。現(xiàn)在我們退回去,討論1下在指南的第1步討論的1個問題。也就是,在指南中,讓你安裝兩個SymmetricDS副本的那1步。

在上邊的例子中,我們在每個SymmetricDS安裝副本的engines目錄中替換了1個屬性文件。當SymmetricDS被啟動的時候,SymmetricDS被初始化,然后根據提供的配置文件創(chuàng)建1個SymmetricDS engine(再說1次,1個engine就是1個SymmetricDS節(jié)點,負責1個特定的數據庫)。

事實上,1個SymmetricDS利用程序可以同時啟動多個engine。當SymmetricDS啟動時,它在engines目錄中尋覓1‘.properties’結尾的文件。它將為找到的每個配置文件啟動1個SymmetricDS engine。命令行提示符中的―engine參數會覆蓋上邊的操作,將會使SymmetricDS只啟動命令行中指定的1個engine。在1個SymmetricDS安裝副本啟動多個engine的這類情況,叫做‘multi-homing’。

對上邊的例子,如果我們想改成multi-homing的架構,只要要做下面的步驟:

1.      安裝1個SymmetricDS副本代替上邊的兩個安裝副本。不在需要1個目錄代表兩個機器。

2.      從安裝副本的samples目錄拷貝兩個配置文件到engines目錄。

3.      上邊所有運行過的命令在此安裝副本的samples目錄下在運行1遍

4.      啟動SymmetricDS時,不在需要指定特定的engine,這樣將啟動兩個engine。這個命令還是從sampls目錄運行,以下:

../bin/sym --port 8080

注意使用上邊的命令,我們不在使用9090端口。SymmetricDS現(xiàn)在在8080端口監(jiān)聽corp和store engine之間的數據交換。

5.      除啟動服務器的命令,所有其他的命令的履行還是需要使用―engine參數指定engine。由于要給特定的節(jié)點(engine)來處理命令,像打開注冊,發(fā)起從corp到store的初始負載等等。

生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: av免费观看网站 | 欧美一级精品片在线看 | 亚洲综合欧美 | 影视av久久久噜噜噜噜噜三级 | 综合网av| 黄版视频在线观看 | 欲香欲色综合网 | 国产精品一区二区不卡 | 中文在线资源天堂 | 日韩精品免费在线观看 | 亚洲激情自拍偷拍 | 成人欧美一区二区三区1314 | 欧美一区二区三区啪啪 | 综合中文字幕 | 黄色成人av网站 | 福利视频一区二区 | 国产欧美精品一区二区三区四区 | xxxxxwwwww免费| 在线精品亚洲欧美日韩国产 | 日本国产精品视频 | 久久激情av | 国产日韩一区二区三区 | 99国产精品久久久久久久久久 | 精品免费国产一区二区三区四区 | 久久免费99精品久久久久久 | 91干b| 中文亚洲字幕 | 国产在线不卡视频 | 欧美精品在线观看 | 久久精品国产久精国产 | 一级片久久 | 免费福利av | 久久久免费观看视频 | 视频在线观看国产 | 国产成人久久精品 | 国产精品日韩 | 999精品在线 | 天堂a在线 | 狠狠v欧美v日韩v亚洲ⅴ | 欧美午夜精品久久久久免费视 | 日本欧美中文字幕 |