日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

SymmetricDS 完全配置安装手册

發布時間:2025/3/20 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SymmetricDS 完全配置安装手册 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

概述

SymmetricDS 是一個基于 Java 的數據庫同步框架。本文并不打算帶你熟悉 SymmetricDS 的實現原理,只是從安裝與配置入手,讓你感受一下 SymmetricDS 運行效果。如果你的系統中是干凈(空白)的,那么你需要做的事情就比較多了。本文希望盡可能全面且細致地講解配置過程,而不至于你按照本文的教程安裝,出現無法使用的情況。如果真的有這樣的情況產生,你可以在下面進行留言。以下是我在安裝環境時配置的一些記錄,希望于你有益。


版權說明

著作權歸作者所有。
商業轉載請聯系作者獲得授權,非商業轉載請注明出處。
本文作者:Q-WHai
發表日期: 2016年7月12日
本文鏈接:https://qwhai.blog.csdn.net/article/details/51891291
來源:CSDN
更多內容:分類 >> 數據庫


我的環境

  • CentOS release 6.5 (Final)
  • java version “1.8.0_92”
  • mysql Ver 14.14 Distrib 5.1.73, for redhat-linux-gnu (x86_64) using readline 5.1
  • OpenSSH_5.3p1, OpenSSL 1.0.1e-fips 11 Feb 2013
  • symmetric-server-3.7.34

  • 相關配置

    安裝配置 JDK

    這里需要你的 JDK 版本為 jdk1.6 以上,關于 JDK 的安裝和配置這里就不多說了,網上一大堆。

    防火墻

    此處為測試環境,故設置了關閉防火墻

    $ sudo service iptables stop $ sudo chkconfig iptables off # 設置防火墻不隨系統啟動,這一條你可以選擇性添加

    SSH 免密碼登錄

    關于 SSH 的免密碼登錄在這里不是很重要,只是本人在下發文件的時候用到了。你可以選擇性配置。
    配置過程可參見本人另一篇博客《Hadoop 2.2.0 集群搭建》

    創建 MySQL 新用戶

    這里為了避免使用 root 帳戶,所以創建了新的數據庫操作用戶:symmetric
    首先使用 root 帳戶登錄 MySQL,并執行如下 SQL 語句:

    mysql> INSERT INTO mysql.user(HOST,USER,PASSWORD) values("localhost","symmetric",password("123456")); mysql> FLUSH privileges;

    上面的 SQL 語句可以讓你有一個 symmetric 的MySQL 用戶,可是這個用戶在很多地方都沒有操作權限。這里需要修改某些操作的權限:

    mysql> UPDATE mysql.user SETSelect_priv='Y',Insert_priv='Y',Update_priv='Y',Delete_priv='Y',Create_priv='Y',Drop_priv='Y',Reload_priv='Y',Shutdown_priv='Y',Process_priv='Y',File_priv='Y',Grant_priv='Y',References_priv='Y',Index_priv='Y',Alter_priv='Y',Show_db_priv='Y',Super_priv='Y',Create_tmp_table_priv='Y',Lock_tables_priv='Y',Execute_priv='Y',Repl_slave_priv='Y',Repl_client_priv='Y',Create_view_priv='Y',Show_view_priv='Y',Create_routine_priv='Y',Alter_routine_priv='Y',Create_user_priv='Y',Event_priv='Y',Trigger_priv='Y' WHEREUSER="symmetric" ANDHOST="localhost"; mysql> FLUSH privileges;

    配置 MySQL 驅動

    在 Java 中,如果需要連接 MySQL 數據庫,需要使用 JDBC 的數據庫連接技術。在使用 JDBC 的時候比較容易忽略的就是連接驅動的配置了。
    這一點在 Windows 下還好,不過要在 Linux 下使用 JDBC 就需要配置 MySQL 的驅動程序了。

  • 首先上傳 MySQL 的驅動 jar 包 mysql-connector-java-5.1.6-bin.jar 到 Linux 的合適位置
  • 配置環境變量
  • $ sudo vim /etc/profile

    在文件末尾處添加如下內容:

    export CLASSPATH=${CLASSPATH}:/home/hadoop/libs/mysql-connector-java-5.1.6-bin.jar

    設置配置立即生效

    $ source /etc/profile

    SymmetricDS

    首先上傳 symmetric-server-3.7.34 到 master 節點自定義的一個目錄下,再重命名移動到用戶根目錄。

    $ mv symmetric-server-3.7.34/ ~/symmetric

    然后再下發此文件夾:

    $ scp -r ~/symmetric/ slave:~/symmetric/

    配置 corp

    這里的 corp 也就是我的 master 節點。
    復制 symmetric 目錄下的 samples/corp-000.properties 文件到 engines 目錄下:

    $ cp samples/corp-000.properties engines/

    并修改此文件內容

    $ vim engines/corp-000.properties

    修改后的內容如下:

    engine.name=corp-000db.driver=com.mysql.jdbc.Driver db.url=jdbc:mysql://master/sampledb.user=symmetric db.password=123456registration.url= sync.url=http://master:8080/sync/corp-000group.id=corp external.id=000job.purge.period.time.ms=7200000 job.routing.period.time.ms=5000 job.push.period.time.ms=10000 job.pull.period.time.ms=10000 initial.load.create.first=true

    這里我只保留了實際的內容,不包含注釋。

    配置 store

    這里的 store 也就是我的 slave 節點。
    復制 symmetric 目錄下的 samples/store-001.properties 文件到 engines 目錄下:

    $ cp samples/store-001.properties engines/

    并修改此文件內容

    $ vim engines/store-001.properties

    修改后的內容如下:

    engine.name=store-001db.driver=com.mysql.jdbc.Driver db.url=jdbc:mysql://slave/sampledb.user=symmetric db.password=123456registration.url=http://master:8080/sync/corp-000group.id=store external.id=001job.routing.period.time.ms=5000 job.push.period.time.ms=10000 job.pull.period.time.ms=10000

    配置文件可執行

    在默認的情況下,symmetric/bin 目錄下的文件沒有執行權限,所以這里我們要為這些文件添加可執行權限:

    $ chmod 755 bin/*

    創建數據庫

    $ mysql -usymmetric -p123456 mysql> create database sample;

    創建數據表

    自動化創建

    在 symmetric 中默認已經給出了自動化的數據創建過程,不過這種自動化的創建有一些不足的地方,那就是數據不夠完整。這樣就會致使在后面自動化插入數據時出現找不到數據表的情況,所以這里我比較推薦你使用下面手動創建的方式。自動化的創建方式只作為參考:
    創建指令

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

    創建結果

    mysql> show tables; +-----------------------------+ | Tables_in_sample | +-----------------------------+ | sym_channel | | sym_conflict | | sym_data | | sym_data_event | | sym_data_gap | | sym_extension | | sym_extract_request | | sym_file_incoming | | sym_file_snapshot | | sym_file_trigger | | sym_file_trigger_router | | sym_grouplet | | sym_grouplet_link | | sym_incoming_batch | | sym_incoming_error | | sym_load_filter | | sym_lock | | sym_node | | sym_node_channel_ctl | | sym_node_communication | | sym_node_group | | sym_node_group_channel_wnd | | sym_node_group_link | | sym_node_host | | sym_node_host_channel_stats | | sym_node_host_job_stats | | sym_node_host_stats | | sym_node_identity | | sym_node_security | | sym_outgoing_batch | | sym_parameter | | sym_registration_redirect | | sym_registration_request | | sym_router | | sym_sequence | | sym_table_reload_request | | sym_transform_column | | sym_transform_table | | sym_trigger | | sym_trigger_hist | | sym_trigger_router | | sym_trigger_router_grouplet | +-----------------------------+ 42 rows in set (0.00 sec)

    手動創建

    手動創建雖然比較繁瑣,但是數據比較完整,整個過程也很順利。

    SQL

    item

    CREATE TABLE item( item_id INTEGER PRIMARY KEY,name VARCHAR(100) );

    item_selling_price

    CREATE TABLE item_selling_price(item_id INTEGER REFERENCES item(item_id),store_id VARCHAR(5),price DECIMAL(10,2),cost DECIMAL(10,2),PRIMARY KEY(item_id, store_id) );

    sale_transaction

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

    sale_return_line_item

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

    于是創建了如下 4 張數據表:

    mysql> show tables; +-----------------------+ | Tables_in_sample | +-----------------------+ | item | | item_selling_price | | sale_return_line_item | | sale_transaction | +-----------------------+

    修改 HOST

    由于之前的配置文件中設置了 HOST 為 master,所以這里需要修改用戶 symmetric 的 HOST。

    mysql> UPDATE user SET HOST='%' WHERE user='symmetric'; mysql> FLUSH privileges;

    生成分銷系統表

    在 symmetric 中默認已經給出了自動化生成分銷系統表的方式,只要一句指令即可:
    指令

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

    檢查結果
    查看 MySQL 中的數據表

    mysql> show tables; +-----------------------------+ | Tables_in_sample | +-----------------------------+ | item | | item_selling_price | | sale_return_line_item | | sale_transaction | | sym_channel | | sym_conflict | | sym_data | | sym_data_event | | sym_data_gap | | sym_extension | | sym_extract_request | | sym_file_incoming | | sym_file_snapshot | | sym_file_trigger | | sym_file_trigger_router | | sym_grouplet | | sym_grouplet_link | | sym_incoming_batch | | sym_incoming_error | | sym_load_filter | | sym_lock | | sym_node | | sym_node_channel_ctl | | sym_node_communication | | sym_node_group | | sym_node_group_channel_wnd | | sym_node_group_link | | sym_node_host | | sym_node_host_channel_stats | | sym_node_host_job_stats | | sym_node_host_stats | | sym_node_identity | | sym_node_security | | sym_outgoing_batch | | sym_parameter | | sym_registration_redirect | | sym_registration_request | | sym_router | | sym_sequence | | sym_table_reload_request | | sym_transform_column | | sym_transform_table | | sym_trigger | | sym_trigger_hist | | sym_trigger_router | | sym_trigger_router_grouplet | +-----------------------------+ 46 rows in set (0.00 sec)

    填充數據

    雖然上面說了一堆東西,但是還只是一堆空的數據表,如下我們就把 symmetric 自帶的數據填充到數據表中。操作過程如下:
    指令

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

    結果檢查

    mysql> select * from item_selling_price; +----------+----------+-------+------+ | item_id | store_id | price | cost | +----------+----------+-------+------+ | 11000001 | 001 | 0.20 | 0.10 | | 11000001 | 002 | 0.30 | 0.20 | +----------+----------+-------+------+ 2 rows in set (0.00 sec)

    啟動 SymmetricDS

    因為這里是兩個節點之間的數據同步,所以我們需要啟動兩個節點:corp 和 store
    start corp node
    corp 設置開啟的端口為 8080

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

    start store node
    store 設置開啟的端口為 9090

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

    上面兩個窗口的啟動之后,會進入等待狀態,所以如果有其他操作,就需要另外打開窗口了。

    注冊節點

    這里還有一步需要處理就是注冊節點,注冊操作在 corp 和 store 啟動之后進行。

    $ ./bin/symadmin --engine corp-000 open-registration store 001 Log output will be written to /home/hadoop/symmetric/logs/symmetric.log [] - AbstractCommandLauncher - Option: name=engine, value={corp-000} [corp-000] - JdbcDatabasePlatformFactory - Detected database 'MySQL', version '5', protocol 'mysql' [corp-000] - JdbcDatabasePlatformFactory - The IDatabasePlatform being used is org.jumpmind.db.platform.mysql.MySqlDatabasePlatform [corp-000] - MySqlSymmetricDialect - The DbDialect being used is org.jumpmind.symmetric.db.mysql.MySqlSymmetricDialect [corp-000] - ExtensionService - Found 0 extension points from the database that will be registered [corp-000] - StagingManager - The staging directory was initialized at the following location: /home/hadoop/symmetric/tmp/corp-000 [corp-000] - ClusterService - This node picked a server id of master [corp-000] - ExtensionService - Found 0 extension points from the database that will be registered [corp-000] - ClientExtensionService - Found 9 extension points from spring that will be registered [corp-000] - RegistrationService - Registration was reopened for 001 Opened registration for node group of 'store' external ID of '001'

    發送初始負載

    發送初始負載的目的是將最開始的時候 corp 節點數據表中的數據同步到 store 節點中。如果你開始的數據表中沒有這些數據,那么就可以不用發送此負載了。
    指令

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

    結果

    Log output will be written to /home/hadoop/symmetric/logs/symmetric.log [] - AbstractCommandLauncher - Option: name=engine, value={corp-000} [corp-000] - JdbcDatabasePlatformFactory - Detected database 'MySQL', version '5', protocol 'mysql' [corp-000] - JdbcDatabasePlatformFactory - The IDatabasePlatform being used is org.jumpmind.db.platform.mysql.MySqlDatabasePlatform [corp-000] - MySqlSymmetricDialect - The DbDialect being used is org.jumpmind.symmetric.db.mysql.MySqlSymmetricDialect [corp-000] - ExtensionService - Found 0 extension points from the database that will be registered [corp-000] - StagingManager - The staging directory was initialized at the following location: /home/hadoop/symmetric/tmp/corp-000 [corp-000] - ClusterService - This node picked a server id of master [corp-000] - ExtensionService - Found 0 extension points from the database that will be registered [corp-000] - ClientExtensionService - Found 9 extension points from spring that will be registered Successfully enabled initial load for node 001

    測試驗證

    這里的驗證為在 corp(即 master) 節點上修改一條數據,觀察兩個節點中數據表的變化。
    在 corp 節點的數據庫中執行相應 SQL 語句:

    更新

    mysql> UPDATE item_selling_price SET price='0.21' WHERE item_id='11000001' AND store_id='001';

    corp

    mysql> select * from item_selling_price; +----------+----------+-------+------+ | item_id | store_id | price | cost | +----------+----------+-------+------+ | 11000001 | 001 | 0.21 | 0.10 | | 11000001 | 002 | 0.30 | 0.20 | +----------+----------+-------+------+ 2 rows in set (0.00 sec)

    store

    mysql> select * from item_selling_price; +----------+----------+-------+------+ | item_id | store_id | price | cost | +----------+----------+-------+------+ | 11000001 | 001 | 0.21 | 0.10 | +----------+----------+-------+------+ 1 row in set (0.00 sec)

    插入

    注意這里不要只添加一條記錄,因為涉及到了數據庫的觸發器,我們虛擬了一條交易記錄,如下:

    mysql> INSERT INTO item (item_id, name) VALUES (110000055, 'Soft Drink'); mysql> INSERT INTO item_selling_price (item_id, store_id, price) VALUES (110000055, '001', 0.65); mysql> INSERT INTO item_selling_price (item_id, store_id, price) VALUES (110000055, '002', 1.00);

    當一條交易被完成之后,我們再去檢查一下 store 節點中的數據信息:

    mysql> select * from item_selling_price; +-----------+----------+-------+------+ | item_id | store_id | price | cost | +-----------+----------+-------+------+ | 11000001 | 001 | 0.22 | 0.10 | | 110000055 | 001 | 0.65 | NULL | +-----------+----------+-------+------+ 2 rows in set (0.00 sec) mysql> select * from item; +-----------+------------+ | item_id | name | +-----------+------------+ | 11000001 | Yummy Gum | | 110000055 | Soft Drink | +-----------+------------+ 2 rows in set (0.00 sec)

    數據的確是有增加的,驗證完成。


    Ref

    • http://blog.csdn.net/xichenguan/article/details/41720861

    征集

    如果你也需要使用ProcessOn這款在線繪圖工具,可以使用如下邀請鏈接進行注冊:
    https://www.processon.com/i/56205c2ee4b0f6ed10838a6d

    總結

    以上是生活随笔為你收集整理的SymmetricDS 完全配置安装手册的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。