更新时间:2024-10-23 GMT+08:00
分享

开始使用

验证DataX迁移服务正常运行

  • 有关DataX中间件说明请参考DataX开源地址
  • 该解决方案使用的资源版本:Java版本:JDK-22。
  • 请参考添加安全组规则,配置对应数据库服务器IP地址白名单,以便能正常使用服务。
  • 注意:该服务分为新建VPC和已有VPC两个版本,保证DataX服务器和目标数据库服务器在一个子网下,实现私网的连接与访问,提高迁移数据的安全性。
  1. 登录Flexus云服务器X实例控制台,选择创建的云服务器,单击远程登录,进入Linux云服务器。

    图1 登录云服务器

    图2 登录Flexus云服务器

  2. 在Linux云服务器中输入账号和密码后回车。
  3. 输入命令:cd /opt/datax进入该目录,执行python3 bin/datax.py job/job.json查看回显,如回显为下图红框所示,则表示datax服务成功搭建。

    图3 执行datax运行命令

    图4 查看执行回显

简介DataX迁移配置模板文件生成

  • DataX的数据同步工作,需要使用json文件来保存配置信息。配置writer、reader等信息,我们可以使用命令来生成一份配置的json模板,在这个模板上进行修改,生成最终的json文件。
  • 注意:目标数据库writer配置中的jdbcUrl字段值为字符串。

  1. 运行如下命令生成模板文件,将其中的{reader}替换成自己想要的reader组件名字,将其中的{writer}替换成自己想要的writer组件名字。

    python3  bin/datax.py  -r {reader} -w {writer}

    支持的reader:

    cassandrareader  drdsreader  hbase094xreader  hbase20xsqlreader  loghubreader  oceanbasev10reader  oraclereader  otsstreamreader  sqlserverreader  tdenginereader  clickhousereader  ftpreader  hbase11xreader  hdfsreader  mongodbreader  odpsreader  ossreader  postgresqlreader  starrocksreader  tsdbreader  datahubreader  gdbreader  hbase11xsqlreader  kingbaseesreader  mysqlreader  opentsdbreader  otsreader  rdbmsreader  streamreader  txtfilereader

    支持的writer:

    adbpgwriter  databendwriter  elasticsearchwriter  hbase11xsqlwriter  hologresjdbcwriter  mongodbwriter  ocswriter  osswriter  selectdbwriter  tdenginewriter  adswriter  datahubwriter  ftpwriter  hbase11xwriter  kingbaseeswriter  mysqlwriter  odpswriter  otswriter  sqlserverwriter  tsdbwriter  cassandrawriter  doriswriter  gdbwriter  hbase20xsqlwriter  kuduwriter  neo4jwriter  oraclewriter  postgresqlwriter  starrockswriter  txtfilewriter  clickhousewriter  drdswriter  hbase094xwriter  hdfswriter  loghubwriter  oceanbasev10writer  oscarwriter  rdbmswriter  streamwriter

    以MySQL迁移SQL Server为例,运行如下命令生成模板,红色字典区域为json数据模板:

    python3  bin/datax.py  -r mysqlreader -w sqlserverwriter
    图5 生成模板

  2. 模板字段简介

    1. job
      • 配置文件的主要对象,包含整个数据迁移任务的配置信息。
    2. setting
      • 位于job对象下,用于设置数据迁移任务的全局参数,如并发通道数(channel),该参数决定了DataX在执行数据迁移时使用的并行线程数。
    3. content
      • 位于job对象下,是一个数组,包含多个数据迁移任务的具体配置。每个任务都包含reader和writer两个部分。
    4. reader
      • 位于content数组的每个对象中,用于配置数据源读取器。
        • name:读取器的名称,如mysqlreader表示MySQL数据源读取器。
        • parameter:读取器的参数配置,包含数据源连接信息、要读取的字段等。
          • username:数据源的用户名。
          • password:数据源的密码。
          • column:要读取的字段列表。
          • connection:数据源连接信息,包括JDBC URL和要读取的表名等。
    5. writer
      • 位于content数组的每个对象中,用于配置目标数据库写入器。
        • name:写入器的名称,如sqlserverwriter表示SQL Server目标数据库写入器。
        • parameter:写入器的参数配置,包含目标数据库连接信息、要写入的字段等。
          • username:目标数据库的用户名。
          • password:目标数据库的密码。
          • column:要写入的字段列表,应与数据源读取器中的字段列表对应。
          • postSql:写入数据到目的表后,会执行这里的标准语句。
          • preSql:写入数据到目的表前,会先执行这里的标准语句,例如:清空表数据。
          • connection:目标数据库连接信息,包括JDBC URL和要写入的表名等。
    图6 模板示例:
    {
      "job": {
        "setting": {
          "speed": {
            "channel": "4"
          }
        },
        "content": [
          {
            "reader": {
              "name": "mysqlreader",
              "parameter": {
                "username": "mysql_user",
                "password": "mysql_password",
                "column": ["id", "name", "age"],
                "connection": [
                  {
                    "jdbcUrl": ["jdbc:mysql://localhost:3306/source_db"],
                    "table": ["source_table"]
                  }
                ]
              }
            },
            "writer": {
              "name": "sqlserverwriter",
              "parameter": {
                "username": "sqlserver_user",
                "password": "sqlserver_password",
                "column": ["id", "name", "age"],
                "connection": [
                  {
                    "jdbcUrl": "jdbc:sqlserver://localhost:1433;databaseName=target_db",
                    "table": ["target_table"]
                  }
                ]
              }
            }
          }
        ]
      }
    }

数据库MySQL迁移MySQL操作验证

  • 源端数据库服务器 和 目标数据库服务器,分别需对DataX服务器开放对应数据库3306访问端口,请参考修改安全组规则,配置IP地址白名单,以便DataX服务可以连接源端和目标端数据库。
  • 目标端数据库如果和DataX数据库在同一子网下,模板中目标端数据库可配置私网。
  • 注意:DataX迁移数据库时,reader、writer插件要匹配数据库的版本,DataX服务对应数据库的reader插件路径在DataX工作目录下的plugin/reader/{reader}}/libs下,writer插件路径在DataX工作目录下的plugin/writer/{writer}}/libs下。
  • 本次以MySQL-8.0.39版本示例测试数据库迁移同步。
  1. 迁移前的源端和目标端的数据库、表信息展示。

    图7 源端数据库、表数据
    图8 目标端数据库、表数据

  2. 迁移Json模板配置(读取源端数据库表中的id,name部分字段信息,迁移到目的端数据库)

    图9 Json迁移模板

  3. 输入命令:cd /opt/datax进入该目录,执行python3 bin/datax.py mysql2mysql.json,查看服务迁移结果。

    图10 查看执行结果
    图11 查看目的端数据库写入情况

数据库MySQL迁移Oracle操作验证

  • 源端数据库服务器需对DataX服务器开放对应数据库3306访问端口,目标端数据库服务器需对DataX服务器开放对应数据库1521访问端口,请参考修改安全组规则,配置IP地址白名单,以便DataX服务可以连接源端和目标端数据库。
  • 目标端数据库如果和DataX数据库在同一子网下,模板中目标端数据库可配置私网。
  • 注意:DataX迁移数据库时,reader、writer插件要匹配数据库的版本,DataX服务对应数据库的reader插件路径在DataX工作目录下的plugin/reader/{reader}}/libs下,writer插件路径在DataX工作目录下的plugin/writer/{writer}}/libs下。
  • 本次以MySQL-8.0.39,Oracle-19c版本示例测试异构数据库迁移同步。
  1. 迁移前的源端和目标端的数据库、表信息展示。

    图12 源端数据库、表数据
    图13 目标端数据库、表数据

  2. 迁移Json模板配置(读取源端数据库表中的id,name部分字段信息,迁移到目的端Oracle数据库)

    图14 Json迁移模板

  3. 输入命令:cd /opt/datax进入该目录,执行python3 bin/datax.py mysql2oracle.json,查看服务迁移结果。

    图15 查看执行结果
    图16 查看目的端数据库写入情况

相关文档