Doris:MySQL数据同步到Doris的N种方式
作者:mmseoamin日期:2023-12-18

目录

1.CSV文件方式

1.1 导出mysql数据

1.2 导入数据

2.JDBC 编码方式

3.JDBC Catalog 方式

3.1 上传mysql驱动包

3.2 创建mysql catalog

3.3. 插入数据

4.Binlog Load 方式


1.CSV文件方式

        当mysql与doris服务之间无法通过网络互联时,可以通过将mysql数据导出成csv文件,然后再在doris服务器导入csv文件的方式进行同步数据。

1.1 导出mysql数据

使用select * into outfile 命令导出csv数据

select * into outfile 'F:\\24\\mysql\\dim_area.csv' fields terminated by '\t' lines terminated by '\n' from dim_area;

Doris:MySQL数据同步到Doris的N种方式,第1张     导出的文件格式如下:

Doris:MySQL数据同步到Doris的N种方式,第2张

   需要在mysql的配置文件中设置secure_file_priv=导出的文件路径,如上面案例中F:/24/mysql,才能导出文件。

1.2 导入数据

        将mysql导出的csv文件上传到doris服务器之后,可以通过Stream Load和MySQL Load两种方式导入数据进doris数据库中。

1)Stream Load导入

        Stream load 是一个同步的导入方式,用户通过发送 HTTP 协议发送请求将本地文件或数据流导入到 Doris 中。可以通过 HTTP 协议提交导入命令。

 curl --location-trusted -u root -T /home/weisx/opt/doris/local_import_data/dim_area.csv -H "columns:id,level,parent_code,area_code,name,short_name,merger_name,pinyin,lng,lat,pcode,ccode,acode,tcode,vcode" -H "label:label_dim_area" -H "column_separator:\t" -H "format:csv" http://localhost:8030/api/demo/dim_area/_stream_load

Doris:MySQL数据同步到Doris的N种方式,第3张

Doris:MySQL数据同步到Doris的N种方式,第4张

2)MySQL Load导入

        MySql load 主和Stream Load功能相似, 都是导入本地文件到Doris集群中, 因此MySQL Load实现复用了StreamLoad的基础导入能力。执行MySQL Load语句的时候, 客户端命令必须带有--local-infile参数, 同时还需要设置FE的配置mysql_load_server_secure_path开启服务端导入功能。

mysql -u root -p -P9030 -h127.0.0.1 --local-infile=1

LOAD DATA INFILE '/home/hadoop/opt/data_doris/dim_area.csv' INTO TABLE article.dim_area COLUMNS TERMINATED BY '\t';

Doris:MySQL数据同步到Doris的N种方式,第5张

2.JDBC 编码方式

        通过编程方式,利用jdbc读取mysql中的数据,然后可以通过jdbc或者Stream Load方式插入数据到doris中。Stream Load java代码实现可参考:Doris:StreamLoad导入数据-CSDN博客

3.JDBC Catalog 方式

        JDBC Catalog 通过标准 JDBC 协议,连接其他数据源。连接后,Doris 会自动同步数据源下的 Database 和 Table 的元数据,以便快速访问这些外部数据。

3.1 上传mysql驱动包

        需将 Jar 包预先存放在 FE 和 BE 部署目录的 jdbc_drivers/ 目录下。系统会自动在这个目录下寻找。该目录的位置,也可以由 fe.conf 和 be.conf 中的 jdbc_drivers_dir 配置修改。

Doris:MySQL数据同步到Doris的N种方式,第6张

修改fe和be配置文件,指定jdbc_drivers_dir目录。

Doris:MySQL数据同步到Doris的N种方式,第7张

3.2 创建mysql catalog

####mysql 8

CREATE CATALOG jdbc_mysql_233_8 PROPERTIES (

    "type"="jdbc",

    "user"="root",

    "password"="123456",

    "jdbc_url" = "jdbc:mysql://192.168.110.233:3307/demo",

    "driver_url" = "mysql-connector-java-8.0.30.jar",

    "driver_class" = "com.mysql.cj.jdbc.Driver"

)

####mysql 5

CREATE CATALOG jdbc_mysql_233_5  PROPERTIES (

    "type"="jdbc",

    "user"="root",

    "password"="123456",

    "jdbc_url" = "jdbc:mysql://192.168.110.233:3306/demo",

    "driver_url" = "mysql-connector-java-5.1.47.jar",

    "driver_class" = "com.mysql.jdbc.Driver"

)

Doris:MySQL数据同步到Doris的N种方式,第8张

3.3. 插入数据

insert into internal.demo.dim_area select * from demo.dim_area

Doris:MySQL数据同步到Doris的N种方式,第9张

4.Binlog Load 方式

        Binlog Load提供了一种使Doris增量同步用户在Mysql数据库的对数据更新操作的CDC(Change Data Capture)功能。需要安装Canal采集mysql实时日志信息。

        具体操作可以参考:Doris:Binlog Load导入数据-CSDN博客