动态

详情 返回 返回

橫空出世!一款開源的數據同步工具,穩定又高效,好用到爆! - 动态 详情

在開發項目的時候,我們經常會遇到數據同步的場景。例如將開發環境的數據庫表同步到測試環境,將MySQL中的數據同步到ES中。今天給大家分享一款好用的數據同步工具DBSyncer,自帶可視化界面,希望對你有所幫助!

簡介

DBSyncer是一款開源的數據同步工具,支持MySQL、Oracle、PostgreSQL、Elasticsearch(ES)、Kafka、File等同步場景,目前在Gitee上已有3.1k+Star

DBSyncer具有如下特性:

  • 組合驅動:支持自定義庫與庫的同步組合,例如可以將MySQL中的數據同步到ES。
  • 實時監控:支持全量同步和增量同步,可以監控同步運行狀態、結果、同步日誌和系統日誌。
  • 開發插件:支持編寫代碼自定義轉化同步邏輯。

下面是DBSyncer使用過程中的效果圖,功能還是挺實用的!

安裝

使用Docker來安裝DBSyncer是非常方便的,我們將採用此種方式。
  • 首先通過如下命令下載鏡像;
docker pull registry.cn-hangzhou.aliyuncs.com/xhtb/dbsyncer:latest
  • 下載完成後通過如下命令運行對應的容器;
docker run -p 18686:18686 --name=db-syncer \
-e TZ="Asia/Shanghai" \
-v /mydata/db-syncer/data:/app/dbsyncer/data \
-v /mydata/db-syncer/plugins:/app/dbsyncer/plugins \
-d registry.cn-hangzhou.aliyuncs.com/xhtb/dbsyncer:latest
  • 容器運行後,就可以訪問DBSyncer的Web控制枱了,默認賬號密碼為admin:admin,訪問地址:http://192.168.3.101:18686

使用

這裏將以電商系統中商品表的數據同步為例,來介紹下DBSyncer的使用。mall項目是一套基於SpringBoot3 + Vue 的電商系統(Github標星60K),後端支持多模塊和最新微服務架構,採用Docker和K8S部署。包括前台商城項目和後台管理系統,能支持完整的訂單流程!涵蓋商品、訂單、購物車、權限、優惠券、會員、支付等功能!

  • Boot項目:https://github.com/macrozheng/mall
  • Cloud項目:https://github.com/macrozheng/mall-swarm
  • 教程網站:https://www.macrozheng.com

項目演示:

MySQL數據同步

  • 使用的簡化版商品表結構如下;
CREATE TABLE `product`  (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `title` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `sub_title` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `price` decimal(10, 2) NULL DEFAULT NULL,
  `pic` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
  • 這裏創建兩個數據庫mall_devmall_testmall_dev中的product表包含商品數據,mall_test中的不包含商品數據,我們將把mall_dev中的數據同步到mall_test中去;

  • 我們需要在DBSyncer中添加好mall_devmall_test對應的連接;

  • 然後再添加驅動,設置好數據源與目標源;

  • 然後配置好字段的映射關係,如果是所有字段都需要同步的話全選即可;

  • 之後點擊驅動右上角的啓動按鈕即可實現數據同步,同步成功後在數據庫中也可以看到對應的數據了。

MySQL同步到ES

  • 在同步數據到ES之前,我們需要先創建好product對應的索引;
PUT /product_index
{
  "mappings": {
    "properties": {
       "id": {
        "type": "long"
      },
      "title": {
        "type": "text"
      },
      "sub_title": {
        "type": "text"
      },
      "pic": {
        "type": "text"
      },
      "price": {
        "type": "double"
      }
    }
  }
}
  • 在Kibana的Dev Tools中使用上述命令即可創建,Kibana的訪問地址:http://192.168.3.101:5601

  • 然後在DBSyncer中添加ES對應的連接,如果ES未設置密碼的話隨便輸一個就行;

  • 之後再添加一個從MySQL同步到ES的驅動;

  • 然後配置好驅動中的字段映射關係,注意配置好主鍵;

  • 點擊驅動右上角的啓動按鈕進行數據同步;

  • 同步成功後可以在ES中查詢到對應的數據。

總結

今天給大家分享了DBSyncer這款可視化數據同步工具的使用,主要是實現了MySQL和ES之間的全量同步,當然DBSyncer還能支持增量同步,以及通過插件自定義同步邏輯,感興趣的小夥伴可以研究下!

項目地址

https://gitee.com/ghi/dbsyncer

user avatar san-mu 头像 zhouzhenchao 头像 koogua 头像 seatunnel 头像 danieldx 头像 chat2db 头像
点赞 6 用户, 点赞了这篇动态!
点赞

Add a new 评论

Some HTML is okay.