Skip to content

MySQL Writer

MySQL Writer 插件实现了写入数据到 MySQL 目的表的功能。

示例

假定要写入的 MySQL 表建表语句如下:

create table test.addax_tbl ( col1 varchar(20) , col2 int(4), col3 datetime, col4 boolean, col5 binary ) default charset utf8;

这里使用一份从内存产生到 MySQL 导入的数据。

json
{
  "job": {
    "setting": {
      "speed": {
        "channel": 1,
        "bytes": -1
      }
    },
    "content": {
      "reader": {
        "name": "streamreader",
        "parameter": {
          "column": [
            {
              "value": "Addax",
              "type": "string"
            },
            {
              "value": 19880808,
              "type": "long"
            },
            {
              "value": "1988-08-08 08:08:08",
              "type": "date"
            },
            {
              "value": true,
              "type": "bool"
            },
            {
              "value": "test",
              "type": "bytes"
            }
          ],
          "sliceRecordCount": 1000
        }
      },
      "writer": {
        "name": "mysqlwriter",
        "parameter": {
          "writeMode": "insert",
          "username": "root",
          "password": "",
          "column": [
            "*"
          ],
          "session": [
            "set session sql_mode='ANSI'"
          ],
          "preSql": [
            "delete from @table"
          ],
          "connection": {
            "jdbcUrl": "jdbc:mysql://127.0.0.1:3306/test?useSSL=false",
            "table": [
              "addax_tbl"
            ]
          }
        }
      }
    }
  }
}

将上述配置文件保存为 job/stream2mysql.json

执行采集命令

执行以下命令进行数据采集

bash
bin/addax.sh job/stream2mysql.json

参数说明

该插件基于 RDBMS Writer 实现,因此可以参考 RDBMS Writer 的所有配置项,并且增加了一些 MySQL 特有的配置项。

配置项是否必须类型默认值描述
writeModestringinsert数据写入表的方式,详见下文
batchSizeint1024定义了插件和数据库服务器端每次批量数据获取条数

driver

当前采用的 MySQL JDBC 驱动为 8.0 以上版本,驱动类名使用的 com.mysql.cj.jdbc.Driver,而不是 com.mysql.jdbc.Driver。 如果你需要采集的 MySQL 服务低于 5.6,需要使用到 Connector/J 5.1 驱动,则可以采取下面的步骤:

  1. 替换插件内置的驱动 rm -f plugin/writer/mysqlwriter/libs/mysql-connector-java-*.jar

  2. 拷贝老的驱动到插件目录 cp mysql-connector-java-5.1.48.jar plugin/writer/mysqlwriter/libs/

  3. 指定驱动类名称 在你的 json 文件类,配置 "driver": "com.mysql.jdbc.Driver"

writeMode

  • insert 表示采用 insert into
  • replace表示采用replace into方式
  • update 表示采用 ON DUPLICATE KEY UPDATE 语句