信创迁移神器!Apache SeaTunnel 搞定瀚高数据库读写一把过

3 阅读3分钟

作者 | 三线程序员

想用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做为兜底神器。