Skip to content

[Feature][chunjun-connection]离线同步分库分表的mysql,配置文件增加正则表达式支持 #1084

@kinoxyz1

Description

@kinoxyz1

Search before asking

  • I had searched in the issues and found no similar feature requirement.

Description

当分库分表有很多张表的时候,希望能直接用正则匹配相应的数据库和表。

Use case

mysql 测试sql语句

-- 第一个mysql实例
create database kinodb_1;
create database kinodb_2;
create database kinodb_3;

create table kinodb_1.user_1(id int, name VARCHAR(200),address VARCHAR(200),phone_number VARCHAR(200), email VARCHAR(200), PRIMARY KEY (`id`));
create table kinodb_1.user_2(id int, name VARCHAR(200),address VARCHAR(200),phone_number VARCHAR(200), email VARCHAR(200), PRIMARY KEY (`id`));
create table kinodb_2.user_3(id int, name VARCHAR(200),address VARCHAR(200),phone_number VARCHAR(200), email VARCHAR(200), PRIMARY KEY (`id`));
create table kinodb_2.user_4(id int, name VARCHAR(200),address VARCHAR(200),phone_number VARCHAR(200), email VARCHAR(200), PRIMARY KEY (`id`));
create table kinodb_3.user_5(id int, name VARCHAR(200),address VARCHAR(200),phone_number VARCHAR(200), email VARCHAR(200), PRIMARY KEY (`id`));
create table kinodb_3.user_6(id int, name VARCHAR(200),address VARCHAR(200),phone_number VARCHAR(200), email VARCHAR(200), PRIMARY KEY (`id`));
create table kinodb_1.dep_1(id int, name VARCHAR(200),address VARCHAR(200),phone_number VARCHAR(200), email VARCHAR(200), PRIMARY KEY (`id`));
create table kinodb_1.dep_2(id int, name VARCHAR(200),address VARCHAR(200),phone_number VARCHAR(200), email VARCHAR(200), PRIMARY KEY (`id`));

insert into kinodb_1.user_1 values(1, 'kinodb_1.user_1', 'sz', '0123456789-1', 'user-1-email');
insert into kinodb_1.user_2 values(2, 'kinodb_1.user_2', 'sz', '0123456789-2', 'user-2-email');
insert into kinodb_2.user_3 values(3, 'kinodb_2.user_3', 'sz', '0123456789-3', 'user-3-email');
insert into kinodb_2.user_4 values(4, 'kinodb_2.user_4', 'sz', '0123456789-4', 'user-4-email');
insert into kinodb_3.user_5 values(5, 'kinodb_3.user_5', 'sz', '0123456789-5', 'user-5-email');
insert into kinodb_3.user_6 values(6, 'kinodb_3.user_6', 'sz', '0123456789-6', 'user-6-email');

insert into kinodb_1.dep_1 values(7, 'kinodb_1.dep_1', 'sz', '0123456789-7', 'user-7-email');
insert into kinodb_1.dep_2 values(8, 'kinodb_1.dep_2', 'sz', '0123456789-7', 'user-9-email');

-- 第二个mysql实例
create database kinodb_4;
create database kinodb_5;

create table kinodb_4.user_7(id int, name VARCHAR(200),address VARCHAR(200),phone_number VARCHAR(200), email VARCHAR(200), PRIMARY KEY (`id`));
create table kinodb_4.user_8(id int, name VARCHAR(200),address VARCHAR(200),phone_number VARCHAR(200), email VARCHAR(200), PRIMARY KEY (`id`));
create table kinodb_5.user_9(id int, name VARCHAR(200),address VARCHAR(200),phone_number VARCHAR(200), email VARCHAR(200), PRIMARY KEY (`id`));
create table kinodb_5.user_10(id int, name VARCHAR(200),address VARCHAR(200),phone_number VARCHAR(200), email VARCHAR(200), PRIMARY KEY (`id`));

insert into kinodb_4.user_7 values(9, 'kinodb_4.user_7', 'sz', '0123456789-9', 'user-9-email');
insert into kinodb_4.user_8 values(10, 'kinodb_4.user_8', 'sz', '0123456789-10', 'user-10-email');
insert into kinodb_5.user_9 values(11, 'kinodb_5.user_9', 'sz', '0123456789-11', 'user-11-email');
insert into kinodb_5.user_10 values(12, 'kinodb_5.user_10', 'sz', '0123456789-12', 'user-12-email');

chunjun配置文件

{
  "job": {
    "content": [
      {
        "reader": {
          "parameter": {
            "column": [
              {
                "name": "id",
                "type": "int"
              },
              {
                "name": "name",
                "type": "string"
              },
              {
                "name": "address",
                "type": "string"
              },
              {
                "name": "phone_number",
                "type": "string"
              },
              {
                "name": "email",
                "type": "string"
              }
            ],
            "connection": [
              {
                "password": "000000",
                "jdbcUrl": [
                  "jdbc:mysql://127.0.0.1:3306/mysql?useUnicode=true&characterEncoding=UTF-8&useSSL=false"
                ],
                "table": ["user_[0-9]+"],
                "username": "root",
                "schema": "kinodb_[0-9]+"
              },
              {
                "password": "111111",
                "jdbcUrl": [
                  "jdbc:mysql:/127.0.0.1:3307/mysql?useUnicode=true&characterEncoding=UTF-8&useSSL=false"
                ],
                "table": ["user_[0-9]+", "dep_1", "dep_2"],
                "username": "root",
                "schema": "kinodb_[0-9]+"
              }
            ]
          },
          "name": "mysqlmreader"
        },
        "writer": {
          "parameter": {
            "print": true
          },
          "name": "streamwriter"
        }
      }
    ],
    "setting": {
      "speed": {
        "readerChannel": 1,
        "writerChannel": 1,
        "channel": 1
      }
    }
  }
}

Related issues

No response

Are you willing to submit a PR?

  • Yes I am willing to submit a PR!

Code of Conduct

Metadata

Metadata

Assignees

Labels

feature-requestthis is a feature requests on the product

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions