簡介
DBSyncer(簡稱dbs)是一款開源的數(shù)據(jù)同步中間件,提供MySQL、Oracle、SQL Server、PostgreSQL、Elasticsearch(ES)、Kafka、File、SQL等同步場景。支持上傳插件自定義同步轉(zhuǎn)換業(yè)務,提供監(jiān)控全量和增量數(shù)據(jù)統(tǒng)計圖、應用性能預警等。
特點
- 組合驅(qū)動,自定義庫同步到庫組合,關系型數(shù)據(jù)庫與非關系型之間組合,任意搭配表同步映射關系
- 實時監(jiān)控,驅(qū)動全量或增量實時同步運行狀態(tài)、結(jié)果、同步日志和系統(tǒng)日志
- 開發(fā)插件,自定義轉(zhuǎn)化同步邏輯
從開源項目中下載zip包,解壓安裝包,Window執(zhí)行bin/startup.bat,Linux執(zhí)行bin/startup.shStart successfully!代表啟動成功,注意如果是高版本的jdk可能會報錯,切換為jdk8來啟動!訪問:http://localhost:18686/
數(shù)據(jù)同步
這里以mysql > elasticsearch為例也是最常見的場景
mysql配置
注意:mysql的binlog配置一定要設置為Row,在mysql的配置文件中
binlog_format=ROW
1.創(chuàng)建一個mysql的表這里以一個t_user表為例CREATE TABLE `t_user` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '用戶ID,主鍵自增',
`name` varchar(50) NOT NULL COMMENT '用戶姓名',
`height` int(11) DEFAULT NULL COMMENT '用戶身高(單位:厘米)',
`age` tinyint(3) unsigned DEFAULT NULL COMMENT '用戶年齡',
`email` varchar(100) DEFAULT NULL COMMENT '用戶郵箱',
`address` varchar(255) DEFAULT NULL COMMENT '用戶詳細地址',
`phone` varchar(20) DEFAULT NULL COMMENT '用戶手機號碼',
`hobby` varchar(255) DEFAULT NULL COMMENT '用戶興趣愛好',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '記錄創(chuàng)建時間',
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '記錄更新時間',
PRIMARY KEY (`id`),
UNIQUE KEY `idx_email` (`email`),
KEY `idx_phone` (`phone`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用戶信息表';
INSERT INTO `t_user` (`id`, `name`, `height`, `age`, `email`, `address`, `phone`, `hobby`, `create_time`, `update_time`) VALUES (1, '全量同步-1', 1, 1, 'dbs@qq.com', '北京市', '13333333333', '沒有愛好', '2025-06-30 15:14:50', '2025-06-30 15:14:50');
2.創(chuàng)建一個ES中創(chuàng)建一個user_index的索引
PUT /user_index
{
"mappings": {
"properties": {
"id": {"type": "integer", "index": false},
"name": {
"type": "text",
"fields": {"keyword": {"type": "keyword"}}
},
"height": {"type": "float"},
"age": {"type": "short"},
"email": {"type": "keyword"},
"address": {"type": "text"},
"phone": {"type": "keyword"},
"hobby": {
"type": "text",
"fields": {"keyword": {"type": "keyword"}}
},
"create_time": {"type": "long"},
"update_time": {"type": "long"}
}
},
"settings": {
"number_of_shards": 1,
"number_of_replicas": 0
}
}
配置DBSyncer同步任務
添加驅(qū)動時選擇數(shù)據(jù)源為mysql目標為es映射 關系注意主鍵id 也可以通過條件同步指定條件數(shù)據(jù)高級設置注意時間的設置.需要做一下轉(zhuǎn)換因為選擇的是全量同步,所以說啟動以后,同步完成任務就停止了,停止以后,我們把任務修改為增量同步,來同步增量的任務即可設置為增量以后 啟動任務,后續(xù)的數(shù)據(jù)就會自動同步了
性能測試
閱讀原文:原文鏈接
該文章在 2025/7/3 14:27:56 編輯過