跳到主要内容
跳到主要内容

Mysql to Doris

Mysql to Doris

这是一个通过集合了 odbc 外部表创建、内部表创建以及数据同步等功能来帮助 MySQL 用户使用 Doris 的易用工具。

mysql to doris 代码这里

目录结构

├── bin
│ └── run.sh
├── conf
│ ├── doris_external_tables
│ ├── doris_tables
│ ├── env.conf
│ └── mysql_tables
└── lib
├── jdbc
│ ├── create_jdbc_catalog.sh
│ └── sync_to_doris.sh
├── e_auto.sh
├── e_mysql_to_doris.sh
├── get_tables.sh
├── mysql_to_doris.sh
├── mysql_type_convert.sh
├── sync_check.sh
└── sync_to_doris.sh

配置信息

所有配置文件都在conf目录下。

env.conf

在这里配置 MySQL 和 Doris 的相关配置信息。

# doris env
# doris env
fe_master_host=<your_fe_master_host>
fe_master_port=<your_fe_master_query_port>
doris_username=<your_doris_username>
doris_password=<your_doris_password>
doris_odbc_name=<your_doris_odbc_driver_name>
doris_jdbc_catalog=<jdbc_catalog_name>
doris_jdbc_default_db=<jdbc_default_database>
doris_jdbc_driver_url=<jdbc_driver_url>
doris_jdbc_driver_class=<jdbc_driver_class>

# mysql env
mysql_host=<your_mysql_host>
mysql_port=<your_mysql_port>
mysql_username=<your_mysql_username>
mysql_password=<your_mysql_password>

mysql_tables

在这里配置 MySQL 表信息,以database.table的形式。

db1.table1
db1.table2
db2.table3

doris_tables

在这里配置 Doris Olap 表信息,以database.table的形式。

doris_db.table1
doris_db.table2
doris_db.table3

doris_external_tables

在这里配置 Doris ODBC 外部表信息,以database.table的形式。

doris_db.e_table1
doris_db.e_table2
doris_db.e_table3

如何使用

bin/run.sh 是启动的 shell 脚本,下面是脚本的参数选项:

Usage: run.sh [option]
-e, --create-external-table: create doris external table
-o, --create-olap-table: create doris olap table
-i, --insert-data: insert data into doris olap table from doris external table
-d, --drop-external-table: drop doris external table
-a, --auto-external-table: create doris external table and auto check mysql schema change
--database: specify the database name to process all tables under the entire database, and separate multiple databases with ","
-t, --type: specify external table type, valid options: ODBC(default), JDBC
-h, --help: show usage

创建 Doris ODBC 外部表

使用方法如下:

sh bin/run.sh --create-external-table

或者

sh bin/run.sh -e

执行完成后 ODBC 外部表就创建完成,同时建表语句会被生成到result/mysql/e_mysql_to_doris.sql文件中。

创建 Doris OLAP 表

使用方法如下:

sh bin/run.sh --create-olap-table

或者

sh bin/run.sh -o

执行完成后 ODBC OLAP 表就创建完成,同时建表语句会被生成到result/mysql/mysql_to_doris.sql文件中。

如果设置 --type 选项为 JDBC,则会创建 JDBC Catalog,同时创建语句语句会被生成到 result/mysql/jdbc_catalog.sql 文件中。

创建 Doris OLAP 表同时从外部同步数据

前提是你已经创建外部表(JDBC 方式则为 JDBC Catalog),如果没有,请先创建。

使用方法如下:

sh bin/run.sh --create-olap-table --insert-data

或者

sh bin/run.sh -o -i

执行完成后 ODBC OLAP 表就创建完成,同时建表语句会被生成到result/mysql/mysql_to_doris.sql文件中,并且同步语句会被生成到result/mysql/sync_to_doris.sql文件中。

同步结果检查

同步数据之后会执行同步结果检查任务,对olap表和mysql表的数据量进行对比,检查结果保存在 result/mysql/sync_check 文件中。

删除 ODBC 外部表

如果在数据同步执行完成后想要删除 ODBC 外部表,添加--drop-external-table-d选项。

使用方式如下:

sh bin/run.sh --create-olap-table --insert-data --drop-external-table

或者

sh bin/run.sh -o -i -d

此选项只当 --typeODBC 时有效。

创建 Doris OLAP 表并且自动同步表结构变化

使用方式如下:

sh bin/run.sh --auto-external-table

或者

sh bin/run.sh -a

程序会在后台执行,进程 ID 被保存到e_auto.pid文件。

通过指定数据库来处理

如果你的表比较多,并且不需要自定义doris表名,可以通过--databases选项指定要处理的数据库名,无需手动配置。

使用方式如下:

# 单个数据库
sh bin/run.sh --databases db1

或者

# 多个数据库 
sh bin/run.sh --databases db1,db2,db3

通过这个选项,程序会自动获取mysql指定数据库下的全部表,并生成mysql_tables, doris_tables和doris_external_tables的配置。

请注意,该选项需要配合其他选项一起使用。