作者 | 三线程序员

想用Apache SeaTunnel对接瀚高数据库该怎么配?本文分享实战经验,瀚高数据库基于PostgreSQL内核,直接用标准JDBC驱动即可连接。文中给出了瀚高MySQL模式读写PG模式、Doris数据迁移至瀚高的配置示例,操作顺畅。
1. 瀚高数据库简介
瀚高数据库(HighGo)是国产数据库厂商,基于PostgreSQL内核开发,专注于企业级应用。与KingBase的金仓数据库类似,都是PG系的国产化数据库。
瀚高特点:
- 完全兼容PostgreSQL协议
- 国产化适配,有政府信创清单认证
- 提供标准PostgreSQL驱动,无需额外驱动
- 支持多种部署模式(单机、主备、分布式)
瀚高也有PG和MySQL模式,兼容性比较好。就直接当PG和MySQL用就是,jdbc和Navicat 就直接连就行了,唯一需要注意的是Navicat 的低版本连瀚高MySQL时,有时候需要配置一下某个参数“客户端驱动程序”选择旧版,否则打开表时会报什么奇怪怕错误。
2. 瀚高读写实战
2.1 从瀚高MySQL模式读数据写入瀚高PG模式
直接把配置信息复制到海豚的SeaTunnel节点里就行了。这里瀚高和人大金仓的MySQL兼容模式有所不同,瀚高就是当源生MySQL(jdbc驱动就是MySQL),而金仓需要使用PG驱动去读取MySQL兼容模式的数据内容(估计是底层做的MySQL兼容)。
env {
parallelism = 2
job.mode = "BATCH"
}
source {
Jdbc {
driver = "com.mysql.cj.jdbc.Driver"
url = "jdbc:mysql://192.168.0.110:3306/public"
user = "root"
password = "root"
query = "SELECT * FROM public.tb_dict;"
}
}
sink {
jdbc {
url = "jdbc:postgresql://192.168.0.119:5866/datadb"
driver = "org.postgresql.Driver"
user = "highgo"
password = "highgo"
# Automatically generate sql statements based on database table names
generate_sink_sql = true
database = datacenter
table = data_schema.dim_public_dict_info
schema_save_mode = "CREATE_SCHEMA_WHEN_NOT_EXIST"
field_ide="LOWERCASE"
data_save_mode="DROP_DATA"
}
}
丝一般顺滑.......
2.2. 为了信创要求
如果原有系统为非信创数据库,例如Apache Doris已经项目开发完毕了;上线时直接要求切换信创数据库,则可以使用SeaTunnel做为迁移工具,直接把Doris数据写回给信创DB。毕竟Doris 可不只是一个数据库,也叫数据引擎(大不了再把Doris的数据迁移完毕后再删除了)。活是糙了点......
env {
parallelism = 2
job.mode = "BATCH"
}
source {
Jdbc {
url = "jdbc:mysql://192.168.0.120:9030/data_statistics"
driver = "com.mysql.cj.jdbc.Driver"
connection_check_timeout_sec = 100
user = "root"
password = "root"
"table_list" = [{
"table_path" = "data_statistics.data_develop_data_source_yw"
}, {
"table_path" = "data_statistics.data_develop_data_source_type"
}, {
"table_path" = "data_statistics.data_develop_data_source_ip"
},
....
]
}
}
sink {
jdbc {
url = "jdbc:postgresql://192.168.0.119:5866/datadb"
driver = "org.postgresql.Driver"
user = "highgo"
password = "highgo"
# Automatically generate sql statements based on database table names
generate_sink_sql = true
database = datadb
table = "data_schema.${table_name}"
#field_ide = "LOWERCASE"
#schema_save_mode = "CREATE_SCHEMA_WHEN_NOT_EXIST"
data_save_mode = "DROP_DATA"
}
}
3、小结
仅以个人所在环境出发和感受来看,Doris+DolphinScheduler+SeaTunnel堪称数据读写”新三剑客“。日常DolphinScheduler加Doris就可以完成常见数据库的etl和加工工作,数据量不太大的情况下,Doris catalog就能搞定;如果catalog映射不了(如xxx的MySQL模式一般还都不行...),或者比较个性的数据库再用上SeaTunnel做为兜底神器。