欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

一、JDBC Catalog 聯(lián)邦查詢(xún)方案(適合跨庫(kù)實(shí)時(shí)查詢(xún))

1. 方案概述

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

2. 環(huán)境要求

組件版本要求說(shuō)明
Doris1.2.0+支持 JDBC Catalog 功能
MySQLMySQL 5.7, 8.0 或更高版本需開(kāi)啟遠(yuǎn)程訪問(wèn)權(quán)限
MySQL JDBC8.0.28+驅(qū)動(dòng)下載:MySQL JDBC 驅(qū)動(dòng)

3. 實(shí)施步驟

3.1 安裝 JDBC 驅(qū)動(dòng)(所有 FE/BE 節(jié)點(diǎn))

步驟 1:創(chuàng)建驅(qū)動(dòng)目錄

mkdir -p /your_path/doris/jdbc_drivers 

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

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

jdbc_drivers_dir = /opt/doris/jdbc_drivers 

步驟 4:重啟服務(wù)

# 重啟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 客戶(hù)端連接 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ù)庫(kù)(如jdbc:mysql://host:port/dbname)。

driver_url:驅(qū)動(dòng)文件名,需與/opt/doris/jdbc_drivers目錄下的文件一致,默認(rèn)就是/your_path/doris/jdbc_drivers 。

3.3 創(chuàng)建查詢(xún)或者導(dǎo)入

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

-- 直接查詢(xún)mysql表 
SELECT * FROM mysql_catalog.mysql_db.user_table LIMIT 10; 
-- 與Doris表關(guān)聯(lián)查詢(xú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ù)導(dǎo)入

-- 建表
create table as select  mysql_catalog.mysql_db.user_table
-- 導(dǎo)入
insert into doris_table select * from mysql_catalog.mysql_db.user_table

4. 注意事項(xiàng)

數(shù)據(jù)類(lèi)型映射
MySQL 的BIT類(lèi)型映射為 Doris 的STRING,需在查詢(xún)時(shí)轉(zhuǎn)換(如CAST(bit_col AS BOOLEAN))。
大字段類(lèi)型(如BLOB)建議通過(guò)VARCHAR映射,避免查詢(xún)性能問(wèn)題。

權(quán)限控制
為 Doris 創(chuàng)建專(zhuān)用 MySQL 用戶(hù),僅授予SELECT權(quán)限,避免數(shù)據(jù)泄露。
在 Doris 中通過(guò)GRANT語(yǔ)句限制外部表訪問(wèn)權(quán)限。

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

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

1. 方案概述

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

2. 環(huán)境要求

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

3. 實(shí)施步驟

3.1 配置 MySQL 開(kāi)啟 Binlog

步驟 1:編輯 my.cnf

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

步驟 2:重啟 MySQL 服務(wù)

sudo systemctl restart mysqld 

3.2 部署 Canal 服務(wù)

步驟 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 

關(guān)鍵配置

canal.instance.master.address=192.168.1.100:3306   # MySQL地址 
canal.instance.dbUsername=canal                  # 具有Binlog讀取權(quán)限的用戶(hù) 
canal.instance.dbPassword=canal                  # 用戶(hù)密碼 
canal.destination=demo                           # Instance名稱(chēng) 

步驟 3:?jiǎn)?dòng) Canal

sh bin/startup.sh 
# 驗(yàn)證日志:cat logs/demo/demo.log,顯示"start successful"表示啟動(dòng)成功 

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

步驟 1:創(chuàng)建 Doris 目標(biāo)表(需開(kāi)啟 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服務(wù)器IP 
   "canal.server.port" = "11111",         # Canal默認(rèn)端口 
   "canal.destination" = "demo",          # Canal Instance名稱(chēng) 
   "canal.username" = "canal", 
   "canal.password" = "canal", 
   "sync.mode" = "incremental"            # 增量同步模式 
); 

4. 注意事項(xiàng)

權(quán)限要求:需為 Canal 創(chuàng)建專(zhuān)用用戶(hù)(如 canal),并授予REPLICATION SLAVE權(quán)限:

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

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

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

1. 方案概述

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

2. 環(huán)境要求

組件版本要求說(shuō)明
Flink1.13+支持 Flink CDC 2.0+
Doris1.2.0+支持 Delete 操作
依賴(lài)庫(kù)flink-cdc-2.1.0, flink-doris-connector-1.1.0需下載對(duì)應(yīng)版本 JAR 包

3. 實(shí)施步驟

3.1 構(gòu)建 Flink 作業(yè)

步驟 1:添加 Maven 依賴(lài)

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

步驟 2:編寫(xiě) 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目標(biāo)表 
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_' 
); 
-- 啟動(dòng)數(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. 注意事項(xiàng)

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

寫(xiě)入機(jī)制:開(kāi)啟 Flink Checkpoint,Doris Flink Connector 提供了兩種攢批模式,默認(rèn)使用基于 Flink Checkpoint 的流式寫(xiě)入方式。

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

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

1. 方案概述

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

2. 環(huán)境要求

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

3. 實(shí)施步驟

3.1 安裝 Datax

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

3.2 編寫(xiě)同步配置文件

創(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í)行同步任務(wù)

python bin/datax.py mysql_to_doris.json

4. 注意事項(xiàng)

數(shù)據(jù)類(lèi)型映射:確保 MySQL 與 Doris 字段類(lèi)型兼容,如 MySQL 的DATETIME對(duì)應(yīng) Doris 的DATETIME,避免類(lèi)型轉(zhuǎn)換錯(cuò)誤。

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

五、方案對(duì)比與選型建議

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

優(yōu)先選擇 JDBC Catalog:當(dāng)需要快速驗(yàn)證跨庫(kù)查詢(xún)功能,或需要與 Doris 本地表進(jìn)行關(guān)聯(lián)分析時(shí)。

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

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

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

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

全量初始化與增量同步結(jié)合

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

數(shù)據(jù)類(lèi)型兼容性測(cè)試

重點(diǎn)驗(yàn)證 MySQL 的ENUM、SET、BIT等類(lèi)型在 Doris 中的映射是否符合預(yù)期。

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

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

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

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

相關(guān)文章

  • mysql 操作總結(jié) INSERT和REPLACE

    mysql 操作總結(jié) INSERT和REPLACE

    用于操作數(shù)據(jù)庫(kù)的SQL一般分為兩種,一種是查詢(xún)語(yǔ)句,也就是我們所說(shuō)的SELECT語(yǔ)句,另外一種就是更新語(yǔ)句,也叫做數(shù)據(jù)操作語(yǔ)句。
    2009-07-07
  • mysql過(guò)濾復(fù)制思路詳解

    mysql過(guò)濾復(fù)制思路詳解

    這篇文章主要介紹了mysql過(guò)濾復(fù)制的實(shí)現(xiàn)思路,主要講解了兩種思路,一種是在主庫(kù)的binlog上實(shí)現(xiàn)另一種是從庫(kù)的sql線程上實(shí)現(xiàn),具體實(shí)現(xiàn)過(guò)程跟隨小編一起看看吧
    2021-08-08
  • MySQL提高分頁(yè)效率

    MySQL提高分頁(yè)效率

    本文分享的這段代碼是大數(shù)據(jù)量時(shí)提高分頁(yè)的效率的測(cè)試代碼,感興趣的小伙伴可以參考一下
    2015-10-10
  • Mysql服務(wù)器的啟動(dòng)與停止(二)

    Mysql服務(wù)器的啟動(dòng)與停止(二)

    Mysql服務(wù)器的啟動(dòng)與停止(二)...
    2006-11-11
  • ADODB 入門(mén)

    ADODB 入門(mén)

    ADODB 入門(mén)...
    2006-12-12
  • MySQL中一條update語(yǔ)句是如何執(zhí)行的

    MySQL中一條update語(yǔ)句是如何執(zhí)行的

    這篇文章主要給大家介紹了關(guān)于MySQL中一條update語(yǔ)句是如何執(zhí)行的相關(guān)資料,由于update涉及到數(shù)據(jù)的修改,所以很容易推斷,update語(yǔ)句比select語(yǔ)句會(huì)更復(fù)雜一些,需要的朋友可以參考下
    2022-03-03
  • linux環(huán)境下安裝mysql數(shù)據(jù)庫(kù)的詳細(xì)教程

    linux環(huán)境下安裝mysql數(shù)據(jù)庫(kù)的詳細(xì)教程

    這篇文章主要介紹了linux環(huán)境下安裝mysql數(shù)據(jù)庫(kù)的詳細(xì)教程,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-06-06
  • MySQL 8.4版本離線部署的實(shí)現(xiàn)

    MySQL 8.4版本離線部署的實(shí)現(xiàn)

    本文主要介紹了MySQL 8.4版本離線部署的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2024-07-07
  • mysql5.7.18.zip免安裝版本配置教程(windows)

    mysql5.7.18.zip免安裝版本配置教程(windows)

    這篇文章主要為大家詳細(xì)介紹了mysql5.7.18.zip安裝教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • mysql查找刪除表中重復(fù)數(shù)據(jù)方法總結(jié)

    mysql查找刪除表中重復(fù)數(shù)據(jù)方法總結(jié)

    在本篇文章中小編給大家整理了關(guān)于mysql查找刪除表中重復(fù)數(shù)據(jù)方法和相關(guān)知識(shí)點(diǎn),需要的朋友們參考下。
    2019-05-05

最新評(píng)論