最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MySQL?遷移至?Doris?最佳實踐方案(最新整理)

 更新時間:2025年07月14日 11:44:44   作者:數(shù)據(jù)極客圈  
本文將深入剖析三種經過實踐驗證的MySQL遷移至Doris的最佳方案,涵蓋全量遷移、增量同步、混合遷移以及基于CDC(Change?Data?Capture)的實時遷移,感興趣的朋友跟隨小編一起看看吧

在數(shù)據(jù)架構不斷演進的背景下,從 MySQL 遷移至 Doris 成為許多企業(yè)提升數(shù)據(jù)處理效率的關鍵選擇。本文將深入剖析三種經過實踐驗證的 MySQL 遷移至 Doris 的最佳方案,涵蓋全量遷移、增量同步、混合遷移以及基于 CDC(Change Data Capture)的實時遷移。每種方案都將從技術原理、實施步驟、適用場景、資源消耗等維度展開分析,并通過對比選型幫助讀者結合自身業(yè)務需求與技術棧,找到最契合的遷移路徑,實現(xiàn)數(shù)據(jù)平穩(wěn)過渡與性能躍升。

一、JDBC Catalog 聯(lián)邦查詢方案(適合跨庫實時查詢)

1. 方案概述

通過 Doris 1.2 + 引入的JDBC Catalog功能,直接通過標準 JDBC 協(xié)議連接 MySQL 數(shù)據(jù)庫,實現(xiàn)跨庫聯(lián)邦查詢和數(shù)據(jù)寫入。相比 ODBC,JDBC 接口更統(tǒng)一、兼容性更強,且無需復雜的驅動安裝和版本匹配。

2. 環(huán)境要求

組件版本要求說明
Doris1.2.0+支持 JDBC Catalog 功能
MySQLMySQL 5.7, 8.0 或更高版本需開啟遠程訪問權限
MySQL JDBC8.0.28+驅動下載:MySQL JDBC 驅動

3. 實施步驟

3.1 安裝 JDBC 驅動(所有 FE/BE 節(jié)點)

步驟 1:創(chuàng)建驅動目錄

mkdir -p /your_path/doris/jdbc_drivers 

步驟 2:上傳驅動包下載 MySQL JDBC 驅動(如mysql-connector-java-8.0.31.jar),并上傳至所有 FE/BE 節(jié)點的/your_path/doris/jdbc_drivers目錄。

步驟 3:配置驅動路徑編輯fe.confbe.conf,添加以下配置(如果你使用的是默認的路徑就不需要修改這個了):

jdbc_drivers_dir = /opt/doris/jdbc_drivers 

步驟 4:重啟服務

# 重啟FE 
cd /opt/doris/fe 
bin/stop_fe.sh && bin/start_fe.sh --daemon 
# 重啟BE 
cd /opt/doris/be 
bin/stop_be.sh && bin/start_be.sh --daemon 

3.2 創(chuàng)建 JDBC Catalog

使用 MySQL 客戶端連接 Doris,執(zhí)行以下 SQL 創(chuàng)建 Catalog:

CREATE CATALOG mysql PROPERTIES (
    "type"="jdbc",
    "user"="root",
    "password"="secret",
    "jdbc_url" = "jdbc:mysql://example.net:3306",
    "driver_url" = "mysql-connector-j-8.3.0.jar",
    "driver_class" = "com.mysql.cj.jdbc.Driver"
)

jdbc_url:MySQL 連接地址,可指定數(shù)據(jù)庫(如jdbc:mysql://host:port/dbname)。

driver_url:驅動文件名,需與/opt/doris/jdbc_drivers目錄下的文件一致,默認就是/your_path/doris/jdbc_drivers 。

3.3 創(chuàng)建查詢或者導入

執(zhí)行聯(lián)邦查詢

-- 直接查詢mysql表 
SELECT * FROM mysql_catalog.mysql_db.user_table LIMIT 10; 
-- 與Doris表關聯(lián)查詢 
SELECT a.id, a.name, b.sales 
FROM mysql_catalog.mysql_db.user_table a 
JOIN doris_table b ON a.id = b.user_id; 

執(zhí)行數(shù)據(jù)導入

-- 建表
create table as select  mysql_catalog.mysql_db.user_table
-- 導入
insert into doris_table select * from mysql_catalog.mysql_db.user_table

4. 注意事項

數(shù)據(jù)類型映射
MySQL 的BIT類型映射為 Doris 的STRING,需在查詢時轉換(如CAST(bit_col AS BOOLEAN))。
大字段類型(如BLOB)建議通過VARCHAR映射,避免查詢性能問題。

權限控制
為 Doris 創(chuàng)建專用 MySQL 用戶,僅授予SELECT權限,避免數(shù)據(jù)泄露。
在 Doris 中通過GRANT語句限制外部表訪問權限。

連接安全
如果您使用數(shù)據(jù)源上安裝的全局信任證書配置了 TLS,則可以通過將參數(shù)附加到在 jdbc_url 屬性中設置的 JDBC 連接字符串來啟用集群和數(shù)據(jù)源之間的 TLS。

二、Binlog 實時同步方案(適合增量數(shù)據(jù)同步)

1. 方案概述

通過 Canal 解析 MySQL Binlog,實時同步增量數(shù)據(jù)至 Doris,支持 INSERT/UPDATE/DELETE 操作,適用于實時數(shù)據(jù)倉庫場景。

2. 環(huán)境要求

組件版本要求說明
MySQL5.7+需開啟 Binlog(ROW 模式)
Canal1.1.5+下載地址:Canal 官網(wǎng)
Doris1.2.0+支持 BATCH_DELETE 特性

3. 實施步驟

3.1 配置 MySQL 開啟 Binlog

步驟 1:編輯 my.cnf

[mysqld] 
log-bin=mysql-bin         # 開啟Binlog 
binlog-format=ROW          # 使用ROW模式 
binlog-row-image=FULL      # 記錄完整行數(shù)據(jù) 
server-id=1                # 唯一服務器ID 

步驟 2:重啟 MySQL 服務

sudo systemctl restart mysqld 

3.2 部署 Canal 服務

步驟 1:下載并解壓

wget https://github.com/alibaba/canal/releases/download/canal-1.1.5/canal.deployer-1.1.5.tar.gz 
tar -zxvf canal.deployer-1.1.5.tar.gz 

步驟 2:創(chuàng)建 Instance 配置

mkdir conf/demo 
cp conf/example/instance.properties conf/demo/ 
vim conf/demo/instance.properties 

關鍵配置

canal.instance.master.address=192.168.1.100:3306   # MySQL地址 
canal.instance.dbUsername=canal                  # 具有Binlog讀取權限的用戶 
canal.instance.dbPassword=canal                  # 用戶密碼 
canal.destination=demo                           # Instance名稱 

步驟 3:啟動 Canal

sh bin/startup.sh 
# 驗證日志:cat logs/demo/demo.log,顯示"start successful"表示啟動成功 

3.3 在 Doris 中創(chuàng)建同步任務

步驟 1:創(chuàng)建 Doris 目標表(需開啟 BATCH_DELETE)

--create Mysql table
CREATE TABLE `test.source_test` (
  `id` int(11) NOT NULL COMMENT "",
  `name` int(11) NOT NULL COMMENT ""
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
-- create Doris table
CREATE TABLE `target_test` (
  `id` int(11) NOT NULL COMMENT "",
  `name` int(11) NOT NULL COMMENT ""
) ENGINE=OLAP
UNIQUE KEY(`id`)
COMMENT "OLAP"
DISTRIBUTED BY HASH(`id`) BUCKETS 8
PROPERTIES (
"replication_allocation" = "tag.location.default: 3"
);

步驟 2:創(chuàng)建同步作業(yè)

CREATE SYNC demo_job ( 
   FROM mysql.test_table INTO target_test (id, name) 
) 
FROM BINLOG ( 
   "type" = "canal", 
   "canal.server.ip" = "192.168.1.101",   # Canal服務器IP 
   "canal.server.port" = "11111",         # Canal默認端口 
   "canal.destination" = "demo",          # Canal Instance名稱 
   "canal.username" = "canal", 
   "canal.password" = "canal", 
   "sync.mode" = "incremental"            # 增量同步模式 
); 

4. 注意事項

權限要求:需為 Canal 創(chuàng)建專用用戶(如 canal),并授予REPLICATION SLAVE權限:

CREATE USER 'canal'@'%' IDENTIFIED BY 'canal'; 
GRANT REPLICATION SLAVE ON *.* TO 'canal'@'%'; 
FLUSH PRIVILEGES; 

數(shù)據(jù)一致性:建議在 Doris 目標表中使用UNIQUE KEY 模型,并確保 MySQL 源表與 Doris 表字段一一對應。

三、Flink CDC 流式同步方案(適合高實時性場景)

1. 方案概述

基于 Flink CDC(Change Data Capture)實時捕獲 MySQL 變更數(shù)據(jù),通過 Flink-Doris 連接器寫入 Doris,支持秒級延遲,適用于實時分析、實時報表場景。

2. 環(huán)境要求

組件版本要求說明
Flink1.13+支持 Flink CDC 2.0+
Doris1.2.0+支持 Delete 操作
依賴庫flink-cdc-2.1.0, flink-doris-connector-1.1.0需下載對應版本 JAR 包

3. 實施步驟

3.1 構建 Flink 作業(yè)

步驟 1:添加 Maven 依賴

<dependency>
  <groupId>org.apache.doris</groupId>
  <artifactId>flink-doris-connector-1.16</artifactId>
  <version>25.1.0</version>
</dependency> 

步驟 2:編寫 Flink SQL 腳本

-- enable checkpoint
SET 'execution.checkpointing.interval' = '30s';
-- 創(chuàng)建MySQL CDC源表 
CREATE TABLE mysql_cdc_source ( 
   id INT PRIMARY KEY NOT ENFORCED, 
   name STRING, 
   age INT, 
   ts TIMESTAMP(3) METADATA FROM 'source_ts' VIRTUAL 
) WITH ( 
   'connector' = 'mysql-cdc', 
   'hostname' = '192.168.1.100', 
   'port' = '3306', 
   'username' = 'root', 
   'password' = 'your_mysql_password', 
   'database-name' = 'test', 
   'table-name' = 'user_table' 
); 
-- 創(chuàng)建Doris目標表 
CREATE TABLE doris_sink ( 
   id INT, 
   name STRING, 
   age INT, 
   update_time TIMESTAMP(3) 
) WITH ( 
   'connector' = 'doris', 
   'fenodes' = 'doris-fe:8030', 
   'table.identifier' = 'test.user_table', 
   'username' = 'root', 
   'password' = '', 
   'sink.properties.format' = 'json', 
   'sink.enable-delete' = 'true', 
   'sink.label-prefix' = 'flink_cdc_' 
); 
-- 啟動數(shù)據(jù)同步 
INSERT INTO doris_sink SELECT id, name, age, ts FROM mysql_cdc_source; 

3.2 提交 Flink 作業(yè)

<FLINK_HOME>bin/flink run \
    -Dexecution.checkpointing.interval=10s \
    -Dparallelism.default=1 \
    -c org.apache.doris.flink.tools.cdc.CdcTools \
    lib/flink-doris-connector-1.16-24.0.1.jar \
    mysql-sync-database \
    --database test_db \
    --mysql-conf hostname=127.0.0.1 \
    --mysql-conf port=3306 \
    --mysql-conf username=root \
    --mysql-conf password=123456 \
    --mysql-conf database-name=mysql_db \
    --including-tables "tbl1|test.*" \
    --sink-conf fenodes=127.0.0.1:8030 \
    --sink-conf username=root \
    --sink-conf password=123456 \
    --sink-conf jdbc-url=jdbc:mysql://127.0.0.1:9030 \
    --sink-conf sink.label-prefix=label \
    --table-conf replication_num=1 

4. 注意事項

并行度優(yōu)化:根據(jù) MySQL 表數(shù)量和數(shù)據(jù)量調整 Flink 作業(yè)并行度,避免單任務壓力過大。

寫入機制:開啟 Flink Checkpoint,Doris Flink Connector 提供了兩種攢批模式,默認使用基于 Flink Checkpoint 的流式寫入方式。

寫入方式流式寫入批量寫入
觸發(fā)條件依賴 Flink 的 Checkpoint,跟隨 Flink 的 Checkpoint 周期寫入到 Doris 中基于 Connector 內的時間閾值、數(shù)據(jù)量閾值進行周期性提交,寫入到 Doris 中
一致性Exactly-OnceAt-Least-Once,基于主鍵模型可以保證 Exactly-Once
延遲受 Checkpoint 時間間隔限制,通常較高獨立的批處理機制,靈活調整
容錯與恢復與 Flink 狀態(tài)恢復完全一致依賴外部去重邏輯(如 Doris 主鍵去重)

四、Datax 同步方案(適合全量 / 批量數(shù)據(jù)遷移)

1. 方案概述

Datax 是一款異構數(shù)據(jù)源之間數(shù)據(jù)同步工具,通過編寫 JSON 格式的配置文件,實現(xiàn) MySQL 與 Doris 之間的數(shù)據(jù)抽取、轉換和加載(ETL)。該方案適用于全量數(shù)據(jù)遷移、定期批量數(shù)據(jù)同步場景,對實時性要求不高,但配置靈活,可自定義數(shù)據(jù)處理邏輯。

2. 環(huán)境要求

組件版本要求說明
Datax3.0+下載地址:Datax 官網(wǎng)
MySQL5.6+支持標準 JDBC 協(xié)議
Doris1.0+支持通過 JDBC 或 Broker 導入數(shù)據(jù)

3. 實施步驟

3.1 安裝 Datax

# 下載Datax壓縮包
wget https://datax-opensource.oss-cn-hangzhou.aliyuncs.com/202308/datax.tar.gz
tar -zxvf datax.tar.gz

3.2 編寫同步配置文件

創(chuàng)建mysql_to_doris.json文件,示例配置如下:

{
    "job": {
        "content": [
            {
                "reader": {
                    "name": "mysqlreader",
                    "parameter": {
                        "column": [xxx],
                        "connection": [
                            {
                                "jdbcUrl": ["jdbc:mysql://localhost:3306/demo"],
                                "table": ["table_name"]
                            }
                        ],
                        "username": "root",
                        "password": "xxxxx",
                        "where": ""
                    }
                },
                "writer": {
                    "name": "doriswriter",
                    "parameter": {
                        "loadUrl": ["127.0.0.1:8030"],
                        "column": [xxxx],
                        "username": "root",
                        "password": "xxxxxx",
                        "postSql": ["select count(1) from table_name"],
                        "preSql": [],
                        "flushInterval":30000,
                        "connection": [
                          {
                            "jdbcUrl": "jdbc:mysql://127.0.0.1:9030/demo",
                            "selectedDatabase": "demo",
                            "table": ["table_name"]
                          }
                        ],
                        "loadProps": {
                            "format": "json",
                            "strip_outer_array":"true",
                            "line_delimiter": "\\x02"
                        }
                    }
                }
            }
        ],
        "setting": {
            "speed": {
                "channel": "1"
            }
        }
    }
}

3.3 執(zhí)行同步任務

python bin/datax.py mysql_to_doris.json

4. 注意事項

數(shù)據(jù)類型映射:確保 MySQL 與 Doris 字段類型兼容,如 MySQL 的DATETIME對應 Doris 的DATETIME,避免類型轉換錯誤。

性能調優(yōu):通過調整channel參數(shù)控制并發(fā)度,但過高的并發(fā)可能導致資源耗盡,建議根據(jù)數(shù)據(jù)庫負載測試后設置。

五、方案對比與選型建議

方案適用場景復雜度資源依賴
JDBC Catalog跨庫實時查詢、聯(lián)邦分析★★☆☆☆依賴 Doris JDBC 功能
Binlog 同步增量數(shù)據(jù)實時同步★★★☆☆需部署 Canal 及相關組件
Flink CDC 同步高實時性流式處理、復雜清洗★★★★☆依賴 Flink 集群
Datax 同步全量 / 批量數(shù)據(jù)遷移、離線同步★★★☆☆輕量級工具,獨立部署

優(yōu)先選擇 JDBC Catalog:當需要快速驗證跨庫查詢功能,或需要與 Doris 本地表進行關聯(lián)分析時。

推薦 Binlog 同步:常規(guī)增量同步場景,兼顧實時性和部署復雜度。

選擇 Flink CDC:對實時性要求高(如實時看板),或需要復雜數(shù)據(jù)清洗(通過 Flink SQL 實現(xiàn))。

使用 Datax 同步:適合一次性全量遷移,或周期性批量同步歷史數(shù)據(jù)。

五、數(shù)據(jù)遷移最佳實踐要點

全量初始化與增量同步結合

首次遷移時,先通過DataX導入 MySQL 全量數(shù)據(jù),再啟動 Binlog 或 Flink CDC 同步增量數(shù)據(jù),避免歷史數(shù)據(jù)積壓。

數(shù)據(jù)類型兼容性測試

重點驗證 MySQL 的ENUMSET、BIT等類型在 Doris 中的映射是否符合預期。

監(jiān)控與告警體系

結合 Prometheus + Grafana 監(jiān)控或者Doris Manager工具觀察資源使用情況。

這份文檔已涵蓋多種遷移方式。若還想對某個遷移方式補充更多細節(jié),或增加其他方面的內容,歡迎討論。

到此這篇關于MySQL 遷移至 Doris 最佳實踐方案的文章就介紹到這了,更多相關MySQL 遷移至 Doris內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • MySQL雙主搭建+keepalived高可用的實現(xiàn)

    MySQL雙主搭建+keepalived高可用的實現(xiàn)

    本文主要介紹了MySQL雙主搭建+keepalived高可用的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2025-04-04
  • MySQL主從架構中的Seconds_Behind_Master指標問題解析

    MySQL主從架構中的Seconds_Behind_Master指標問題解析

    Seconds_Behind_Master 是 MySQL 提供的一個延遲指標,但其計算方式決定了它并不能完全反映真實延遲,本文給大家介紹MySQL主從架構中的Seconds_Behind_Master指標問題,感興趣的朋友跟隨小編一起看看吧
    2025-09-09
  • MySQL主從復制配置心跳功能介紹

    MySQL主從復制配置心跳功能介紹

    這篇文章主要介紹了MySQL主從復制配置心跳功能介紹,解決Slave has read all relay log; waiting for the slave I/O thread to update it問題,需要的朋友可以參考下
    2014-06-06
  • 為什么mysql自增主鍵不是連續(xù)的

    為什么mysql自增主鍵不是連續(xù)的

    在面試中被提問,mysql 中的 user 表的 id 默認是自增的,但是數(shù)據(jù)庫存儲的結果卻不是連續(xù)的,你知道是什么原因嗎,本文就詳細的介紹一下,感興趣的可以了解一下
    2021-09-09
  • MySQL事務與隔離級別的使用基礎理論

    MySQL事務與隔離級別的使用基礎理論

    這篇文章主要介紹了MySQL事務的隔離級別詳情,事務隔離級別越高,為避免沖突所花費的性能也就越多,即效率低。在“可重復讀”級別,實際上可以解決部分的虛讀問題,但是不能防止update更新產生的虛讀問題,要禁止虛讀產生,還是需要設置串行化隔離級別
    2023-02-02
  • ClickHouse使用MySQL數(shù)據(jù)庫引擎的實現(xiàn)

    ClickHouse使用MySQL數(shù)據(jù)庫引擎的實現(xiàn)

    MySQL 數(shù)據(jù)庫引擎是 ClickHouse 提供的一種集成引擎,這不是指 ClickHouse本身使用的存儲引擎,它允許你直接在 ClickHouse 中查詢存儲在遠程 MySQL 服務器上的數(shù)據(jù),下面就來詳細的介紹一下,感興趣的可以了解一下
    2026-01-01
  • linux下安裝mysql及mysql.sock問題

    linux下安裝mysql及mysql.sock問題

    最近在linux上裝mysql時遇到一些棘手的問題,百思不得其解,下面小編給大家?guī)砹薼inux下安裝mysql及mysql.sock問題,感興趣的朋友一起看看吧
    2018-03-03
  • MySQL分區(qū)表語法解讀

    MySQL分區(qū)表語法解讀

    MySQL分區(qū)表主要用于提高查詢效率,通過將數(shù)據(jù)分割成更小的部分進行管理,文章詳細介紹了如何創(chuàng)建、查詢、修改和存儲分區(qū)表,包括創(chuàng)建復合主鍵、按年份和月份分區(qū)、刪除分區(qū)、查詢分區(qū)數(shù)據(jù)以及利用存儲過程批量轉換非分區(qū)表為分區(qū)表等方法
    2025-02-02
  • 用SELECT... INTO OUTFILE語句導出MySQL數(shù)據(jù)的教程

    用SELECT... INTO OUTFILE語句導出MySQL數(shù)據(jù)的教程

    這篇文章主要介紹了用SELECT... INTO OUTFILE語句導出MySQL數(shù)據(jù)的教程,是MySQL入門學習中的基礎知識,需要的朋友可以參考下
    2015-05-05
  • MySQL中pt-table-checksum實現(xiàn)主從一致性校驗的終極方案

    MySQL中pt-table-checksum實現(xiàn)主從一致性校驗的終極方案

    pt-table-checksum 憑借低侵入性、高準確性和良好的兼容性,成為 MySQL 主從一致性校驗的首選工具,下面就來詳細的介紹一下MySQL中pt-table-checksum實現(xiàn)主從一致性校驗,感興趣的可以了解一下
    2026-04-04

最新評論

栾川县| 九江县| 奉节县| 长海县| 襄樊市| 青神县| 华蓥市| 东莞市| 泗水县| 乡宁县| 银川市| 会宁县| 盐山县| 正镶白旗| 郓城县| 扬州市| 怀来县| 武山县| 清远市| 塔河县| 霍城县| 凤山县| 平阴县| 禄劝| 琼海市| 讷河市| 攀枝花市| 弋阳县| 丽江市| 扎鲁特旗| 太原市| 南部县| 德安县| 松江区| 九龙县| 临沂市| 凯里市| 三河市| 龙海市| 巴中市| 离岛区|