目录
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;
导出的文件格式如下:
需要在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
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';
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 配置修改。
修改fe和be配置文件,指定jdbc_drivers_dir目录。
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"
)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"
)
3.3. 插入数据
insert into internal.demo.dim_area select * from demo.dim_area
4.Binlog Load 方式
Binlog Load提供了一种使Doris增量同步用户在Mysql数据库的对数据更新操作的CDC(Change Data Capture)功能。需要安装Canal采集mysql实时日志信息。
具体操作可以参考官网:Binlog Load - Apache Doris