• OceanBase Docker安装体验:https://www.xmmup.com/oceanbase-dockeranzhuangtiyan.html
  • 手动部署 OceanBase 单副本集群:https://www.xmmup.com/shoudongbushu-oceanbase-danfubenjiqun.html
  • 手动部署 OceanBase 三副本集群(在同一个节点):https://www.xmmup.com/shoudongbushu-oceanbase-sanfubenjiqunzaitongyigejiedian.html
  • 使用OBD部署一个OceanBase 三副本集群并使用Promethues监控OB(在不同节点):https://www.xmmup.com/shiyongobdbushuyigeoceanbase-sanfubenjiqunbingshiyongpromethuesjiankongobzaibutongjiedian.html

说明

相关连接:

https://open.oceanbase.com/blog/10900159

https://open.oceanbase.com/answer/detail?id=20400030

练习目的

本次练习目的掌握从 MySQL 向 OceanBase 迁移数据的基本方法:mysqldump、datax 、canal 等。

练习条件

  • 有 服务器,内存资源至少 12G*1台 ,部署有 OceanBase 集群。
  • 有 mysql 数据库,有少量业务表和数据(数据量不要求很多)。没有业务表和数据的就推荐使用 sysbench、 tpcc 或者 tpch 的业务数据。

练习内容

请记录并分享下列内容:

  • (必选)使用 mysqldump 将 mysql的表结构和数据同步到 OceanBase 的MySQL 租户中。
  • (必选)使用 datax 配置至少一个表的 MySQL 到 OceanBase 的 MySQL 租户的离线同步。
  • (可选)使用 datax 配置至少一个表的 OceanBase 到 CSV 以及 CSV 到 OceanBase 的离线同步。
  • (可选)使用 canal 配置 MySQL 的增量同步到 OceanBase 的 MySQL 租户。

使用 mysqldump 将 mysql的表结构和数据同步到 OceanBase 的MySQL 租户中

源库:MySQL 5.7.36,IP地址:172.17.0.3,数据库:sbtest,10张表,每张表10万行数据

目标库:OB 3.1.1,IP地址:172.17.0.2,数据库:sbtest,租户:obmysql

使用sysbench给mysql环境生成数据

[root@docker35 ~]# mysql -uroot -plhr -h172.17.0.3
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.36-log MySQL Community Server (GPL)Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.mysql>
mysql> create database sbtest;
Query OK, 1 row affected (0.06 sec)Bye[root@docker35 ~]# sysbench /usr/share/sysbench/oltp_common.lua --time=300 --mysql-host=172.17.0.3 --mysql-port=3306 --mysql-user=root --mysql-password=lhr --mysql-db=sbtest --table-size=100000 --tables=10 --threads=16 --events=999999999   prepare
sysbench 1.0.20 (using bundled LuaJIT 2.1.0-beta2)Initializing worker threads...Creating table 'sbtest8'...
Creating table 'sbtest1'...
Creating table 'sbtest7'...
Creating table 'sbtest6'...
Creating table 'sbtest5'...
Creating table 'sbtest3'...
Creating table 'sbtest9'...
Creating table 'sbtest4'...
Creating table 'sbtest10'...
Creating table 'sbtest2'...
Inserting 100000 records into 'sbtest7'
Inserting 100000 records into 'sbtest2'
Inserting 100000 records into 'sbtest3'
Inserting 100000 records into 'sbtest9'
Inserting 100000 records into 'sbtest5'
Inserting 100000 records into 'sbtest6'
Inserting 100000 records into 'sbtest10'
Inserting 100000 records into 'sbtest1'
Inserting 100000 records into 'sbtest4'
Inserting 100000 records into 'sbtest8'
Creating a secondary index on 'sbtest2'...
Creating a secondary index on 'sbtest7'...
Creating a secondary index on 'sbtest3'...
Creating a secondary index on 'sbtest9'...
Creating a secondary index on 'sbtest10'...
Creating a secondary index on 'sbtest5'...
Creating a secondary index on 'sbtest6'...
Creating a secondary index on 'sbtest8'...
Creating a secondary index on 'sbtest1'...
Creating a secondary index on 'sbtest4'...[root@docker35 ~]# mysql -uroot -plhr -h172.17.0.3
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 36
Server version: 5.7.36-log MySQL Community Server (GPL)Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.mysql> use sbtest;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -ADatabase changed
mysql> show tables;
+------------------+
| Tables_in_sbtest |
+------------------+
| sbtest1          |
| sbtest10         |
| sbtest2          |
| sbtest3          |
| sbtest4          |
| sbtest5          |
| sbtest6          |
| sbtest7          |
| sbtest8          |
| sbtest9          |
+------------------+
10 rows in set (0.00 sec)mysql> select count(*) from sbtest1;
+----------+
| count(*) |
+----------+
|   100000 |
+----------+
1 row in set (0.04 sec)mysql> SELECT TABLE_NAME,DATA_LENGTH,INDEX_LENGTH,(DATA_LENGTH+INDEX_LENGTH) as length,TABLE_ROWS,concat(round((DATA_LENGTH+INDEX_LENGTH)/1024/1024,2), 'MB') as total_size -> FROM information_schema.TABLES -> WHERE TABLE_SCHEMA='sbtest' -> order by length desc-> ;
+------------+-------------+--------------+----------+------------+------------+
| TABLE_NAME | DATA_LENGTH | INDEX_LENGTH | length   | TABLE_ROWS | total_size |
+------------+-------------+--------------+----------+------------+------------+
| sbtest6    |    22593536 |      1589248 | 24182784 |      98712 | 23.06MB    |
| sbtest5    |    22593536 |      1589248 | 24182784 |      98712 | 23.06MB    |
| sbtest4    |    22593536 |      1589248 | 24182784 |      98712 | 23.06MB    |
| sbtest3    |    22593536 |      1589248 | 24182784 |      98712 | 23.06MB    |
| sbtest2    |    22593536 |      1589248 | 24182784 |      98712 | 23.06MB    |
| sbtest10   |    22593536 |      1589248 | 24182784 |      98712 | 23.06MB    |
| sbtest1    |    22593536 |      1589248 | 24182784 |      98712 | 23.06MB    |
| sbtest9    |    22593536 |      1589248 | 24182784 |      98712 | 23.06MB    |
| sbtest8    |    22593536 |      1589248 | 24182784 |      98712 | 23.06MB    |
| sbtest7    |    22593536 |      1589248 | 24182784 |      98712 | 23.06MB    |
+------------+-------------+--------------+----------+------------+------------+
10 rows in set (0.01 sec)

使用mysqldump导出

[root@docker35 soft]# mysqldump -uroot -plhr -h172.17.0.3 -P3306 --single-transaction --hex-blob --routines --events --triggers --master-data=2 --set-gtid-purged=OFF --databases sbtest --default-character-set=utf8  --max_allowed_packet=512M > sbtest.sql
mysqldump: [Warning] Using a password on the command line interface can be insecure.
[root@docker35 soft]# ll -h
total 315M
-rw-r--r-- 1 root root 7.9M Nov  5 09:10 obproxy-3.2.0-1.el7.x86_64.rpm
-rw-r--r-- 1 root root  47M Dec 31 17:57 oceanbase-ce-3.1.2-10000392021123010.el7.x86_64.rpm
-rw-r--r-- 1 root root 156K Dec 31 19:40 oceanbase-ce-libs-3.1.2-10000392021123010.el7.x86_64.rpm
-rw-r--r-- 1 root root  72M Dec 18 06:25 prometheus-2.32.1.linux-amd64.tar.gz
-rw-r--r-- 1 root root 189M Jan 10 15:38 sbtest.sql

使用source命令导入数据

OB的环境参考:https://www.xmmup.com/oceanbase-dockeranzhuangtiyan.html

[admin@0209306f10bf tmp]$  obclient -h 127.1 -uroot@obmysql#obce-single -P2883 -p -c -A test
Enter password:
Welcome to the OceanBase.  Commands end with ; or \g.
Your MySQL connection id is 10
Server version: 5.6.25 OceanBase 3.1.1 (r4-8c615943cbd25a6f7b8bdfd8677a13a21709a05e) (Built Oct 21 2021 10:52:05)Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.MySQL [test]> show databases;
+--------------------+
| Database           |
+--------------------+
| oceanbase          |
| information_schema |
| mysql              |
| test               |
| lhrdb              |
+--------------------+
5 rows in set (0.005 sec)MySQL [test]> source /tmp/sbtest.sql
Query OK, 0 rows affected (0.001 sec)ERROR 1064 (42000) at line 2 in file: '/tmp/sbtest.sql': You have an error in your SQL syntax; check the manual that corresponds to your OceanBase version for the right syntax to use near '--' at line 1
Query OK, 0 rows affected (0.001 sec)Query OK, 5258 rows affected (0.478 sec)
Records: 5258  Duplicates: 0  Warnings: 0
.....
Query OK, 0 rows affected (0.001 sec)Query OK, 5258 rows affected (0.456 sec)
Records: 5258  Duplicates: 0  Warnings: 0Query OK, 5258 rows affected (0.478 sec)
Records: 5258  Duplicates: 0  Warnings: 0MySQL [sbtest]>
MySQL [sbtest]>
MySQL [sbtest]> show databases;
+--------------------+
| Database           |
+--------------------+
| oceanbase          |
| information_schema |
| mysql              |
| test               |
| lhrdb              |
| sbtest             |
+--------------------+
6 rows in set (0.006 sec)MySQL [sbtest]> use sbtest;
Database changed
MySQL [sbtest]> show tables;
+------------------+
| Tables_in_sbtest |
+------------------+
| sbtest1          |
| sbtest10         |
| sbtest2          |
| sbtest3          |
| sbtest4          |
| sbtest5          |
| sbtest6          |
| sbtest7          |
| sbtest8          |
| sbtest9          |
+------------------+
10 rows in set (0.004 sec)MySQL [sbtest]> select count(1) from sbtest1;
+----------+
| count(1) |
+----------+
|   100000 |
+----------+
1 row in set (0.375 sec)

使用datax (离线)从 MySQL 同步表数据到 OceanBase

使用 datax 配置至少一个表的 MySQL 到 OceanBase 的 MySQL 租户的离线同步。

部署DATAX软件

有关dataX更多内容请参考:https://www.xmmup.com/alikaiyuanetlgongjuzhidataxhedatax-webjieshao.html

-- 大小:820MB
wget http://datax-opensource.oss-cn-hangzhou.aliyuncs.com/datax.tar.gztar -xf datax.tar.gz -C /usr/local/
cd /usr/local/datax# 删除datax中的隐藏文件
find /usr/local/datax/plugin -name ".*" | xargs rm -fyum install -y python2 java-- 生成模板文件
python2 /usr/local/datax/bin/datax.py -r mysqlreader -w oceanbasev10writer > /usr/local/datax/job/my2ob.json# 根据实际环境修改
vi /usr/local/datax/job/my2ob.json

修改同步作业文件

cat > /usr/local/datax/job/my2ob.json <<"EOF"
{
"job": {"setting": {"speed": {"channel": 2,},"errorLimit": {"record": 10}},"content": [{"reader": {"name": "mysqlreader","parameter": {"username": "root","password": "lhr","splitPk": "id","column": ["*"],"connection": [{"jdbcUrl": ["jdbc:mysql://172.17.0.3:3306/sbtest"],"table": ["sbtest1"]}]}},"writer": {"name": "oceanbasev10writer","parameter": {"writeMode": "insert","username": "root","password": "lhr","writerThreadCount": 5,"column": ["*"],"connection": [{"jdbcUrl": "||_dsc_ob10_dsc_||obce-single:obmysql||_dsc_ob10_dsc_||jdbc:oceanbase://127.0.0.1:2883/sbtest?useUnicode=true&characterEncoding=utf-8","table": ["sbtest1"]}]}}}]}
}
EOF

启动同步作业

python2 /usr/local/datax/bin/datax.py /usr/local/datax/job/my2ob.json

日志:

[admin@0209306f10bf ~]$ python2 /usr/local/datax/bin/datax.py /usr/local/datax/job/my2ob.jsonDataX (DATAX-OPENSOURCE-3.0), From Alibaba !
Copyright (C) 2010-2017, Alibaba Group. All Rights Reserved.2022-01-10 09:04:59.884 [main] INFO  VMInfo - VMInfo# operatingSystem class => sun.management.OperatingSystemImpl
2022-01-10 09:04:59.898 [main] INFO  Engine - the machine info  => osInfo: Red Hat, Inc. 1.8 25.312-b07jvmInfo:        Linux amd64 3.10.0-1127.10.1.el7.x86_64cpu num:        16totalPhysicalMemory:    -0.00GfreePhysicalMemory:     -0.00GmaxFileDescriptorCount: -1currentOpenFileDescriptorCount: -1GC Names        [PS MarkSweep, PS Scavenge]MEMORY_NAME                    | allocation_size                | init_size                      PS Eden Space                  | 256.00MB                       | 256.00MB                       Code Cache                     | 240.00MB                       | 2.44MB                         Compressed Class Space         | 1,024.00MB                     | 0.00MB                         PS Survivor Space              | 42.50MB                        | 42.50MB                        PS Old Gen                     | 683.00MB                       | 683.00MB                       Metaspace                      | -0.00MB                        | 0.00MB                         2022-01-10 09:04:59.935 [main] INFO  Engine -
{"content":[{"reader":{"name":"mysqlreader","parameter":{"column":["*"],"connection":[{"jdbcUrl":["jdbc:mysql://172.17.0.3:3306/sbtest"],"table":["sbtest1"]}],"password":"***","splitPk":"id","username":"root"}},"writer":{"name":"oceanbasev10writer","parameter":{"column":["*"],"connection":[{"jdbcUrl":"||_dsc_ob10_dsc_||obce-single:obmysql||_dsc_ob10_dsc_||jdbc:oceanbase://127.0.0.1:2883/sbtest?useUnicode=true&characterEncoding=utf-8","table":["sbtest1"]}],"password":"***","username":"root","writeMode":"insert","writerThreadCount":5}}}],"setting":{"errorLimit":{"record":10},"speed":{"channel":2}}
}2022-01-10 09:04:59.963 [main] WARN  Engine - prioriy set to 0, because NumberFormatException, the value is: null
2022-01-10 09:04:59.969 [main] INFO  PerfTrace - PerfTrace traceId=job_-1, isEnable=false, priority=0
2022-01-10 09:04:59.994 [main] INFO  JobContainer - DataX jobContainer starts job.
2022-01-10 09:04:59.999 [main] INFO  JobContainer - Set jobId = 0
2022-01-10 09:05:00.632 [job-0] INFO  OriginalConfPretreatmentUtil - Available jdbcUrl:jdbc:mysql://172.17.0.3:3306/sbtest?yearIsDateType=false&zeroDateTimeBehavior=convertToNull&tinyInt1isBit=false&rewriteBatchedStatements=true.
2022-01-10 09:05:00.634 [job-0] WARN  OriginalConfPretreatmentUtil - 您的配置文件中的列配置存在一定的风险. 因为您未配置读取数据库表的列,当您的表字段个数、类型有变动时,可能影响任务正确性甚至会运行出错。请检查您的配置并作出修改.
2022-01-10 09:05:00.659 [job-0] INFO  DBUtil - this is ob1_0 jdbc url.
2022-01-10 09:05:00.686 [job-0] INFO  DBUtil - this is ob1_0 jdbc url. user=obce-single:obmysql:root :url=jdbc:oceanbase://127.0.0.1:2883/sbtest?useUnicode=true&characterEncoding=utf-8
2022-01-10 09:05:01.073 [job-0] INFO  DbUtils - value for query [SHOW VARIABLES LIKE 'ob_compatibility_mode'] is [MYSQL]
2022-01-10 09:05:01.086 [job-0] INFO  DBUtil - this is ob1_0 jdbc url.
2022-01-10 09:05:01.117 [job-0] INFO  DBUtil - this is ob1_0 jdbc url. user=obce-single:obmysql:root :url=jdbc:oceanbase://127.0.0.1:2883/sbtest?useUnicode=true&characterEncoding=utf-8&yearIsDateType=false&zeroDateTimeBehavior=convertToNull&tinyInt1isBit=false&rewriteBatchedStatements=true
2022-01-10 09:05:01.136 [job-0] INFO  OriginalConfPretreatmentUtil - table:[sbtest1] all columns:[
id,k,c,pad
].
2022-01-10 09:05:01.164 [job-0] WARN  OriginalConfPretreatmentUtil - 您的配置文件中的列配置信息存在风险. 因为您配置的写入数据库表的列为*,当您的表字段个数、类型有变动时,可能影响任务正确性甚至会运行出错。请检查您的配置并作出修改.
2022-01-10 09:05:01.167 [job-0] INFO  OriginalConfPretreatmentUtil - Write data [
insert INTO %s (id,k,c,pad) VALUES(?,?,?,?)
], which jdbcUrl like:[||_dsc_ob10_dsc_||obce-single:obmysql||_dsc_ob10_dsc_||jdbc:oceanbase://127.0.0.1:2883/sbtest?useUnicode=true&characterEncoding=utf-8&yearIsDateType=false&zeroDateTimeBehavior=convertToNull&tinyInt1isBit=false&rewriteBatchedStatements=true]
2022-01-10 09:05:01.168 [job-0] INFO  JobContainer - jobContainer starts to do prepare ...
2022-01-10 09:05:01.169 [job-0] INFO  JobContainer - DataX Reader.Job [mysqlreader] do prepare work .
2022-01-10 09:05:01.169 [job-0] INFO  JobContainer - DataX Writer.Job [oceanbasev10writer] do prepare work .
2022-01-10 09:05:01.171 [job-0] INFO  DBUtil - this is ob1_0 jdbc url.
2022-01-10 09:05:01.171 [job-0] INFO  DBUtil - this is ob1_0 jdbc url. user=obce-single:obmysql:root :url=jdbc:oceanbase://127.0.0.1:2883/sbtest?useUnicode=true&characterEncoding=utf-8&yearIsDateType=false&zeroDateTimeBehavior=convertToNull&tinyInt1isBit=false&rewriteBatchedStatements=true
2022-01-10 09:05:01.191 [job-0] INFO  DbUtils - value for query [show variables like 'version'] is [3.1.1]
2022-01-10 09:05:01.206 [job-0] INFO  JobContainer - jobContainer starts to do split ...
2022-01-10 09:05:01.206 [job-0] INFO  JobContainer - Job set Channel-Number to 2 channels.
2022-01-10 09:05:01.226 [job-0] INFO  SingleTableSplitUtil - split pk [sql=SELECT MIN(id),MAX(id) FROM sbtest1] is running...
2022-01-10 09:05:01.256 [job-0] INFO  SingleTableSplitUtil - After split(), allQuerySql=[
select * from sbtest1  where  (1 <= id AND id < 10001)
select * from sbtest1  where  (10001 <= id AND id < 20001)
select * from sbtest1  where  (20001 <= id AND id < 30001)
select * from sbtest1  where  (30001 <= id AND id < 40001)
select * from sbtest1  where  (40001 <= id AND id < 50001)
select * from sbtest1  where  (50001 <= id AND id < 60001)
select * from sbtest1  where  (60001 <= id AND id < 70001)
select * from sbtest1  where  (70001 <= id AND id < 80001)
select * from sbtest1  where  (80001 <= id AND id < 90001)
select * from sbtest1  where  (90001 <= id AND id <= 100000)
select * from sbtest1  where  id IS NULL
].
2022-01-10 09:05:01.256 [job-0] INFO  JobContainer - DataX Reader.Job [mysqlreader] splits to [11] tasks.
2022-01-10 09:05:01.260 [job-0] INFO  JobContainer - DataX Writer.Job [oceanbasev10writer] splits to [11] tasks.
2022-01-10 09:05:01.300 [job-0] INFO  JobContainer - jobContainer starts to do schedule ...
2022-01-10 09:05:01.315 [job-0] INFO  JobContainer - Scheduler starts [1] taskGroups.
2022-01-10 09:05:01.320 [job-0] INFO  JobContainer - Running by standalone Mode.
2022-01-10 09:05:01.337 [taskGroup-0] INFO  TaskGroupContainer - taskGroupId=[0] start [2] channels for [11] tasks.
2022-01-10 09:05:01.358 [taskGroup-0] INFO  Channel - Channel set byte_speed_limit to -1, No bps activated.
2022-01-10 09:05:01.358 [taskGroup-0] INFO  Channel - Channel set record_speed_limit to -1, No tps activated.
2022-01-10 09:05:01.373 [taskGroup-0] INFO  TaskGroupContainer - taskGroup[0] taskId[0] attemptCount[1] is started
2022-01-10 09:05:01.378 [taskGroup-0] INFO  TaskGroupContainer - taskGroup[0] taskId[1] attemptCount[1] is started
2022-01-10 09:05:01.379 [0-0-0-writer] INFO  OceanBaseV10Writer$Task - tableNumber:1,writerTask Class:com.alibaba.datax.plugin.writer.oceanbasev10writer.task.ConcurrentTableWriterTask
2022-01-10 09:05:01.379 [0-0-1-writer] INFO  OceanBaseV10Writer$Task - tableNumber:1,writerTask Class:com.alibaba.datax.plugin.writer.oceanbasev10writer.task.ConcurrentTableWriterTask
2022-01-10 09:05:01.380 [0-0-0-reader] INFO  CommonRdbmsReader$Task - Begin to read record by Sql: [select * from sbtest1  where  (1 <= id AND id < 10001)
] jdbcUrl:[jdbc:mysql://172.17.0.3:3306/sbtest?yearIsDateType=false&zeroDateTimeBehavior=convertToNull&tinyInt1isBit=false&rewriteBatchedStatements=true].
2022-01-10 09:05:01.380 [0-0-1-reader] INFO  CommonRdbmsReader$Task - Begin to read record by Sql: [select * from sbtest1  where  (10001 <= id AND id < 20001)
] jdbcUrl:[jdbc:mysql://172.17.0.3:3306/sbtest?yearIsDateType=false&zeroDateTimeBehavior=convertToNull&tinyInt1isBit=false&rewriteBatchedStatements=true].
2022-01-10 09:05:01.382 [0-0-1-writer] INFO  ConcurrentTableWriterTask - configure url is unavailable, use obclient for connections.
2022-01-10 09:05:01.382 [0-0-0-writer] INFO  ConcurrentTableWriterTask - configure url is unavailable, use obclient for connections.
2022-01-10 09:05:01.403 [0-0-1-writer] INFO  ConcurrentTableWriterTask - Disable partition calculation feature.
2022-01-10 09:05:01.431 [0-0-0-writer] INFO  ConcurrentTableWriterTask - Disable partition calculation feature.
2022-01-10 09:05:01.449 [0-0-1-writer] INFO  CommonRdbmsWriter$Task - write mode: update
2022-01-10 09:05:01.455 [0-0-1-writer] INFO  CommonRdbmsWriter$Task - Skip columns: ID,
2022-01-10 09:05:01.456 [0-0-1-writer] INFO  ConcurrentTableWriterTask - writeRecordSql :INSERT INTO sbtest1 (id,k,c,pad) VALUES(?,?,?,?) ON DUPLICATE KEY UPDATE k=VALUES(k),c=VALUES(c),pad=VALUES(pad)
2022-01-10 09:05:01.464 [0-0-0-writer] INFO  CommonRdbmsWriter$Task - write mode: update
2022-01-10 09:05:01.464 [0-0-1-writer] INFO  DBUtil - this is ob1_0 jdbc url.
2022-01-10 09:05:01.464 [0-0-1-writer] INFO  DBUtil - this is ob1_0 jdbc url. user=obce-single:obmysql:root :url=jdbc:oceanbase://127.0.0.1:2883/sbtest?useUnicode=true&characterEncoding=utf-8&yearIsDateType=false&zeroDateTimeBehavior=convertToNull&tinyInt1isBit=false&rewriteBatchedStatements=true
2022-01-10 09:05:01.469 [0-0-0-writer] INFO  CommonRdbmsWriter$Task - Skip columns: ID,
2022-01-10 09:05:01.470 [0-0-0-writer] INFO  ConcurrentTableWriterTask - writeRecordSql :INSERT INTO sbtest1 (id,k,c,pad) VALUES(?,?,?,?) ON DUPLICATE KEY UPDATE k=VALUES(k),c=VALUES(c),pad=VALUES(pad)
2022-01-10 09:05:01.482 [0-0-0-writer] INFO  DBUtil - this is ob1_0 jdbc url.
2022-01-10 09:05:01.482 [0-0-1-writer] ERROR ConcurrentTableWriterTask - partCalculator is null
2022-01-10 09:05:01.483 [0-0-0-writer] INFO  DBUtil - this is ob1_0 jdbc url. user=obce-single:obmysql:root :url=jdbc:oceanbase://127.0.0.1:2883/sbtest?useUnicode=true&characterEncoding=utf-8&yearIsDateType=false&zeroDateTimeBehavior=convertToNull&tinyInt1isBit=false&rewriteBatchedStatements=true
2022-01-10 09:05:01.483 [0-0-1-writer] INFO  ConcurrentTableWriterTask - start 1 insert task.
2022-01-10 09:05:01.500 [0-0-0-writer] ERROR ConcurrentTableWriterTask - partCalculator is null
2022-01-10 09:05:01.502 [0-0-0-writer] INFO  ConcurrentTableWriterTask - start 1 insert task.
2022-01-10 09:05:01.512 [0-0-1-writer] INFO  ConcurrentTableWriterTask - start 2 insert task.
2022-01-10 09:05:01.527 [0-0-0-writer] INFO  ConcurrentTableWriterTask - start 2 insert task.
2022-01-10 09:05:01.543 [0-0-1-writer] INFO  ConcurrentTableWriterTask - start 3 insert task.
2022-01-10 09:05:01.562 [0-0-0-writer] INFO  ConcurrentTableWriterTask - start 3 insert task.
2022-01-10 09:05:01.575 [0-0-1-writer] INFO  ConcurrentTableWriterTask - start 4 insert task.
2022-01-10 09:05:01.589 [0-0-0-writer] INFO  ConcurrentTableWriterTask - start 4 insert task.
2022-01-10 09:05:01.615 [0-0-1-writer] INFO  ConcurrentTableWriterTask - start 5 insert task.
2022-01-10 09:05:01.627 [0-0-0-writer] INFO  ConcurrentTableWriterTask - start 5 insert task.
2022-01-10 09:05:01.659 [0-0-1-writer] INFO  DBUtil - this is ob1_0 jdbc url.
2022-01-10 09:05:01.659 [0-0-1-writer] INFO  DBUtil - this is ob1_0 jdbc url. user=obce-single:obmysql:root :url=jdbc:oceanbase://127.0.0.1:2883/sbtest?useUnicode=true&characterEncoding=utf-8&yearIsDateType=false&zeroDateTimeBehavior=convertToNull&tinyInt1isBit=false&rewriteBatchedStatements=true
2022-01-10 09:05:01.673 [0-0-0-writer] INFO  DBUtil - this is ob1_0 jdbc url.
2022-01-10 09:05:01.673 [0-0-0-writer] INFO  DBUtil - this is ob1_0 jdbc url. user=obce-single:obmysql:root :url=jdbc:oceanbase://127.0.0.1:2883/sbtest?useUnicode=true&characterEncoding=utf-8&yearIsDateType=false&zeroDateTimeBehavior=convertToNull&tinyInt1isBit=false&rewriteBatchedStatements=true
2022-01-10 09:05:01.677 [0-0-1-writer] INFO  ColumnMetaCache - fetch columnMeta of table sbtest1 success
2022-01-10 09:05:01.773 [0-0-1-writer] INFO  CommonRdbmsWriter$Task - isMemstoreFull=false
2022-01-10 09:05:01.813 [0-0-0-writer] INFO  CommonRdbmsWriter$Task - isMemstoreFull=false
2022-01-10 09:05:02.043 [0-0-1-reader] INFO  CommonRdbmsReader$Task - Finished read record by Sql: [select * from sbtest1  where  (10001 <= id AND id < 20001)
] jdbcUrl:[jdbc:mysql://172.17.0.3:3306/sbtest?yearIsDateType=false&zeroDateTimeBehavior=convertToNull&tinyInt1isBit=false&rewriteBatchedStatements=true].
2022-01-10 09:05:02.131 [0-0-0-reader] INFO  CommonRdbmsReader$Task - Finished read record by Sql: [select * from sbtest1  where  (1 <= id AND id < 10001)
] jdbcUrl:[jdbc:mysql://172.17.0.3:3306/sbtest?yearIsDateType=false&zeroDateTimeBehavior=convertToNull&tinyInt1isBit=false&rewriteBatchedStatements=true].
2022-01-10 09:05:02.186 [0-0-0-writer] INFO  ConcurrentTableWriterTask - ConcurrentTableWriter has put all task in queue, queueSize = 0,  total = 5, finished = 0
2022-01-10 09:05:02.260 [0-0-1-writer] INFO  ConcurrentTableWriterTask - ConcurrentTableWriter has put all task in queue, queueSize = 0,  total = 5, finished = 0
2022-01-10 09:05:02.781 [taskGroup-0] INFO  TaskGroupContainer - taskGroup[0] taskId[0] is successed, used[1409]ms
2022-01-10 09:05:02.782 [taskGroup-0] INFO  TaskGroupContainer - taskGroup[0] taskId[1] is successed, used[1405]ms
2022-01-10 09:05:02.784 [taskGroup-0] INFO  TaskGroupContainer - taskGroup[0] taskId[2] attemptCount[1] is started
2022-01-10 09:05:02.784 [0-0-2-writer] INFO  OceanBaseV10Writer$Task - tableNumber:1,writerTask Class:com.alibaba.datax.plugin.writer.oceanbasev10writer.task.ConcurrentTableWriterTask
2022-01-10 09:05:02.785 [0-0-2-reader] INFO  CommonRdbmsReader$Task - Begin to read record by Sql: [select * from sbtest1  where  (20001 <= id AND id < 30001)
] jdbcUrl:[jdbc:mysql://172.17.0.3:3306/sbtest?yearIsDateType=false&zeroDateTimeBehavior=convertToNull&tinyInt1isBit=false&rewriteBatchedStatements=true].
2022-01-10 09:05:02.785 [0-0-2-writer] INFO  ConcurrentTableWriterTask - configure url is unavailable, use obclient for connections.
2022-01-10 09:05:02.786 [taskGroup-0] INFO  TaskGroupContainer - taskGroup[0] taskId[3] attemptCount[1] is started
2022-01-10 09:05:02.812 [0-0-3-writer] INFO  OceanBaseV10Writer$Task - tableNumber:1,writerTask Class:com.alibaba.datax.plugin.writer.oceanbasev10writer.task.ConcurrentTableWriterTask
2022-01-10 09:05:02.812 [0-0-3-reader] INFO  CommonRdbmsReader$Task - Begin to read record by Sql: [select * from sbtest1  where  (30001 <= id AND id < 40001)
] jdbcUrl:[jdbc:mysql://172.17.0.3:3306/sbtest?yearIsDateType=false&zeroDateTimeBehavior=convertToNull&tinyInt1isBit=false&rewriteBatchedStatements=true].
2022-01-10 09:05:02.813 [0-0-3-writer] INFO  ConcurrentTableWriterTask - configure url is unavailable, use obclient for connections.
2022-01-10 09:05:02.820 [0-0-2-writer] INFO  ConcurrentTableWriterTask - Disable partition calculation feature.
2022-01-10 09:05:02.837 [0-0-3-writer] INFO  ConcurrentTableWriterTask - Disable partition calculation feature.
2022-01-10 09:05:02.845 [0-0-2-writer] INFO  CommonRdbmsWriter$Task - write mode: update
2022-01-10 09:05:02.849 [0-0-2-writer] INFO  CommonRdbmsWriter$Task - Skip columns: ID,
2022-01-10 09:05:02.850 [0-0-2-writer] INFO  ConcurrentTableWriterTask - writeRecordSql :INSERT INTO sbtest1 (id,k,c,pad) VALUES(?,?,?,?) ON DUPLICATE KEY UPDATE k=VALUES(k),c=VALUES(c),pad=VALUES(pad)
2022-01-10 09:05:02.854 [0-0-3-writer] INFO  CommonRdbmsWriter$Task - write mode: update
2022-01-10 09:05:02.854 [0-0-2-writer] INFO  DBUtil - this is ob1_0 jdbc url.
2022-01-10 09:05:02.854 [0-0-2-writer] INFO  DBUtil - this is ob1_0 jdbc url. user=obce-single:obmysql:root :url=jdbc:oceanbase://127.0.0.1:2883/sbtest?useUnicode=true&characterEncoding=utf-8&yearIsDateType=false&zeroDateTimeBehavior=convertToNull&tinyInt1isBit=false&rewriteBatchedStatements=true
2022-01-10 09:05:02.857 [0-0-3-writer] INFO  CommonRdbmsWriter$Task - Skip columns: ID,
2022-01-10 09:05:02.858 [0-0-3-writer] INFO  ConcurrentTableWriterTask - writeRecordSql :INSERT INTO sbtest1 (id,k,c,pad) VALUES(?,?,?,?) ON DUPLICATE KEY UPDATE k=VALUES(k),c=VALUES(c),pad=VALUES(pad)
2022-01-10 09:05:02.863 [0-0-3-writer] INFO  DBUtil - this is ob1_0 jdbc url.
2022-01-10 09:05:02.863 [0-0-2-writer] ERROR ConcurrentTableWriterTask - partCalculator is null
2022-01-10 09:05:02.863 [0-0-3-writer] INFO  DBUtil - this is ob1_0 jdbc url. user=obce-single:obmysql:root :url=jdbc:oceanbase://127.0.0.1:2883/sbtest?useUnicode=true&characterEncoding=utf-8&yearIsDateType=false&zeroDateTimeBehavior=convertToNull&tinyInt1isBit=false&rewriteBatchedStatements=true
2022-01-10 09:05:02.863 [0-0-2-writer] INFO  ConcurrentTableWriterTask - start 1 insert task.
2022-01-10 09:05:02.874 [0-0-3-writer] ERROR ConcurrentTableWriterTask - partCalculator is null
2022-01-10 09:05:02.874 [0-0-3-writer] INFO  ConcurrentTableWriterTask - start 1 insert task.
2022-01-10 09:05:02.884 [0-0-2-writer] INFO  ConcurrentTableWriterTask - start 2 insert task.
2022-01-10 09:05:02.893 [0-0-3-writer] INFO  ConcurrentTableWriterTask - start 2 insert task.
2022-01-10 09:05:02.917 [0-0-2-writer] INFO  ConcurrentTableWriterTask - start 3 insert task.
2022-01-10 09:05:02.925 [0-0-3-writer] INFO  ConcurrentTableWriterTask - start 3 insert task.
2022-01-10 09:05:02.933 [0-0-2-writer] INFO  ConcurrentTableWriterTask - start 4 insert task.
2022-01-10 09:05:02.941 [0-0-3-writer] INFO  ConcurrentTableWriterTask - start 4 insert task.
2022-01-10 09:05:02.949 [0-0-2-writer] INFO  ConcurrentTableWriterTask - start 5 insert task.
2022-01-10 09:05:02.957 [0-0-3-writer] INFO  ConcurrentTableWriterTask - start 5 insert task.
2022-01-10 09:05:02.972 [0-0-2-writer] INFO  DBUtil - this is ob1_0 jdbc url.
2022-01-10 09:05:02.973 [0-0-2-writer] INFO  DBUtil - this is ob1_0 jdbc url. user=obce-single:obmysql:root :url=jdbc:oceanbase://127.0.0.1:2883/sbtest?useUnicode=true&characterEncoding=utf-8&yearIsDateType=false&zeroDateTimeBehavior=convertToNull&tinyInt1isBit=false&rewriteBatchedStatements=true
2022-01-10 09:05:02.980 [0-0-3-writer] INFO  DBUtil - this is ob1_0 jdbc url.
2022-01-10 09:05:02.980 [0-0-3-writer] INFO  DBUtil - this is ob1_0 jdbc url. user=obce-single:obmysql:root :url=jdbc:oceanbase://127.0.0.1:2883/sbtest?useUnicode=true&characterEncoding=utf-8&yearIsDateType=false&zeroDateTimeBehavior=convertToNull&tinyInt1isBit=false&rewriteBatchedStatements=true
2022-01-10 09:05:03.000 [0-0-2-writer] INFO  CommonRdbmsWriter$Task - isMemstoreFull=false
2022-01-10 09:05:03.011 [0-0-3-writer] INFO  CommonRdbmsWriter$Task - isMemstoreFull=false
2022-01-10 09:05:03.091 [0-0-2-reader] INFO  CommonRdbmsReader$Task - Finished read record by Sql: [select * from sbtest1  where  (20001 <= id AND id < 30001)
] jdbcUrl:[jdbc:mysql://172.17.0.3:3306/sbtest?yearIsDateType=false&zeroDateTimeBehavior=convertToNull&tinyInt1isBit=false&rewriteBatchedStatements=true].
2022-01-10 09:05:03.099 [0-0-3-reader] INFO  CommonRdbmsReader$Task - Finished read record by Sql: [select * from sbtest1  where  (30001 <= id AND id < 40001)
] jdbcUrl:[jdbc:mysql://172.17.0.3:3306/sbtest?yearIsDateType=false&zeroDateTimeBehavior=convertToNull&tinyInt1isBit=false&rewriteBatchedStatements=true].
2022-01-10 09:05:03.117 [0-0-2-writer] INFO  ConcurrentTableWriterTask - ConcurrentTableWriter has put all task in queue, queueSize = 0,  total = 5, finished = 0
2022-01-10 09:05:03.126 [0-0-3-writer] INFO  ConcurrentTableWriterTask - ConcurrentTableWriter has put all task in queue, queueSize = 0,  total = 5, finished = 0
2022-01-10 09:05:03.589 [taskGroup-0] INFO  TaskGroupContainer - taskGroup[0] taskId[2] is successed, used[805]ms
2022-01-10 09:05:03.592 [taskGroup-0] INFO  TaskGroupContainer - taskGroup[0] taskId[4] attemptCount[1] is started
2022-01-10 09:05:03.592 [0-0-4-writer] INFO  OceanBaseV10Writer$Task - tableNumber:1,writerTask Class:com.alibaba.datax.plugin.writer.oceanbasev10writer.task.ConcurrentTableWriterTask
2022-01-10 09:05:03.593 [0-0-4-reader] INFO  CommonRdbmsReader$Task - Begin to read record by Sql: [select * from sbtest1  where  (40001 <= id AND id < 50001)
] jdbcUrl:[jdbc:mysql://172.17.0.3:3306/sbtest?yearIsDateType=false&zeroDateTimeBehavior=convertToNull&tinyInt1isBit=false&rewriteBatchedStatements=true].
2022-01-10 09:05:03.627 [0-0-4-writer] INFO  ConcurrentTableWriterTask - configure url is unavailable, use obclient for connections.
2022-01-10 09:05:03.639 [0-0-4-writer] INFO  ConcurrentTableWriterTask - Disable partition calculation feature.
2022-01-10 09:05:03.647 [0-0-4-writer] INFO  CommonRdbmsWriter$Task - write mode: update
2022-01-10 09:05:03.651 [0-0-4-writer] INFO  CommonRdbmsWriter$Task - Skip columns: ID,
2022-01-10 09:05:03.652 [0-0-4-writer] INFO  ConcurrentTableWriterTask - writeRecordSql :INSERT INTO sbtest1 (id,k,c,pad) VALUES(?,?,?,?) ON DUPLICATE KEY UPDATE k=VALUES(k),c=VALUES(c),pad=VALUES(pad)
2022-01-10 09:05:03.653 [0-0-4-writer] INFO  DBUtil - this is ob1_0 jdbc url.
2022-01-10 09:05:03.653 [0-0-4-writer] INFO  DBUtil - this is ob1_0 jdbc url. user=obce-single:obmysql:root :url=jdbc:oceanbase://127.0.0.1:2883/sbtest?useUnicode=true&characterEncoding=utf-8&yearIsDateType=false&zeroDateTimeBehavior=convertToNull&tinyInt1isBit=false&rewriteBatchedStatements=true
2022-01-10 09:05:03.661 [0-0-4-writer] ERROR ConcurrentTableWriterTask - partCalculator is null
2022-01-10 09:05:03.661 [0-0-4-writer] INFO  ConcurrentTableWriterTask - start 1 insert task.
2022-01-10 09:05:03.669 [0-0-4-writer] INFO  ConcurrentTableWriterTask - start 2 insert task.
2022-01-10 09:05:03.690 [0-0-4-writer] INFO  ConcurrentTableWriterTask - start 3 insert task.
2022-01-10 09:05:03.699 [0-0-4-writer] INFO  ConcurrentTableWriterTask - start 4 insert task.
2022-01-10 09:05:03.706 [0-0-4-writer] INFO  ConcurrentTableWriterTask - start 5 insert task.
2022-01-10 09:05:03.725 [0-0-4-writer] INFO  DBUtil - this is ob1_0 jdbc url.
2022-01-10 09:05:03.726 [0-0-4-writer] INFO  DBUtil - this is ob1_0 jdbc url. user=obce-single:obmysql:root :url=jdbc:oceanbase://127.0.0.1:2883/sbtest?useUnicode=true&characterEncoding=utf-8&yearIsDateType=false&zeroDateTimeBehavior=convertToNull&tinyInt1isBit=false&rewriteBatchedStatements=true
2022-01-10 09:05:03.726 [taskGroup-0] INFO  TaskGroupContainer - taskGroup[0] taskId[3] is successed, used[940]ms
2022-01-10 09:05:03.729 [0-0-5-writer] INFO  OceanBaseV10Writer$Task - tableNumber:1,writerTask Class:com.alibaba.datax.plugin.writer.oceanbasev10writer.task.ConcurrentTableWriterTask
2022-01-10 09:05:03.729 [taskGroup-0] INFO  TaskGroupContainer - taskGroup[0] taskId[5] attemptCount[1] is started
2022-01-10 09:05:03.729 [0-0-5-reader] INFO  CommonRdbmsReader$Task - Begin to read record by Sql: [select * from sbtest1  where  (50001 <= id AND id < 60001)
] jdbcUrl:[jdbc:mysql://172.17.0.3:3306/sbtest?yearIsDateType=false&zeroDateTimeBehavior=convertToNull&tinyInt1isBit=false&rewriteBatchedStatements=true].
2022-01-10 09:05:03.730 [0-0-5-writer] INFO  ConcurrentTableWriterTask - configure url is unavailable, use obclient for connections.
2022-01-10 09:05:03.753 [0-0-5-writer] INFO  ConcurrentTableWriterTask - Disable partition calculation feature.
2022-01-10 09:05:03.764 [0-0-4-writer] INFO  CommonRdbmsWriter$Task - isMemstoreFull=false
2022-01-10 09:05:03.768 [0-0-5-writer] INFO  CommonRdbmsWriter$Task - write mode: update
2022-01-10 09:05:03.772 [0-0-5-writer] INFO  CommonRdbmsWriter$Task - Skip columns: ID,
2022-01-10 09:05:03.772 [0-0-5-writer] INFO  ConcurrentTableWriterTask - writeRecordSql :INSERT INTO sbtest1 (id,k,c,pad) VALUES(?,?,?,?) ON DUPLICATE KEY UPDATE k=VALUES(k),c=VALUES(c),pad=VALUES(pad)
2022-01-10 09:05:03.773 [0-0-5-writer] INFO  DBUtil - this is ob1_0 jdbc url.
2022-01-10 09:05:03.774 [0-0-5-writer] INFO  DBUtil - this is ob1_0 jdbc url. user=obce-single:obmysql:root :url=jdbc:oceanbase://127.0.0.1:2883/sbtest?useUnicode=true&characterEncoding=utf-8&yearIsDateType=false&zeroDateTimeBehavior=convertToNull&tinyInt1isBit=false&rewriteBatchedStatements=true
2022-01-10 09:05:03.790 [0-0-5-writer] ERROR ConcurrentTableWriterTask - partCalculator is null
2022-01-10 09:05:03.790 [0-0-5-writer] INFO  ConcurrentTableWriterTask - start 1 insert task.
2022-01-10 09:05:03.810 [0-0-5-writer] INFO  ConcurrentTableWriterTask - start 2 insert task.
2022-01-10 09:05:03.839 [0-0-4-reader] INFO  CommonRdbmsReader$Task - Finished read record by Sql: [select * from sbtest1  where  (40001 <= id AND id < 50001)
] jdbcUrl:[jdbc:mysql://172.17.0.3:3306/sbtest?yearIsDateType=false&zeroDateTimeBehavior=convertToNull&tinyInt1isBit=false&rewriteBatchedStatements=true].
2022-01-10 09:05:03.848 [0-0-5-writer] INFO  ConcurrentTableWriterTask - start 3 insert task.
2022-01-10 09:05:03.857 [0-0-5-writer] INFO  ConcurrentTableWriterTask - start 4 insert task.
2022-01-10 09:05:03.866 [0-0-5-writer] INFO  ConcurrentTableWriterTask - start 5 insert task.
2022-01-10 09:05:03.875 [0-0-5-writer] INFO  DBUtil - this is ob1_0 jdbc url.
2022-01-10 09:05:03.876 [0-0-5-writer] INFO  DBUtil - this is ob1_0 jdbc url. user=obce-single:obmysql:root :url=jdbc:oceanbase://127.0.0.1:2883/sbtest?useUnicode=true&characterEncoding=utf-8&yearIsDateType=false&zeroDateTimeBehavior=convertToNull&tinyInt1isBit=false&rewriteBatchedStatements=true
2022-01-10 09:05:03.906 [0-0-5-writer] INFO  CommonRdbmsWriter$Task - isMemstoreFull=false
2022-01-10 09:05:04.034 [0-0-5-reader] INFO  CommonRdbmsReader$Task - Finished read record by Sql: [select * from sbtest1  where  (50001 <= id AND id < 60001)
] jdbcUrl:[jdbc:mysql://172.17.0.3:3306/sbtest?yearIsDateType=false&zeroDateTimeBehavior=convertToNull&tinyInt1isBit=false&rewriteBatchedStatements=true].
2022-01-10 09:05:04.051 [0-0-5-writer] INFO  ConcurrentTableWriterTask - ConcurrentTableWriter has put all task in queue, queueSize = 0,  total = 5, finished = 0
2022-01-10 09:05:04.061 [0-0-4-writer] INFO  ConcurrentTableWriterTask - ConcurrentTableWriter has put all task in queue, queueSize = 0,  total = 5, finished = 0
2022-01-10 09:05:04.531 [taskGroup-0] INFO  TaskGroupContainer - taskGroup[0] taskId[4] is successed, used[939]ms
2022-01-10 09:05:04.531 [taskGroup-0] INFO  TaskGroupContainer - taskGroup[0] taskId[5] is successed, used[803]ms
2022-01-10 09:05:04.533 [0-0-6-writer] INFO  OceanBaseV10Writer$Task - tableNumber:1,writerTask Class:com.alibaba.datax.plugin.writer.oceanbasev10writer.task.ConcurrentTableWriterTask
2022-01-10 09:05:04.533 [taskGroup-0] INFO  TaskGroupContainer - taskGroup[0] taskId[6] attemptCount[1] is started
2022-01-10 09:05:04.534 [0-0-6-reader] INFO  CommonRdbmsReader$Task - Begin to read record by Sql: [select * from sbtest1  where  (60001 <= id AND id < 70001)
] jdbcUrl:[jdbc:mysql://172.17.0.3:3306/sbtest?yearIsDateType=false&zeroDateTimeBehavior=convertToNull&tinyInt1isBit=false&rewriteBatchedStatements=true].
2022-01-10 09:05:04.534 [0-0-6-writer] INFO  ConcurrentTableWriterTask - configure url is unavailable, use obclient for connections.
2022-01-10 09:05:04.537 [0-0-7-writer] INFO  OceanBaseV10Writer$Task - tableNumber:1,writerTask Class:com.alibaba.datax.plugin.writer.oceanbasev10writer.task.ConcurrentTableWriterTask
2022-01-10 09:05:04.537 [taskGroup-0] INFO  TaskGroupContainer - taskGroup[0] taskId[7] attemptCount[1] is started
2022-01-10 09:05:04.537 [0-0-7-reader] INFO  CommonRdbmsReader$Task - Begin to read record by Sql: [select * from sbtest1  where  (70001 <= id AND id < 80001)
] jdbcUrl:[jdbc:mysql://172.17.0.3:3306/sbtest?yearIsDateType=false&zeroDateTimeBehavior=convertToNull&tinyInt1isBit=false&rewriteBatchedStatements=true].
2022-01-10 09:05:04.537 [0-0-7-writer] INFO  ConcurrentTableWriterTask - configure url is unavailable, use obclient for connections.
2022-01-10 09:05:04.545 [0-0-6-writer] INFO  ConcurrentTableWriterTask - Disable partition calculation feature.
2022-01-10 09:05:04.554 [0-0-7-writer] INFO  ConcurrentTableWriterTask - Disable partition calculation feature.
2022-01-10 09:05:04.566 [0-0-6-writer] INFO  CommonRdbmsWriter$Task - write mode: update
2022-01-10 09:05:04.571 [0-0-6-writer] INFO  CommonRdbmsWriter$Task - Skip columns: ID,
2022-01-10 09:05:04.572 [0-0-6-writer] INFO  ConcurrentTableWriterTask - writeRecordSql :INSERT INTO sbtest1 (id,k,c,pad) VALUES(?,?,?,?) ON DUPLICATE KEY UPDATE k=VALUES(k),c=VALUES(c),pad=VALUES(pad)
2022-01-10 09:05:04.576 [0-0-7-writer] INFO  CommonRdbmsWriter$Task - write mode: update
2022-01-10 09:05:04.576 [0-0-6-writer] INFO  DBUtil - this is ob1_0 jdbc url.
2022-01-10 09:05:04.576 [0-0-6-writer] INFO  DBUtil - this is ob1_0 jdbc url. user=obce-single:obmysql:root :url=jdbc:oceanbase://127.0.0.1:2883/sbtest?useUnicode=true&characterEncoding=utf-8&yearIsDateType=false&zeroDateTimeBehavior=convertToNull&tinyInt1isBit=false&rewriteBatchedStatements=true
2022-01-10 09:05:04.580 [0-0-7-writer] INFO  CommonRdbmsWriter$Task - Skip columns: ID,
2022-01-10 09:05:04.580 [0-0-7-writer] INFO  ConcurrentTableWriterTask - writeRecordSql :INSERT INTO sbtest1 (id,k,c,pad) VALUES(?,?,?,?) ON DUPLICATE KEY UPDATE k=VALUES(k),c=VALUES(c),pad=VALUES(pad)
2022-01-10 09:05:04.585 [0-0-7-writer] INFO  DBUtil - this is ob1_0 jdbc url.
2022-01-10 09:05:04.585 [0-0-6-writer] ERROR ConcurrentTableWriterTask - partCalculator is null
2022-01-10 09:05:04.585 [0-0-6-writer] INFO  ConcurrentTableWriterTask - start 1 insert task.
2022-01-10 09:05:04.585 [0-0-7-writer] INFO  DBUtil - this is ob1_0 jdbc url. user=obce-single:obmysql:root :url=jdbc:oceanbase://127.0.0.1:2883/sbtest?useUnicode=true&characterEncoding=utf-8&yearIsDateType=false&zeroDateTimeBehavior=convertToNull&tinyInt1isBit=false&rewriteBatchedStatements=true
2022-01-10 09:05:04.595 [0-0-7-writer] ERROR ConcurrentTableWriterTask - partCalculator is null
2022-01-10 09:05:04.595 [0-0-7-writer] INFO  ConcurrentTableWriterTask - start 1 insert task.
2022-01-10 09:05:04.603 [0-0-6-writer] INFO  ConcurrentTableWriterTask - start 2 insert task.
2022-01-10 09:05:04.612 [0-0-7-writer] INFO  ConcurrentTableWriterTask - start 2 insert task.
2022-01-10 09:05:04.620 [0-0-6-writer] INFO  ConcurrentTableWriterTask - start 3 insert task.
2022-01-10 09:05:04.628 [0-0-7-writer] INFO  ConcurrentTableWriterTask - start 3 insert task.
2022-01-10 09:05:04.636 [0-0-6-writer] INFO  ConcurrentTableWriterTask - start 4 insert task.
2022-01-10 09:05:04.643 [0-0-7-writer] INFO  ConcurrentTableWriterTask - start 4 insert task.
2022-01-10 09:05:04.651 [0-0-6-writer] INFO  ConcurrentTableWriterTask - start 5 insert task.
2022-01-10 09:05:04.659 [0-0-7-writer] INFO  ConcurrentTableWriterTask - start 5 insert task.
2022-01-10 09:05:04.673 [0-0-6-writer] INFO  DBUtil - this is ob1_0 jdbc url.
2022-01-10 09:05:04.673 [0-0-6-writer] INFO  DBUtil - this is ob1_0 jdbc url. user=obce-single:obmysql:root :url=jdbc:oceanbase://127.0.0.1:2883/sbtest?useUnicode=true&characterEncoding=utf-8&yearIsDateType=false&zeroDateTimeBehavior=convertToNull&tinyInt1isBit=false&rewriteBatchedStatements=true
2022-01-10 09:05:04.683 [0-0-7-writer] INFO  DBUtil - this is ob1_0 jdbc url.
2022-01-10 09:05:04.683 [0-0-7-writer] INFO  DBUtil - this is ob1_0 jdbc url. user=obce-single:obmysql:root :url=jdbc:oceanbase://127.0.0.1:2883/sbtest?useUnicode=true&characterEncoding=utf-8&yearIsDateType=false&zeroDateTimeBehavior=convertToNull&tinyInt1isBit=false&rewriteBatchedStatements=true
2022-01-10 09:05:04.711 [0-0-6-writer] INFO  CommonRdbmsWriter$Task - isMemstoreFull=false
2022-01-10 09:05:04.719 [0-0-7-writer] INFO  CommonRdbmsWriter$Task - isMemstoreFull=false
2022-01-10 09:05:04.811 [0-0-6-reader] INFO  CommonRdbmsReader$Task - Finished read record by Sql: [select * from sbtest1  where  (60001 <= id AND id < 70001)
] jdbcUrl:[jdbc:mysql://172.17.0.3:3306/sbtest?yearIsDateType=false&zeroDateTimeBehavior=convertToNull&tinyInt1isBit=false&rewriteBatchedStatements=true].
2022-01-10 09:05:04.822 [0-0-7-reader] INFO  CommonRdbmsReader$Task - Finished read record by Sql: [select * from sbtest1  where  (70001 <= id AND id < 80001)
] jdbcUrl:[jdbc:mysql://172.17.0.3:3306/sbtest?yearIsDateType=false&zeroDateTimeBehavior=convertToNull&tinyInt1isBit=false&rewriteBatchedStatements=true].
2022-01-10 09:05:04.834 [0-0-6-writer] INFO  ConcurrentTableWriterTask - ConcurrentTableWriter has put all task in queue, queueSize = 0,  total = 5, finished = 0
2022-01-10 09:05:04.846 [0-0-7-writer] INFO  ConcurrentTableWriterTask - ConcurrentTableWriter has put all task in queue, queueSize = 0,  total = 5, finished = 0
2022-01-10 09:05:05.339 [taskGroup-0] INFO  TaskGroupContainer - taskGroup[0] taskId[7] is successed, used[803]ms
2022-01-10 09:05:05.343 [taskGroup-0] INFO  TaskGroupContainer - taskGroup[0] taskId[8] attemptCount[1] is started
2022-01-10 09:05:05.343 [0-0-8-reader] INFO  CommonRdbmsReader$Task - Begin to read record by Sql: [select * from sbtest1  where  (80001 <= id AND id < 90001)
] jdbcUrl:[jdbc:mysql://172.17.0.3:3306/sbtest?yearIsDateType=false&zeroDateTimeBehavior=convertToNull&tinyInt1isBit=false&rewriteBatchedStatements=true].
2022-01-10 09:05:05.343 [0-0-8-writer] INFO  OceanBaseV10Writer$Task - tableNumber:1,writerTask Class:com.alibaba.datax.plugin.writer.oceanbasev10writer.task.ConcurrentTableWriterTask
2022-01-10 09:05:05.344 [0-0-8-writer] INFO  ConcurrentTableWriterTask - configure url is unavailable, use obclient for connections.
2022-01-10 09:05:05.352 [0-0-8-writer] INFO  ConcurrentTableWriterTask - Disable partition calculation feature.
2022-01-10 09:05:05.360 [0-0-8-writer] INFO  CommonRdbmsWriter$Task - write mode: update
2022-01-10 09:05:05.364 [0-0-8-writer] INFO  CommonRdbmsWriter$Task - Skip columns: ID,
2022-01-10 09:05:05.365 [0-0-8-writer] INFO  ConcurrentTableWriterTask - writeRecordSql :INSERT INTO sbtest1 (id,k,c,pad) VALUES(?,?,?,?) ON DUPLICATE KEY UPDATE k=VALUES(k),c=VALUES(c),pad=VALUES(pad)
2022-01-10 09:05:05.370 [0-0-8-writer] INFO  DBUtil - this is ob1_0 jdbc url.
2022-01-10 09:05:05.370 [0-0-8-writer] INFO  DBUtil - this is ob1_0 jdbc url. user=obce-single:obmysql:root :url=jdbc:oceanbase://127.0.0.1:2883/sbtest?useUnicode=true&characterEncoding=utf-8&yearIsDateType=false&zeroDateTimeBehavior=convertToNull&tinyInt1isBit=false&rewriteBatchedStatements=true
2022-01-10 09:05:05.381 [0-0-8-writer] ERROR ConcurrentTableWriterTask - partCalculator is null
2022-01-10 09:05:05.381 [0-0-8-writer] INFO  ConcurrentTableWriterTask - start 1 insert task.
2022-01-10 09:05:05.389 [0-0-8-writer] INFO  ConcurrentTableWriterTask - start 2 insert task.
2022-01-10 09:05:05.398 [0-0-8-writer] INFO  ConcurrentTableWriterTask - start 3 insert task.
2022-01-10 09:05:05.408 [0-0-8-writer] INFO  ConcurrentTableWriterTask - start 4 insert task.
2022-01-10 09:05:05.416 [0-0-8-writer] INFO  ConcurrentTableWriterTask - start 5 insert task.
2022-01-10 09:05:05.423 [0-0-8-writer] INFO  DBUtil - this is ob1_0 jdbc url.
2022-01-10 09:05:05.423 [0-0-8-writer] INFO  DBUtil - this is ob1_0 jdbc url. user=obce-single:obmysql:root :url=jdbc:oceanbase://127.0.0.1:2883/sbtest?useUnicode=true&characterEncoding=utf-8&yearIsDateType=false&zeroDateTimeBehavior=convertToNull&tinyInt1isBit=false&rewriteBatchedStatements=true
2022-01-10 09:05:05.444 [taskGroup-0] INFO  TaskGroupContainer - taskGroup[0] taskId[6] is successed, used[910]ms
2022-01-10 09:05:05.446 [taskGroup-0] INFO  TaskGroupContainer - taskGroup[0] taskId[9] attemptCount[1] is started
2022-01-10 09:05:05.446 [0-0-9-writer] INFO  OceanBaseV10Writer$Task - tableNumber:1,writerTask Class:com.alibaba.datax.plugin.writer.oceanbasev10writer.task.ConcurrentTableWriterTask
2022-01-10 09:05:05.446 [0-0-9-reader] INFO  CommonRdbmsReader$Task - Begin to read record by Sql: [select * from sbtest1  where  (90001 <= id AND id <= 100000)
] jdbcUrl:[jdbc:mysql://172.17.0.3:3306/sbtest?yearIsDateType=false&zeroDateTimeBehavior=convertToNull&tinyInt1isBit=false&rewriteBatchedStatements=true].
2022-01-10 09:05:05.447 [0-0-9-writer] INFO  ConcurrentTableWriterTask - configure url is unavailable, use obclient for connections.
2022-01-10 09:05:05.452 [0-0-8-writer] INFO  CommonRdbmsWriter$Task - isMemstoreFull=false
2022-01-10 09:05:05.456 [0-0-9-writer] INFO  ConcurrentTableWriterTask - Disable partition calculation feature.
2022-01-10 09:05:05.502 [0-0-9-writer] INFO  CommonRdbmsWriter$Task - write mode: update
2022-01-10 09:05:05.506 [0-0-9-writer] INFO  CommonRdbmsWriter$Task - Skip columns: ID,
2022-01-10 09:05:05.506 [0-0-9-writer] INFO  ConcurrentTableWriterTask - writeRecordSql :INSERT INTO sbtest1 (id,k,c,pad) VALUES(?,?,?,?) ON DUPLICATE KEY UPDATE k=VALUES(k),c=VALUES(c),pad=VALUES(pad)
2022-01-10 09:05:05.510 [0-0-9-writer] INFO  DBUtil - this is ob1_0 jdbc url.
2022-01-10 09:05:05.510 [0-0-9-writer] INFO  DBUtil - this is ob1_0 jdbc url. user=obce-single:obmysql:root :url=jdbc:oceanbase://127.0.0.1:2883/sbtest?useUnicode=true&characterEncoding=utf-8&yearIsDateType=false&zeroDateTimeBehavior=convertToNull&tinyInt1isBit=false&rewriteBatchedStatements=true
2022-01-10 09:05:05.524 [0-0-9-writer] ERROR ConcurrentTableWriterTask - partCalculator is null
2022-01-10 09:05:05.524 [0-0-9-writer] INFO  ConcurrentTableWriterTask - start 1 insert task.
2022-01-10 09:05:05.540 [0-0-9-writer] INFO  ConcurrentTableWriterTask - start 2 insert task.
2022-01-10 09:05:05.552 [0-0-8-reader] INFO  CommonRdbmsReader$Task - Finished read record by Sql: [select * from sbtest1  where  (80001 <= id AND id < 90001)
] jdbcUrl:[jdbc:mysql://172.17.0.3:3306/sbtest?yearIsDateType=false&zeroDateTimeBehavior=convertToNull&tinyInt1isBit=false&rewriteBatchedStatements=true].
2022-01-10 09:05:05.560 [0-0-9-writer] INFO  ConcurrentTableWriterTask - start 3 insert task.
2022-01-10 09:05:05.568 [0-0-8-writer] INFO  ConcurrentTableWriterTask - ConcurrentTableWriter has put all task in queue, queueSize = 0,  total = 5, finished = 0
2022-01-10 09:05:05.579 [0-0-9-writer] INFO  ConcurrentTableWriterTask - start 4 insert task.
2022-01-10 09:05:05.601 [0-0-9-writer] INFO  ConcurrentTableWriterTask - start 5 insert task.
2022-01-10 09:05:05.608 [0-0-9-writer] INFO  DBUtil - this is ob1_0 jdbc url.
2022-01-10 09:05:05.608 [0-0-9-writer] INFO  DBUtil - this is ob1_0 jdbc url. user=obce-single:obmysql:root :url=jdbc:oceanbase://127.0.0.1:2883/sbtest?useUnicode=true&characterEncoding=utf-8&yearIsDateType=false&zeroDateTimeBehavior=convertToNull&tinyInt1isBit=false&rewriteBatchedStatements=true
2022-01-10 09:05:05.837 [0-0-9-writer] INFO  CommonRdbmsWriter$Task - isMemstoreFull=false
2022-01-10 09:05:06.462 [0-0-9-reader] INFO  CommonRdbmsReader$Task - Finished read record by Sql: [select * from sbtest1  where  (90001 <= id AND id <= 100000)
] jdbcUrl:[jdbc:mysql://172.17.0.3:3306/sbtest?yearIsDateType=false&zeroDateTimeBehavior=convertToNull&tinyInt1isBit=false&rewriteBatchedStatements=true].
2022-01-10 09:05:06.483 [0-0-9-writer] INFO  ConcurrentTableWriterTask - ConcurrentTableWriter has put all task in queue, queueSize = 0,  total = 5, finished = 0
2022-01-10 09:05:06.827 [taskGroup-0] INFO  TaskGroupContainer - taskGroup[0] taskId[8] is successed, used[1485]ms
2022-01-10 09:05:06.831 [0-0-10-writer] INFO  OceanBaseV10Writer$Task - tableNumber:1,writerTask Class:com.alibaba.datax.plugin.writer.oceanbasev10writer.task.ConcurrentTableWriterTask
2022-01-10 09:05:06.831 [taskGroup-0] INFO  TaskGroupContainer - taskGroup[0] taskId[10] attemptCount[1] is started
2022-01-10 09:05:06.831 [0-0-10-reader] INFO  CommonRdbmsReader$Task - Begin to read record by Sql: [select * from sbtest1  where  id IS NULL
] jdbcUrl:[jdbc:mysql://172.17.0.3:3306/sbtest?yearIsDateType=false&zeroDateTimeBehavior=convertToNull&tinyInt1isBit=false&rewriteBatchedStatements=true].
2022-01-10 09:05:06.832 [0-0-10-writer] INFO  ConcurrentTableWriterTask - configure url is unavailable, use obclient for connections.
2022-01-10 09:05:06.928 [0-0-10-reader] INFO  CommonRdbmsReader$Task - Finished read record by Sql: [select * from sbtest1  where  id IS NULL
] jdbcUrl:[jdbc:mysql://172.17.0.3:3306/sbtest?yearIsDateType=false&zeroDateTimeBehavior=convertToNull&tinyInt1isBit=false&rewriteBatchedStatements=true].
2022-01-10 09:05:06.928 [0-0-10-writer] INFO  ConcurrentTableWriterTask - Disable partition calculation feature.
2022-01-10 09:05:07.015 [0-0-10-writer] INFO  CommonRdbmsWriter$Task - write mode: update
2022-01-10 09:05:07.038 [0-0-10-writer] INFO  CommonRdbmsWriter$Task - Skip columns: ID,
2022-01-10 09:05:07.038 [0-0-10-writer] INFO  ConcurrentTableWriterTask - writeRecordSql :INSERT INTO sbtest1 (id,k,c,pad) VALUES(?,?,?,?) ON DUPLICATE KEY UPDATE k=VALUES(k),c=VALUES(c),pad=VALUES(pad)
2022-01-10 09:05:07.039 [0-0-10-writer] INFO  DBUtil - this is ob1_0 jdbc url.
2022-01-10 09:05:07.040 [0-0-10-writer] INFO  DBUtil - this is ob1_0 jdbc url. user=obce-single:obmysql:root :url=jdbc:oceanbase://127.0.0.1:2883/sbtest?useUnicode=true&characterEncoding=utf-8&yearIsDateType=false&zeroDateTimeBehavior=convertToNull&tinyInt1isBit=false&rewriteBatchedStatements=true
2022-01-10 09:05:07.139 [0-0-10-writer] ERROR ConcurrentTableWriterTask - partCalculator is null
2022-01-10 09:05:07.139 [0-0-10-writer] INFO  ConcurrentTableWriterTask - start 1 insert task.
2022-01-10 09:05:07.216 [0-0-10-writer] INFO  ConcurrentTableWriterTask - start 2 insert task.
2022-01-10 09:05:07.247 [0-0-10-writer] INFO  ConcurrentTableWriterTask - start 3 insert task.
2022-01-10 09:05:07.317 [0-0-10-writer] INFO  ConcurrentTableWriterTask - start 4 insert task.
2022-01-10 09:05:07.356 [0-0-10-writer] INFO  ConcurrentTableWriterTask - start 5 insert task.
2022-01-10 09:05:07.366 [0-0-10-writer] INFO  DBUtil - this is ob1_0 jdbc url.
2022-01-10 09:05:07.366 [0-0-10-writer] INFO  DBUtil - this is ob1_0 jdbc url. user=obce-single:obmysql:root :url=jdbc:oceanbase://127.0.0.1:2883/sbtest?useUnicode=true&characterEncoding=utf-8&yearIsDateType=false&zeroDateTimeBehavior=convertToNull&tinyInt1isBit=false&rewriteBatchedStatements=true
2022-01-10 09:05:07.375 [0-0-10-writer] INFO  ConcurrentTableWriterTask - ConcurrentTableWriter has put all task in queue, queueSize = 0,  total = 0, finished = 0
2022-01-10 09:05:07.469 [taskGroup-0] INFO  TaskGroupContainer - taskGroup[0] taskId[10] is successed, used[639]ms
2022-01-10 09:05:07.573 [taskGroup-0] INFO  TaskGroupContainer - taskGroup[0] taskId[9] is successed, used[2127]ms
2022-01-10 09:05:07.574 [taskGroup-0] INFO  TaskGroupContainer - taskGroup[0] completed it's tasks.
2022-01-10 09:05:11.356 [job-0] INFO  StandAloneJobContainerCommunicator - Total 100000 records, 18788895 bytes | Speed 1.79MB/s, 10000 records/s | Error 0 records, 0 bytes |  All Task WaitWriterTime 3.153s |  All Task WaitReaderTime 0.719s | Percentage 100.00%
2022-01-10 09:05:11.356 [job-0] INFO  AbstractScheduler - Scheduler accomplished all tasks.
2022-01-10 09:05:11.356 [job-0] INFO  JobContainer - DataX Writer.Job [oceanbasev10writer] do post work.
2022-01-10 09:05:11.356 [job-0] INFO  JobContainer - DataX Reader.Job [mysqlreader] do post work.
2022-01-10 09:05:11.356 [job-0] INFO  JobContainer - DataX jobId [0] completed successfully.
2022-01-10 09:05:11.357 [job-0] INFO  HookInvoker - No hook invoked, because base dir not exists or is a file: /usr/local/datax/hook
2022-01-10 09:05:11.358 [job-0] INFO  JobContainer - [total cpu info] => averageCpu                     | maxDeltaCpu                    | minDeltaCpu                    -1.00%                         | -1.00%                         | -1.00%[total gc info] => NAME                 | totalGCCount       | maxDeltaGCCount    | minDeltaGCCount    | totalGCTime        | maxDeltaGCTime     | minDeltaGCTime     PS MarkSweep         | 0                  | 0                  | 0                  | 0.000s             | 0.000s             | 0.000s             PS Scavenge          | 3                  | 3                  | 3                  | 0.237s             | 0.237s             | 0.237s             2022-01-10 09:05:11.358 [job-0] INFO  JobContainer - PerfTrace not enable!
2022-01-10 09:05:11.359 [job-0] INFO  StandAloneJobContainerCommunicator - Total 100000 records, 18788895 bytes | Speed 1.79MB/s, 10000 records/s | Error 0 records, 0 bytes |  All Task WaitWriterTime 3.153s |  All Task WaitReaderTime 0.719s | Percentage 100.00%
2022-01-10 09:05:11.360 [job-0] INFO  JobContainer -
任务启动时刻                    : 2022-01-10 09:04:59
任务结束时刻                    : 2022-01-10 09:05:11
任务总计耗时                    :                 11s
任务平均流量                    :            1.79MB/s
记录写入速度                    :          10000rec/s
读出记录总数                    :              100000
读写失败总数                    :                   0

datax 实现 OceanBase 以 csv 格式的导入导出

OceanBase 以 csv 格式导出数据

生成 datax 配置 json 模板

python2 /usr/local/datax/bin/datax.py -r oceanbasev10reader -w txtfilewriter > /usr/local/datax/job/oceanbase2csv.json

修改 json 文件:

cat > /usr/local/datax/job/oceanbase2csv.json <<"EOF"
{"job": {"setting": {"speed": {"channel": 4},"errorLimit": {"record": 0,"percentage": 0.1}},"content": [{"reader": {"name": "oceanbasev10reader","parameter": {"column": ["*"],"connection": [{"jdbcUrl": ["||_dsc_ob10_dsc_||obce-single:obmysql||_dsc_ob10_dsc_||jdbc:oceanbase://127.0.0.1:2883/sbtest?useUnicode=true&characterEncoding=utf-8"],"table": ["sbtest1"]}],"password": "lhr","username": "root","where": ""}},"writer": {"name": "txtfilewriter","parameter": {"dateFormat": "yyyy-MM-dd hh:mm:ss","fieldDelimiter": ",","fileName": "ob2csv","path": "/tmp/","writeMode": "truncate"}}}]}
}
EOF

执行任务:

python2 /usr/local/datax/bin/datax.py  /usr/local/datax/job/oceanbase2csv.json

查看结果:

[admin@0209306f10bf tmp]$ ll
total 19M
drwxr-xr-x 2 admin admin 4.0K Jan 10 18:07 hsperfdata_admin
drwxr-xr-x 2 root  root  4.0K Jan 10 16:22 hsperfdata_root
-rw-rw-r-- 1 admin admin  19M Jan 10 18:07 ob2csv__c0bee24e_73cc_4aeb_904d_f337836e95f1
[admin@0209306f10bf tmp]$ more ob2csv__c0bee24e_73cc_4aeb_904d_f337836e95f1 | wc -l
100000
[admin@0209306f10bf tmp]$ head -n 2 ob2csv__c0bee24e_73cc_4aeb_904d_f337836e95f1
1,50147,68487932199-96439406143-93774651418-41631865787-96406072701-20604855487-25459966574-28203206787-41238978918-19503783441,22195207048-70116052123-74140395089-76317954521-98694025897
2,50248,13241531885-45658403807-79170748828-69419634012-13605813761-77983377181-01582588137-21344716829-87370944992-02457486289,28733802923-10548894641-11867531929-71265603657-36546888392
[admin@0209306f10bf tmp]$

OceanBase 以 csv 格式导入数据

生成 datax 配置 json 模板

python2 /usr/local/datax/bin/datax.py -r oceanbasev10reader -w txtfilewriter > /usr/local/datax/job/csv2oceanbase.json

修改json文件:

cat > /usr/local/datax/job/csv2oceanbase.json <<"EOF"
{"job": {"setting": {"speed": {"channel": 4},"errorLimit": {"record": 0,"percentage": 0.1}},"content": [{"reader": {"name": "txtfilereader","parameter": {"path": ["/tmp/ob/"],"fileName": "ob2csv","encoding": "UTF-8","column": ["*"],"dateFormat": "yyyy-MM-dd hh:mm:ss" ,"nullFormat": "\\N" ,"fieldDelimiter": ","}},"writer": {"name": "oceanbasev10writer","parameter": {"obWriteMode": "insert","column": ["*"],"preSql": ["truncate table sbtest11"],"connection": [{"jdbcUrl": "||_dsc_ob10_dsc_||obce-single:obmysql||_dsc_ob10_dsc_||jdbc:oceanbase://127.0.0.1:2883/sbtest?useUnicode=true&characterEncoding=utf-8","table": ["sbtest11"]}],"username": "root","password": "lhr","writerThreadCount": 10,"batchSize": 100,"memstoreThreshold": "0.9"}}}]}
}
EOF

执行导入操作:

MySQL [sbtest]> create table sbtest11 like sbtest1;
Query OK, 0 rows affected (0.58 sec)MySQL [sbtest]> desc sbtest11;
+-------+-----------+------+-----+---------+----------------+
| Field | Type      | Null | Key | Default | Extra          |
+-------+-----------+------+-----+---------+----------------+
| id    | int(11)   | NO   | PRI | NULL    | auto_increment |
| k     | int(11)   | NO   | MUL | 0       |                |
| c     | char(120) | NO   |     |         |                |
| pad   | char(60)  | NO   |     |         |                |
+-------+-----------+------+-----+---------+----------------+
4 rows in set (0.06 sec)MySQL [sbtest]> select count(*) from sbtest11;
+----------+
| count(*) |
+----------+
|        0 |
+----------+
1 row in set (0.05 sec)-- 导入
python2 /usr/local/datax/bin/datax.py  /usr/local/datax/job/csv2oceanbase.json

结果:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vsN6uewW-1641900939604)(https://cdn.jsdelivr.net/gh/lhrbest/pic/img_2022/202201101817305.png)]

OB数据库查询:

MySQL [sbtest]> select count(*) from sbtest11;
+----------+
| count(*) |
+----------+
|   100000 |
+----------+
1 row in set (0.32 sec)
  • 注意:

Path:需要给定文件的路径,该路径下不要有其他文件,执行会报错。

Canal 实现 mysql 与 OceanBase 的增量同步

使用 canal 配置 MySQL 的增量同步到 OceanBase 的 MySQL 租户。

参考:https://www.modb.pro/db/222647

https://open.oceanbase.com/blog/10900160

mysql源端开启二进制日志

[mysqld]
log-bin=mysql-bin # 开启 binlog
binlog-format=ROW # 选择 ROW 模式
server_id=1 # 配置 MySQL replaction 需要定义,不要和 canal 的 slaveId 重复

部署 canal admin

参考:https://www.xmmup.com/alishujutongbugongjuotterhecanaljianjie.html

wget https://github.com/alibaba/canal/releases/download/canal-1.1.5/canal.admin-1.1.5.tar.gz
tar -zxvf canal.admin-1.1.5.tar.gz -C /usr/local/canal-admin-- 修改配置文件:
cd /usr/local/canal-admin/conf
vim application.yml

修改元数据库信息:

[admin@0209306f10bf conf]$ cat application.yml
server:port: 8089
spring:jackson:date-format: yyyy-MM-dd HH:mm:sstime-zone: GMT+8spring.datasource:address: 172.17.0.3:3306database: canal_managerusername: rootpassword: lhrdriver-class-name: com.mysql.jdbc.Driverurl: jdbc:mysql://${spring.datasource.address}/${spring.datasource.database}?useUnicode=true&characterEncoding=UTF-8&useSSL=falsehikari:maximum-pool-size: 30minimum-idle: 1canal:adminUser: adminadminPasswd: admin

初始化元数据:

mysql -uroot -P3306 -plhr -h 172.17.0.3
source conf/canal_manager.sql-- 查看表
MySQL [sbtest]> use canal_manager;
Database changed
MySQL [canal_manager]> show tables;
+-------------------------+
| Tables_in_canal_manager |
+-------------------------+
| canal_adapter_config    |
| canal_cluster           |
| canal_config            |
| canal_instance_config   |
| canal_node_server       |
| canal_user              |
+-------------------------+
6 rows in set (0.05 sec)

启动canal

cd /usr/local/canal-admin/bin/ && ./startup.sh

过程:

[admin@0209306f10bf local]$  cd /usr/local/canal-admin/bin/ && ./startup.sh
cd to /usr/local/canal-admin/bin for workaround relative path
CLASSPATH :/usr/local/canal-admin/bin/../conf:/usr/local/canal-admin/bin/../lib/zookeeper-3.4.5.jar:/usr/local/canal-admin/bin/../lib/zkclient-0.10.jar:/usr/local/canal-admin/bin/../lib/xmlunit-core-2.5.1.jar:/usr/local/canal-admin/bin/../lib/validation-api-2.0.1.Final.jar:/usr/local/canal-admin/bin/../lib/tomcat-embed-websocket-8.5.29.jar:/usr/local/canal-admin/bin/../lib/tomcat-embed-el-8.5.29.jar:/usr/local/canal-admin/bin/../lib/tomcat-embed-core-8.5.29.jar:/usr/local/canal-admin/bin/../lib/spring-webmvc-5.0.5.RELEASE.jar:/usr/local/canal-admin/bin/../lib/spring-web-5.0.5.RELEASE.jar:/usr/local/canal-admin/bin/../lib/spring-tx-5.0.5.RELEASE.jar:/usr/local/canal-admin/bin/../lib/spring-orm-5.0.5.RELEASE.jar:/usr/local/canal-admin/bin/../lib/spring-jdbc-5.0.5.RELEASE.jar:/usr/local/canal-admin/bin/../lib/spring-jcl-5.0.5.RELEASE.jar:/usr/local/canal-admin/bin/../lib/spring-expression-5.0.5.RELEASE.jar:/usr/local/canal-admin/bin/../lib/spring-core-5.0.5.RELEASE.jar:/usr/local/canal-admin/bin/../lib/spring-context-5.0.5.RELEASE.jar:/usr/local/canal-admin/bin/../lib/spring-boot-test-autoconfigure-2.0.1.RELEASE.jar:/usr/local/canal-admin/bin/../lib/spring-boot-test-2.0.1.RELEASE.jar:/usr/local/canal-admin/bin/../lib/spring-boot-starter-web-2.0.1.RELEASE.jar:/usr/local/canal-admin/bin/../lib/spring-boot-starter-tomcat-2.0.1.RELEASE.jar:/usr/local/canal-admin/bin/../lib/spring-boot-starter-test-2.0.1.RELEASE.jar:/usr/local/canal-admin/bin/../lib/spring-boot-starter-logging-2.0.1.RELEASE.jar:/usr/local/canal-admin/bin/../lib/spring-boot-starter-json-2.0.1.RELEASE.jar:/usr/local/canal-admin/bin/../lib/spring-boot-starter-jdbc-2.0.1.RELEASE.jar:/usr/local/canal-admin/bin/../lib/spring-boot-starter-2.0.1.RELEASE.jar:/usr/local/canal-admin/bin/../lib/spring-boot-autoconfigure-2.0.1.RELEASE.jar:/usr/local/canal-admin/bin/../lib/spring-boot-2.0.1.RELEASE.jar:/usr/local/canal-admin/bin/../lib/spring-beans-5.0.5.RELEASE.jar:/usr/local/canal-admin/bin/../lib/spring-aop-5.0.5.RELEASE.jar:/usr/local/canal-admin/bin/../lib/snakeyaml-1.19.jar:/usr/local/canal-admin/bin/../lib/slf4j-api-1.7.25.jar:/usr/local/canal-admin/bin/../lib/protobuf-java-3.6.1.jar:/usr/local/canal-admin/bin/../lib/persistence-api-2.2.2.jar:/usr/local/canal-admin/bin/../lib/objenesis-2.6.jar:/usr/local/canal-admin/bin/../lib/netty-all-4.1.23.Final.jar:/usr/local/canal-admin/bin/../lib/netty-3.2.2.Final.jar:/usr/local/canal-admin/bin/../lib/mysql-connector-java-5.1.48.jar:/usr/local/canal-admin/bin/../lib/mockito-core-2.15.0.jar:/usr/local/canal-admin/bin/../lib/logback-core-1.2.3.jar:/usr/local/canal-admin/bin/../lib/logback-classic-1.2.3.jar:/usr/local/canal-admin/bin/../lib/log4j-to-slf4j-2.10.0.jar:/usr/local/canal-admin/bin/../lib/log4j-api-2.10.0.jar:/usr/local/canal-admin/bin/../lib/jul-to-slf4j-1.7.25.jar:/usr/local/canal-admin/bin/../lib/jsr305-3.0.2.jar:/usr/local/canal-admin/bin/../lib/jsonassert-1.5.0.jar:/usr/local/canal-admin/bin/../lib/json-smart-2.3.jar:/usr/local/canal-admin/bin/../lib/json-path-2.4.0.jar:/usr/local/canal-admin/bin/../lib/jcl-over-slf4j-1.7.25.jar:/usr/local/canal-admin/bin/../lib/jboss-logging-3.3.2.Final.jar:/usr/local/canal-admin/bin/../lib/javax.annotation-api-1.3.2.jar:/usr/local/canal-admin/bin/../lib/jackson-module-parameter-names-2.9.5.jar:/usr/local/canal-admin/bin/../lib/jackson-datatype-jsr310-2.9.5.jar:/usr/local/canal-admin/bin/../lib/jackson-datatype-jdk8-2.9.5.jar:/usr/local/canal-admin/bin/../lib/jackson-databind-2.9.5.jar:/usr/local/canal-admin/bin/../lib/jackson-core-2.9.5.jar:/usr/local/canal-admin/bin/../lib/jackson-annotations-2.9.0.jar:/usr/local/canal-admin/bin/../lib/j2objc-annotations-1.1.jar:/usr/local/canal-admin/bin/../lib/hibernate-validator-6.0.9.Final.jar:/usr/local/canal-admin/bin/../lib/hamcrest-library-1.3.jar:/usr/local/canal-admin/bin/../lib/hamcrest-core-1.3.jar:/usr/local/canal-admin/bin/../lib/guava-22.0.jar:/usr/local/canal-admin/bin/../lib/fastjson-1.2.58.sec06.jar:/usr/local/canal-admin/bin/../lib/error_prone_annotations-2.0.18.jar:/usr/local/canal-admin/bin/../lib/ebean-types-1.3.jar:/usr/local/canal-admin/bin/../lib/ebean-migration-11.16.2.jar:/usr/local/canal-admin/bin/../lib/ebean-datasource-api-4.5.jar:/usr/local/canal-admin/bin/../lib/ebean-datasource-4.5.2.jar:/usr/local/canal-admin/bin/../lib/ebean-annotation-4.11.jar:/usr/local/canal-admin/bin/../lib/ebean-11.41.1.jar:/usr/local/canal-admin/bin/../lib/commons-logging-1.1.1.jar:/usr/local/canal-admin/bin/../lib/commons-lang-2.6.jar:/usr/local/canal-admin/bin/../lib/commons-io-2.4.jar:/usr/local/canal-admin/bin/../lib/commons-codec-1.11.jar:/usr/local/canal-admin/bin/../lib/commons-beanutils-1.8.2.jar:/usr/local/canal-admin/bin/../lib/classmate-1.3.4.jar:/usr/local/canal-admin/bin/../lib/canal.protocol-1.1.5.jar:/usr/local/canal-admin/bin/../lib/canal.common-1.1.5.jar:/usr/local/canal-admin/bin/../lib/canal.admin-web-1.1.5.jar:/usr/local/canal-admin/bin/../lib/caffeine-2.6.2.jar:/usr/local/canal-admin/bin/../lib/byte-buddy-agent-1.7.11.jar:/usr/local/canal-admin/bin/../lib/byte-buddy-1.7.11.jar:/usr/local/canal-admin/bin/../lib/avaje-classpath-scanner-api-2.2.jar:/usr/local/canal-admin/bin/../lib/avaje-classpath-scanner-3.1.1.jar:/usr/local/canal-admin/bin/../lib/assertj-core-3.9.1.jar:/usr/local/canal-admin/bin/../lib/asm-5.0.4.jar:/usr/local/canal-admin/bin/../lib/antlr4-runtime-4.7.2.jar:/usr/local/canal-admin/bin/../lib/animal-sniffer-annotations-1.14.jar:/usr/local/canal-admin/bin/../lib/android-json-0.0.20131108.vaadin1.jar:/usr/local/canal-admin/bin/../lib/accessors-smart-1.2.jar:/usr/local/canal-admin/bin/../lib/HikariCP-2.7.8.jar:
cd to /usr/local/canal-admin/bin for continue
[admin@0209306f10bf bin]$ cd /usr/local/canal-admin/bin/
[admin@0209306f10bf bin]$ ll
total 20K
-rw-rw-r-- 1 admin admin    6 Jan 10 18:46 admin.pid
-rwxr-xr-x 1 admin admin  205 Apr 19  2021 restart.sh
-rwxr-xr-x 1 admin admin  747 Apr 19  2021 startup.bat
-rwxr-xr-x 1 admin admin 2.0K Apr 19  2021 startup.sh
-rwxr-xr-x 1 admin admin 1.4K Apr 19  2021 stop.sh
[admin@0209306f10bf bin]$ netstat -tulnp | grep 8089
tcp        0      0 0.0.0.0:8089            0.0.0.0:*               LISTEN      28703/java
[admin@0209306f10bf bin]$ ps -ef|grep java
admin    28703     0 66 18:46 pts/1    00:01:01 /usr/bin/java -server -Xms1024m -Xmx1024m -XX:+UseG1GC -XX:MaxGCPauseMillis=250 -XX:+UseGCOverheadLimit -XX:+ExplicitGCInvokesConcurrent -XX:+PrintAdaptiveSizePolicy -XX:+PrintTenuringDistribution -Djava.awt.headless=true -Djava.net.preferIPv4Stack=true -Dfile.encoding=UTF-8 -DappName=canal-admin -classpath .:/usr/local/canal-admin/bin/../conf:/usr/local/canal-admin/bin/../lib/zookeeper-3.4.5.jar:/usr/local/canal-admin/bin/../lib/zkclient-0.10.jar:/usr/local/canal-admin/bin/../lib/xmlunit-core-2.5.1.jar:/usr/local/canal-admin/bin/../lib/validation-api-2.0.1.Final.jar:/usr/local/canal-admin/bin/../lib/tomcat-embed-websocket-8.5.29.jar:/usr/local/canal-admin/bin/../lib/tomcat-embed-el-8.5.29.jar:/usr/local/canal-admin/bin/../lib/tomcat-embed-core-8.5.29.jar:/usr/local/canal-admin/bin/../lib/spring-webmvc-5.0.5.RELEASE.jar:/usr/local/canal-admin/bin/../lib/spring-web-5.0.5.RELEASE.jar:/usr/local/canal-admin/bin/../lib/spring-tx-5.0.5.RELEASE.jar:/usr/local/canal-admin/bin/../lib/spring-orm-5.0.5.RELEASE.jar:/usr/local/canal-admin/bin/../lib/spring-jdbc-5.0.5.RELEASE.jar:/usr/local/canal-admin/bin/../lib/spring-jcl-5.0.5.RELEASE.jar:/usr/local/canal-admin/bin/../lib/spring-expression-5.0.5.RELEASE.jar:/usr/local/canal-admin/bin/../lib/spring-core-5.0.5.RELEASE.jar:/usr/local/canal-admin/bin/../lib/spring-context-5.0.5.RELEASE.jar:/usr/local/canal-admin/bin/../lib/spring-boot-test-autoconfigure-2.0.1.RELEASE.jar:/usr/local/canal-admin/bin/../lib/spring-boot-test-2.0.1.RELEASE.jar:/usr/local/canal-admin/bin/../lib/spring-boot-starter-web-2.0.1.RELEASE.jar:/usr/local/canal-admin/bin/../lib/spring-boot-starter-tomcat-2.0.1.RELEASE.jar:/usr/local/canal-admin/bin/../lib/spring-boot-starter-test-2.0.1.RELEASE.jar:/usr/local/canal-admin/bin/../lib/spring-boot-starter-logging-2.0.1.RELEASE.jar:/usr/local/canal-admin/bin/../lib/spring-boot-starter-json-2.0.1.RELEASE.jar:/usr/local/canal-admin/bin/../lib/spring-boot-starter-jdbc-2.0.1.RELEASE.jar:/usr/local/canal-admin/bin/../lib/spring-boot-starter-2.0.1.RELEASE.jar:/usr/local/canal-admin/bin/../lib/spring-boot-autoconfigure-2.0.1.RELEASE.jar:/usr/local/canal-admin/bin/../lib/spring-boot-2.0.1.RELEASE.jar:/usr/local/canal-admin/bin/../lib/spring-beans-5.0.5.RELEASE.jar:/usr/local/canal-admin/bin/../lib/spring-aop-5.0.5.RELEASE.jar:/usr/local/canal-admin/bin/../lib/snakeyaml-1.19.jar:/usr/local/canal-admin/bin/../lib/slf4j-api-1.7.25.jar:/usr/local/canal-admin/bin/../lib/protobuf-java-3.6.1.jar:/usr/local/canal-admin/bin/../lib/persistence-api-2.2.2.jar:/usr/local/canal-admin/bin/../lib/objenesis-2.6.jar:/usr/local/canal-admin/bin/../lib/netty-all-4.1.23.Final.jar:/usr/local/canal-admin/bin/../lib/netty-3.2.2.Final.jar:/usr/local/canal-admin/bin/../lib/mysql-connector-java-5.1.48.jar:/usr/local/canal-admin/bin/../lib/mockito-core-2.15.0.jar:/usr/local/canal-admin/bin/../lib/logback-core-1.2.3.jar:/usr/local/canal-admin/bin/../lib/logback-classic-1.2.3.jar:/usr/local/canal-admin/bin/../lib/log4j-to-slf4j-2.10.0.jar:/usr/local/canal-admin/bin/../lib/log4j-api-2.10.0.jar:/usr/local/canal-admin/bin/../lib/jul-to-slf4j-1.7.25.jar:/usr/local/canal-admin/bin/../lib/jsr305-3.0.2.jar:/usr/local/canal-admin/bin/../lib/jsonassert-1.5.0.jar:/usr/local/canal-admin/bin/../lib/json-smart-2.3.jar:/usr/local/canal-admin/bin/../lib/json-path-2.4.0.jar:/usr/local/canal-admin/bin/../lib/jcl-over-slf4j-1.7.25.jar:/usr/local/canal-admin/bin/../lib/jboss-logging-3.3.2.Final.jar:/usr/local/canal-admin/bin/../lib/javax.annotation-api-1.3.2.jar:/usr/local/canal-admin/bin/../lib/jackson-module-parameter-names-2.9.5.jar:/usr/local/canal-admin/bin/../lib/jackson-datatype-jsr310-2.9.5.jar:/usr/local/canal-admin/bin/../lib/jackson-datatype-jdk8-2.9.5.jar:/usr/local/canal-admin/bin/../lib/jackson-databind-2.9.5.jar:/usr/local/canal-admin/bin/../lib/jackson-core-2.9.5.jar:/usr/local/canal-admin/bin/../lib/jackson-annotations-2.9.0.jar:/usr/local/canal-admin/bin/../lib/j2objc-annotations-1.1.jar:/usr/local/canal-admin/bin/../lib/hibernate-validator-6.0.9.Final.jar:/usr/local/canal-admin/bin/../lib/hamcrest-library-1.3.jar:/usr/local/canal-admin/bin/../lib/hamcrest-core-1.3.jar:/usr/local/canal-admin/bin/../lib/guava-22.0.jar:/usr/local/canal-admin/bin/../lib/fastjson-1.2.58.sec06.jar:/usr/local/canal-admin/bin/../lib/error_prone_annotations-2.0.18.jar:/usr/local/canal-admin/bin/../lib/ebean-types-1.3.jar:/usr/local/canal-admin/bin/../lib/ebean-migration-11.16.2.jar:/usr/local/canal-admin/bin/../lib/ebean-datasource-api-4.5.jar:/usr/local/canal-admin/bin/../lib/ebean-datasource-4.5.2.jar:/usr/local/canal-admin/bin/../lib/ebean-annotation-4.11.jar:/usr/local/canal-admin/bin/../lib/ebean-11.41.1.jar:/usr/local/canal-admin/bin/../lib/commons-logging-1.1.1.jar:/usr/local/canal-admin/bin/../lib/commons-lang-2.6.jar:/usr/local/canal-admin/bin/../lib/commons-io-2.4.jar:/usr/local/canal-admin/bin/../lib/commons-codec-1.11.jar:/usr/local/canal-admin/bin/../lib/commons-beanutils-1.8.2.jar:/usr/local/canal-admin/bin/../lib/classmate-1.3.4.jar:/usr/local/canal-admin/bin/../lib/canal.protocol-1.1.5.jar:/usr/local/canal-admin/bin/../lib/canal.common-1.1.5.jar:/usr/local/canal-admin/bin/../lib/canal.admin-web-1.1.5.jar:/usr/local/canal-admin/bin/../lib/caffeine-2.6.2.jar:/usr/local/canal-admin/bin/../lib/byte-buddy-agent-1.7.11.jar:/usr/local/canal-admin/bin/../lib/byte-buddy-1.7.11.jar:/usr/local/canal-admin/bin/../lib/avaje-classpath-scanner-api-2.2.jar:/usr/local/canal-admin/bin/../lib/avaje-classpath-scanner-3.1.1.jar:/usr/local/canal-admin/bin/../lib/assertj-core-3.9.1.jar:/usr/local/canal-admin/bin/../lib/asm-5.0.4.jar:/usr/local/canal-admin/bin/../lib/antlr4-runtime-4.7.2.jar:/usr/local/canal-admin/bin/../lib/animal-sniffer-annotations-1.14.jar:/usr/local/canal-admin/bin/../lib/android-json-0.0.20131108.vaadin1.jar:/usr/local/canal-admin/bin/../lib/accessors-smart-1.2.jar:/usr/local/canal-admin/bin/../lib/HikariCP-2.7.8.jar: com.alibaba.otter.canal.admin.CanalAdminApplication
admin    29139    23  0 18:47 pts/1    00:00:00 grep --color=auto java

查看 canal-admin 的 web 服务:

http://172.17.0.2:8089 admin/123456

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gg02YP7e-1641900939604)(https://cdn.jsdelivr.net/gh/lhrbest/pic/img_2022/202201101852511.png)]

这里,需要在图形界面修改密码为admin123 ,然后在mysql中查询:

MySQL [canal_manager]> select * from canal_user;
+----+----------+------------------------------------------+---------------+-------+--------------+--------+---------------------+
| id | username | password                                 | name          | roles | introduction | avatar | creation_date       |
+----+----------+------------------------------------------+---------------+-------+--------------+--------+---------------------+
|  1 | admin    | 01a6717b58ff5c7eafff6cb7c96f7428ea65fe4c | Canal Manager | admin | NULL         | NULL   | 2022-01-10 19:25:50 |
+----+----------+------------------------------------------+---------------+-------+--------------+--------+---------------------+
1 row in set (0.23 sec)

部署canal deployer

下载安装canal deployer并解压

wget https://github.com/alibaba/canal/releases/download/canal-1.1.5/canal.deployer-1.1.5.tar.gz
tar -zxvf canal.deployer-1.1.5.tar.gz -C /usr/local/canal-deployer

修改配置文件

canal Admin 部署 server 和 instance,配置文件 conf/canal_local.properties 替换 conf/canal.properties。需要修改 conf/canal.properties 里的 manager 地址,其他参数值可以保持默认。

cd /usr/local/canal-deployer/conf
mv canal_local.properties canal.properties && vim canal.properties[admin@0209306f10bf conf]$ cat canal.properties
# register ip
canal.register.ip =# canal admin config
canal.admin.manager = 127.0.0.1:8089
canal.admin.port = 11110
canal.admin.user = admin
canal.admin.passwd = 01a6717b58ff5c7eafff6cb7c96f7428ea65fe4c
# admin auto register
canal.admin.register.auto = true
canal.admin.register.cluster =
canal.admin.register.name =

这里是本机部署,需要修改canal.admin.passwd即可。

启动 canal-deployer 服务

cd /usr/local/canal-deployer/bin/ && ./startup.sh

查看:

[admin@0209306f10bf ~]$ ps -ef|grep java
admin     3097     0  6 19:27 pts/1    00:00:05 /usr/bin/java -server -Xms2048m -Xmx3072m -Xmn1024m -XX:SurvivorRatio=2 -XX:PermSize=96m -XX:MaxPermSize=256m -Xss256k -XX:-UseAdaptiveSizePolicy -XX:MaxTenuringThreshold=15 -XX:+DisableExplicitGC -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled -XX:+UseCMSCompactAtFullCollection -XX:+UseFastAccessorMethods -XX:+UseCMSInitiatingOccupancyOnly -XX:+HeapDumpOnOutOfMemoryError -Djava.awt.headless=true -Djava.net.preferIPv4Stack=true -Dfile.encoding=UTF-8 -DappName=otter-canal -Dlogback.configurationFile=/usr/local/canal-deployer/bin/../conf/logback.xml -Dcanal.conf=/usr/local/canal-deployer/bin/../conf/canal.properties -classpath .:/usr/local/canal-deployer/bin/../conf:/usr/local/canal-deployer/bin/../lib/zookeeper-3.4.5.jar:/usr/local/canal-deployer/bin/../lib/zkclient-0.10.jar:/usr/local/canal-deployer/bin/../lib/spring-tx-5.0.5.RELEASE.jar:/usr/local/canal-deployer/bin/../lib/spring-orm-5.0.5.RELEASE.jar:/usr/local/canal-deployer/bin/../lib/spring-jdbc-5.0.5.RELEASE.jar:/usr/local/canal-deployer/bin/../lib/spring-jcl-5.0.5.RELEASE.jar:/usr/local/canal-deployer/bin/../lib/spring-expression-5.0.5.RELEASE.jar:/usr/local/canal-deployer/bin/../lib/spring-core-5.0.5.RELEASE.jar:/usr/local/canal-deployer/bin/../lib/spring-context-5.0.5.RELEASE.jar:/usr/local/canal-deployer/bin/../lib/spring-beans-5.0.5.RELEASE.jar:/usr/local/canal-deployer/bin/../lib/spring-aop-5.0.5.RELEASE.jar:/usr/local/canal-deployer/bin/../lib/slf4j-api-1.7.12.jar:/usr/local/canal-deployer/bin/../lib/simpleclient_pushgateway-0.4.0.jar:/usr/local/canal-deployer/bin/../lib/simpleclient_httpserver-0.4.0.jar:/usr/local/canal-deployer/bin/../lib/simpleclient_hotspot-0.4.0.jar:/usr/local/canal-deployer/bin/../lib/simpleclient_common-0.4.0.jar:/usr/local/canal-deployer/bin/../lib/simpleclient-0.4.0.jar:/usr/local/canal-deployer/bin/../lib/protobuf-java-3.6.1.jar:/usr/local/canal-deployer/bin/../lib/oro-2.0.8.jar:/usr/local/canal-deployer/bin/../lib/netty-all-4.1.6.Final.jar:/usr/local/canal-deployer/bin/../lib/netty-3.2.2.Final.jar:/usr/local/canal-deployer/bin/../lib/mysql-connector-java-5.1.48.jar:/usr/local/canal-deployer/bin/../lib/mybatis-spring-2.0.4.jar:/usr/local/canal-deployer/bin/../lib/mybatis-3.5.4.jar:/usr/local/canal-deployer/bin/../lib/logback-core-1.1.3.jar:/usr/local/canal-deployer/bin/../lib/logback-classic-1.1.3.jar:/usr/local/canal-deployer/bin/../lib/jsr305-3.0.2.jar:/usr/local/canal-deployer/bin/../lib/joda-time-2.9.4.jar:/usr/local/canal-deployer/bin/../lib/jctools-core-2.1.2.jar:/usr/local/canal-deployer/bin/../lib/jcl-over-slf4j-1.7.12.jar:/usr/local/canal-deployer/bin/../lib/javax.annotation-api-1.3.2.jar:/usr/local/canal-deployer/bin/../lib/j2objc-annotations-1.1.jar:/usr/local/canal-deployer/bin/../lib/httpcore-4.4.3.jar:/usr/local/canal-deployer/bin/../lib/httpclient-4.5.1.jar:/usr/local/canal-deployer/bin/../lib/h2-1.4.196.jar:/usr/local/canal-deployer/bin/../lib/guava-22.0.jar:/usr/local/canal-deployer/bin/../lib/fastjson-1.2.58.sec06.jar:/usr/local/canal-deployer/bin/../lib/error_prone_annotations-2.0.18.jar:/usr/local/canal-deployer/bin/../lib/druid-1.2.6.jar:/usr/local/canal-deployer/bin/../lib/disruptor-3.4.2.jar:/usr/local/canal-deployer/bin/../lib/connector.core-1.1.5.jar:/usr/local/canal-deployer/bin/../lib/commons-logging-1.2.jar:/usr/local/canal-deployer/bin/../lib/commons-lang3-3.7.jar:/usr/local/canal-deployer/bin/../lib/commons-lang-2.6.jar:/usr/local/canal-deployer/bin/../lib/commons-io-2.4.jar:/usr/local/canal-deployer/bin/../lib/commons-compress-1.9.jar:/usr/local/canal-deployer/bin/../lib/commons-codec-1.9.jar:/usr/local/canal-deployer/bin/../lib/commons-beanutils-1.8.2.jar:/usr/local/canal-deployer/bin/../lib/canal.store-1.1.5.jar:/usr/local/canal-deployer/bin/../lib/canal.sink-1.1.5.jar:/usr/local/canal-deployer/bin/../lib/canal.server-1.1.5.jar:/usr/local/canal-deployer/bin/../lib/canal.protocol-1.1.5.jar:/usr/local/canal-deployer/bin/../lib/canal.prometheus-1.1.5.jar:/usr/local/canal-deployer/bin/../lib/canal.parse.driver-1.1.5.jar:/usr/local/canal-deployer/bin/../lib/canal.parse.dbsync-1.1.5.jar:/usr/local/canal-deployer/bin/../lib/canal.parse-1.1.5.jar:/usr/local/canal-deployer/bin/../lib/canal.meta-1.1.5.jar:/usr/local/canal-deployer/bin/../lib/canal.instance.spring-1.1.5.jar:/usr/local/canal-deployer/bin/../lib/canal.instance.manager-1.1.5.jar:/usr/local/canal-deployer/bin/../lib/canal.instance.core-1.1.5.jar:/usr/local/canal-deployer/bin/../lib/canal.filter-1.1.5.jar:/usr/local/canal-deployer/bin/../lib/canal.deployer-1.1.5.jar:/usr/local/canal-deployer/bin/../lib/canal.common-1.1.5.jar:/usr/local/canal-deployer/bin/../lib/aviator-2.2.1.jar:/usr/local/canal-deployer/bin/../lib/animal-sniffer-annotations-1.14.jar: com.alibaba.otter.canal.deployer.CanalLauncher
admin     3327    23  0 19:28 pts/1    00:00:00 grep --color=auto java
admin    31216     0  4 19:01 pts/1    00:01:11 /usr/bin/java -server -Xms2048m -Xmx3072m -XX:+UseG1GC -XX:MaxGCPauseMillis=250 -XX:+UseGCOverheadLimit -XX:+ExplicitGCInvokesConcurrent -XX:+PrintAdaptiveSizePolicy -XX:+PrintTenuringDistribution -Djava.awt.headless=true -Djava.net.preferIPv4Stack=true -Dfile.encoding=UTF-8 -DappName=canal-admin -classpath .:/usr/local/canal-admin/bin/../conf:/usr/local/canal-admin/bin/../lib/zookeeper-3.4.5.jar:/usr/local/canal-admin/bin/../lib/zkclient-0.10.jar:/usr/local/canal-admin/bin/../lib/xmlunit-core-2.5.1.jar:/usr/local/canal-admin/bin/../lib/validation-api-2.0.1.Final.jar:/usr/local/canal-admin/bin/../lib/tomcat-embed-websocket-8.5.29.jar:/usr/local/canal-admin/bin/../lib/tomcat-embed-el-8.5.29.jar:/usr/local/canal-admin/bin/../lib/tomcat-embed-core-8.5.29.jar:/usr/local/canal-admin/bin/../lib/spring-webmvc-5.0.5.RELEASE.jar:/usr/local/canal-admin/bin/../lib/spring-web-5.0.5.RELEASE.jar:/usr/local/canal-admin/bin/../lib/spring-tx-5.0.5.RELEASE.jar:/usr/local/canal-admin/bin/../lib/spring-orm-5.0.5.RELEASE.jar:/usr/local/canal-admin/bin/../lib/spring-jdbc-5.0.5.RELEASE.jar:/usr/local/canal-admin/bin/../lib/spring-jcl-5.0.5.RELEASE.jar:/usr/local/canal-admin/bin/../lib/spring-expression-5.0.5.RELEASE.jar:/usr/local/canal-admin/bin/../lib/spring-core-5.0.5.RELEASE.jar:/usr/local/canal-admin/bin/../lib/spring-context-5.0.5.RELEASE.jar:/usr/local/canal-admin/bin/../lib/spring-boot-test-autoconfigure-2.0.1.RELEASE.jar:/usr/local/canal-admin/bin/../lib/spring-boot-test-2.0.1.RELEASE.jar:/usr/local/canal-admin/bin/../lib/spring-boot-starter-web-2.0.1.RELEASE.jar:/usr/local/canal-admin/bin/../lib/spring-boot-starter-tomcat-2.0.1.RELEASE.jar:/usr/local/canal-admin/bin/../lib/spring-boot-starter-test-2.0.1.RELEASE.jar:/usr/local/canal-admin/bin/../lib/spring-boot-starter-logging-2.0.1.RELEASE.jar:/usr/local/canal-admin/bin/../lib/spring-boot-starter-json-2.0.1.RELEASE.jar:/usr/local/canal-admin/bin/../lib/spring-boot-starter-jdbc-2.0.1.RELEASE.jar:/usr/local/canal-admin/bin/../lib/spring-boot-starter-2.0.1.RELEASE.jar:/usr/local/canal-admin/bin/../lib/spring-boot-autoconfigure-2.0.1.RELEASE.jar:/usr/local/canal-admin/bin/../lib/spring-boot-2.0.1.RELEASE.jar:/usr/local/canal-admin/bin/../lib/spring-beans-5.0.5.RELEASE.jar:/usr/local/canal-admin/bin/../lib/spring-aop-5.0.5.RELEASE.jar:/usr/local/canal-admin/bin/../lib/snakeyaml-1.19.jar:/usr/local/canal-admin/bin/../lib/slf4j-api-1.7.25.jar:/usr/local/canal-admin/bin/../lib/protobuf-java-3.6.1.jar:/usr/local/canal-admin/bin/../lib/persistence-api-2.2.2.jar:/usr/local/canal-admin/bin/../lib/objenesis-2.6.jar:/usr/local/canal-admin/bin/../lib/netty-all-4.1.23.Final.jar:/usr/local/canal-admin/bin/../lib/netty-3.2.2.Final.jar:/usr/local/canal-admin/bin/../lib/mysql-connector-java-5.1.48.jar:/usr/local/canal-admin/bin/../lib/mockito-core-2.15.0.jar:/usr/local/canal-admin/bin/../lib/logback-core-1.2.3.jar:/usr/local/canal-admin/bin/../lib/logback-classic-1.2.3.jar:/usr/local/canal-admin/bin/../lib/log4j-to-slf4j-2.10.0.jar:/usr/local/canal-admin/bin/../lib/log4j-api-2.10.0.jar:/usr/local/canal-admin/bin/../lib/jul-to-slf4j-1.7.25.jar:/usr/local/canal-admin/bin/../lib/jsr305-3.0.2.jar:/usr/local/canal-admin/bin/../lib/jsonassert-1.5.0.jar:/usr/local/canal-admin/bin/../lib/json-smart-2.3.jar:/usr/local/canal-admin/bin/../lib/json-path-2.4.0.jar:/usr/local/canal-admin/bin/../lib/jcl-over-slf4j-1.7.25.jar:/usr/local/canal-admin/bin/../lib/jboss-logging-3.3.2.Final.jar:/usr/local/canal-admin/bin/../lib/javax.annotation-api-1.3.2.jar:/usr/local/canal-admin/bin/../lib/jackson-module-parameter-names-2.9.5.jar:/usr/local/canal-admin/bin/../lib/jackson-datatype-jsr310-2.9.5.jar:/usr/local/canal-admin/bin/../lib/jackson-datatype-jdk8-2.9.5.jar:/usr/local/canal-admin/bin/../lib/jackson-databind-2.9.5.jar:/usr/local/canal-admin/bin/../lib/jackson-core-2.9.5.jar:/usr/local/canal-admin/bin/../lib/jackson-annotations-2.9.0.jar:/usr/local/canal-admin/bin/../lib/j2objc-annotations-1.1.jar:/usr/local/canal-admin/bin/../lib/hibernate-validator-6.0.9.Final.jar:/usr/local/canal-admin/bin/../lib/hamcrest-library-1.3.jar:/usr/local/canal-admin/bin/../lib/hamcrest-core-1.3.jar:/usr/local/canal-admin/bin/../lib/guava-22.0.jar:/usr/local/canal-admin/bin/../lib/fastjson-1.2.58.sec06.jar:/usr/local/canal-admin/bin/../lib/error_prone_annotations-2.0.18.jar:/usr/local/canal-admin/bin/../lib/ebean-types-1.3.jar:/usr/local/canal-admin/bin/../lib/ebean-migration-11.16.2.jar:/usr/local/canal-admin/bin/../lib/ebean-datasource-api-4.5.jar:/usr/local/canal-admin/bin/../lib/ebean-datasource-4.5.2.jar:/usr/local/canal-admin/bin/../lib/ebean-annotation-4.11.jar:/usr/local/canal-admin/bin/../lib/ebean-11.41.1.jar:/usr/local/canal-admin/bin/../lib/commons-logging-1.1.1.jar:/usr/local/canal-admin/bin/../lib/commons-lang-2.6.jar:/usr/local/canal-admin/bin/../lib/commons-io-2.4.jar:/usr/local/canal-admin/bin/../lib/commons-codec-1.11.jar:/usr/local/canal-admin/bin/../lib/commons-beanutils-1.8.2.jar:/usr/local/canal-admin/bin/../lib/classmate-1.3.4.jar:/usr/local/canal-admin/bin/../lib/canal.protocol-1.1.5.jar:/usr/local/canal-admin/bin/../lib/canal.common-1.1.5.jar:/usr/local/canal-admin/bin/../lib/canal.admin-web-1.1.5.jar:/usr/local/canal-admin/bin/../lib/caffeine-2.6.2.jar:/usr/local/canal-admin/bin/../lib/byte-buddy-agent-1.7.11.jar:/usr/local/canal-admin/bin/../lib/byte-buddy-1.7.11.jar:/usr/local/canal-admin/bin/../lib/avaje-classpath-scanner-api-2.2.jar:/usr/local/canal-admin/bin/../lib/avaje-classpath-scanner-3.1.1.jar:/usr/local/canal-admin/bin/../lib/assertj-core-3.9.1.jar:/usr/local/canal-admin/bin/../lib/asm-5.0.4.jar:/usr/local/canal-admin/bin/../lib/antlr4-runtime-4.7.2.jar:/usr/local/canal-admin/bin/../lib/animal-sniffer-annotations-1.14.jar:/usr/local/canal-admin/bin/../lib/android-json-0.0.20131108.vaadin1.jar:/usr/local/canal-admin/bin/../lib/accessors-smart-1.2.jar:/usr/local/canal-admin/bin/../lib/HikariCP-2.7.8.jar: com.alibaba.otter.canal.admin.CanalAdminApplication
[admin@0209306f10bf ~]$ netstat -tulnp | grep 11110
tcp        0      0 0.0.0.0:11110           0.0.0.0:*               LISTEN      3097/java
[admin@0209306f10bf ~]$ netstat -tulnp | grep 8089
tcp        0      0 0.0.0.0:8089            0.0.0.0:*               LISTEN      31216/java

通过 canal-admin 的 web 服务配置 canal server 和 canal instance

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oxdlctEQ-1641900939606)(https://cdn.jsdelivr.net/gh/lhrbest/pic/img_2022/202201101931971.png)]

创建 canal instance 并启动

#################################################
## mysql serverId , v1.0.26+ will autoGen
canal.instance.mysql.slaveId=57363418# enable gtid use true/false
canal.instance.gtidon=false# position info
canal.instance.master.address=172.17.0.3:3306
canal.instance.master.journal.name=
canal.instance.master.position=
canal.instance.master.timestamp=
canal.instance.master.gtid=# rds oss binlog
canal.instance.rds.accesskey=
canal.instance.rds.secretkey=
canal.instance.rds.instanceId=# table meta tsdb info
canal.instance.tsdb.enable=true
#canal.instance.tsdb.url=jdbc:mysql://127.0.0.1:3306/canal_tsdb
#canal.instance.tsdb.dbUsername=canal
#canal.instance.tsdb.dbPassword=canal#canal.instance.standby.address =
#canal.instance.standby.journal.name =
#canal.instance.standby.position =
#canal.instance.standby.timestamp =
#canal.instance.standby.gtid=# username/password
canal.instance.dbUsername=root
canal.instance.dbPassword=lhr
canal.instance.connectionCharset = UTF-8
# enable druid Decrypt database password
canal.instance.enableDruid=false
#canal.instance.pwdPublicKey=MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBALK4BUxdDltRRE5/zXpVEVPUgunvscYFtEip3pmLlhrWpacX7y7GCMo2/JM6LeHmiiNdH1FWgGCpUfircSwlWKUCAwEAAQ==# table regex
canal.instance.filter.regex=.*\\..*
# table black regex
canal.instance.filter.black.regex=
# table field filter(format: schema1.tableName1:field1/field2,schema2.tableName2:field1/field2)
#canal.instance.filter.field=test1.t_product:id/subject/keywords,test2.t_company:id/name/contact/ch
# table field black filter(format: schema1.tableName1:field1/field2,schema2.tableName2:field1/field2)
#canal.instance.filter.black.field=test1.t_product:subject/product_image,test2.t_company:id/name/contact/ch# mq config
canal.mq.topic=example
# dynamic topic route by schema or table regex
#canal.mq.dynamicTopic=mytest1.user,mytest2\\..*,.*\\..*
canal.mq.partition=0
# hash partition config
#canal.mq.partitionsNum=3
#canal.mq.partitionHash=test.table:id^name,.*\\..*
#################################################

部署 canal adapter

wget https://github.com/alibaba/canal/releases/download/canal-1.1.5/canal.adapter-1.1.5.tar.gz
tar -zxvf canal.adapter-1.1.5.tar.gz -C /usr/local/canal-adaptercd /usr/local/canal-adapter/conf/ && vim application.ymlcat > /usr/local/canal-adapter/conf/application.yml <<"EOF"
server:port: 8081
spring:jackson:date-format: yyyy-MM-dd HH:mm:sstime-zone: GMT+8default-property-inclusion: non_nullcanal.conf:mode: tcp #tcp kafka rocketMQ rabbitMQflatMessage: truezookeeperHosts:syncBatchSize: 1000retries: 0timeout:accessKey:secretKey:consumerProperties:# canal tcp consumercanal.tcp.server.host: 127.0.0.1:11111canal.tcp.zookeeper.hosts:canal.tcp.batch.size: 500canal.tcp.username: admincanal.tcp.password: 4ACFE3202A5FF5CF467898FC58AAB1D615029441canalAdapters:- instance: canal1 # canal instance Name or mq topic namegroups:- groupId: group1outerAdapters:- name: logger- name: rdbkey: oceanbase1properties:jdbc.driverClassName: com.mysql.jdbc.Driverjdbc.url: jdbc:mysql://172.17.0.2:2883/sbtest?useUnicode=truejdbc.username: root@sys#obce-singlejdbc.password: lhr
EOF

修改RDB 映射文件:conf/rdb/mytest_user.yml


cat > /usr/local/canal-adapter/conf/rdb/mytest_user.yml <<"EOF"
dataSourceKey: defaultDS
destination: canal1
groupId: g1
outerAdapterKey: oceanbase1
concurrent: true
dbMapping:mirrorDb: truedatabase: sbtest
EOF
  • destination: 指定的是 canal instance 名称
  • outerAdapterKey: 指定的是application.yml文件中的key

启动 canal adapter 服务

cd /usr/local/canal-adapter/bin/ && ./startup.sh

进程:

[admin@0209306f10bf bin]$ ps -ef|grep java
admin     1537     0 99 17:32 pts/3    00:00:53 /usr/bin/java -server -Xms2048m -Xmx3072m -Xmn1024m -XX:SurvivorRatio=2 -XX:PermSize=96m -XX:MaxPermSize=256m -Xss256k -XX:-UseAdaptiveSizePolicy -XX:MaxTenuringThreshold=15 -XX:+DisableExplicitGC -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled -XX:+UseCMSCompactAtFullCollection -XX:+UseFastAccessorMethods -XX:+UseCMSInitiatingOccupancyOnly -XX:+HeapDumpOnOutOfMemoryError -Djava.awt.headless=true -Djava.net.preferIPv4Stack=true -Dfile.encoding=UTF-8 -DappName=canal-adapter -classpath .:/usr/local/canal-adapter/bin/../conf:/usr/local/canal-adapter/bin/../lib/zookeeper-3.4.5.jar:/usr/local/canal-adapter/bin/../lib/zkclient-0.10.jar:/usr/local/canal-adapter/bin/../lib/validation-api-2.0.1.Final.jar:/usr/local/canal-adapter/bin/../lib/tomcat-embed-websocket-8.5.29.jar:/usr/local/canal-adapter/bin/../lib/tomcat-embed-el-8.5.29.jar:/usr/local/canal-adapter/bin/../lib/tomcat-embed-core-8.5.29.jar:/usr/local/canal-adapter/bin/../lib/spring-webmvc-5.0.5.RELEASE.jar:/usr/local/canal-adapter/bin/../lib/spring-web-5.0.5.RELEASE.jar:/usr/local/canal-adapter/bin/../lib/spring-tx-5.0.5.RELEASE.jar:/usr/local/canal-adapter/bin/../lib/spring-security-crypto-5.0.4.RELEASE.jar:/usr/local/canal-adapter/bin/../lib/spring-orm-5.0.5.RELEASE.jar:/usr/local/canal-adapter/bin/../lib/spring-jdbc-5.0.5.RELEASE.jar:/usr/local/canal-adapter/bin/../lib/spring-jcl-5.0.5.RELEASE.jar:/usr/local/canal-adapter/bin/../lib/spring-expression-5.0.5.RELEASE.jar:/usr/local/canal-adapter/bin/../lib/spring-core-5.0.5.RELEASE.jar:/usr/local/canal-adapter/bin/../lib/spring-context-5.0.5.RELEASE.jar:/usr/local/canal-adapter/bin/../lib/spring-cloud-context-2.0.0.RELEASE.jar:/usr/local/canal-adapter/bin/../lib/spring-boot-starter-web-2.0.1.RELEASE.jar:/usr/local/canal-adapter/bin/../lib/spring-boot-starter-tomcat-2.0.1.RELEASE.jar:/usr/local/canal-adapter/bin/../lib/spring-boot-starter-logging-2.0.1.RELEASE.jar:/usr/local/canal-adapter/bin/../lib/spring-boot-starter-json-2.0.1.RELEASE.jar:/usr/local/canal-adapter/bin/../lib/spring-boot-starter-2.0.1.RELEASE.jar:/usr/local/canal-adapter/bin/../lib/spring-boot-autoconfigure-2.0.1.RELEASE.jar:/usr/local/canal-adapter/bin/../lib/spring-boot-2.0.1.RELEASE.jar:/usr/local/canal-adapter/bin/../lib/spring-beans-5.0.5.RELEASE.jar:/usr/local/canal-adapter/bin/../lib/spring-aop-5.0.5.RELEASE.jar:/usr/local/canal-adapter/bin/../lib/snakeyaml-1.19.jar:/usr/local/canal-adapter/bin/../lib/slf4j-api-1.7.12.jar:/usr/local/canal-adapter/bin/../lib/protobuf-java-3.6.1.jar:/usr/local/canal-adapter/bin/../lib/postgresql-42.1.4.jar:/usr/local/canal-adapter/bin/../lib/oro-2.0.8.jar:/usr/local/canal-adapter/bin/../lib/ojdbc6-11.2.0.3.jar:/usr/local/canal-adapter/bin/../lib/netty-all-4.1.6.Final.jar:/usr/local/canal-adapter/bin/../lib/netty-3.2.2.Final.jar:/usr/local/canal-adapter/bin/../lib/mysql-connector-java-5.1.48.jar:/usr/local/canal-adapter/bin/../lib/mssql-jdbc-7.0.0.jre8.jar:/usr/local/canal-adapter/bin/../lib/logback-core-1.1.3.jar:/usr/local/canal-adapter/bin/../lib/logback-classic-1.1.3.jar:/usr/local/canal-adapter/bin/../lib/log4j-to-slf4j-2.10.0.jar:/usr/local/canal-adapter/bin/../lib/log4j-api-2.10.0.jar:/usr/local/canal-adapter/bin/../lib/log4j-1.2.17.jar:/usr/local/canal-adapter/bin/../lib/jul-to-slf4j-1.7.25.jar:/usr/local/canal-adapter/bin/../lib/jsr305-3.0.2.jar:/usr/local/canal-adapter/bin/../lib/joda-time-2.9.4.jar:/usr/local/canal-adapter/bin/../lib/jcl-over-slf4j-1.7.12.jar:/usr/local/canal-adapter/bin/../lib/jboss-logging-3.3.2.Final.jar:/usr/local/canal-adapter/bin/../lib/javax.annotation-api-1.3.2.jar:/usr/local/canal-adapter/bin/../lib/jackson-module-parameter-names-2.9.5.jar:/usr/local/canal-adapter/bin/../lib/jackson-datatype-jsr310-2.9.5.jar:/usr/local/canal-adapter/bin/../lib/jackson-datatype-jdk8-2.9.5.jar:/usr/local/canal-adapter/bin/../lib/jackson-databind-2.9.5.jar:/usr/local/canal-adapter/bin/../lib/jackson-core-2.9.5.jar:/usr/local/canal-adapter/bin/../lib/jackson-annotations-2.9.0.jar:/usr/local/canal-adapter/bin/../lib/j2objc-annotations-1.1.jar:/usr/local/canal-adapter/bin/../lib/htrace-core-3.1.0-incubating.jar:/usr/local/canal-adapter/bin/../lib/hibernate-validator-6.0.9.Final.jar:/usr/local/canal-adapter/bin/../lib/hbase-shaded-client-1.1.2.jar:/usr/local/canal-adapter/bin/../lib/guava-22.0.jar:/usr/local/canal-adapter/bin/../lib/findbugs-annotations-1.3.9-1.jar:/usr/local/canal-adapter/bin/../lib/fastjson-1.2.58.sec06.jar:/usr/local/canal-adapter/bin/../lib/error_prone_annotations-2.0.18.jar:/usr/local/canal-adapter/bin/../lib/druid-1.2.6.jar:/usr/local/canal-adapter/bin/../lib/curator-recipes-2.10.0.jar:/usr/local/canal-adapter/bin/../lib/curator-framework-2.10.0.jar:/usr/local/canal-adapter/bin/../lib/curator-client-2.10.0.jar:/usr/local/canal-adapter/bin/../lib/connector.core-1.1.5.jar:/usr/local/canal-adapter/bin/../lib/commons-logging-1.2.jar:/usr/local/canal-adapter/bin/../lib/commons-lang-2.6.jar:/usr/local/canal-adapter/bin/../lib/commons-io-2.4.jar:/usr/local/canal-adapter/bin/../lib/commons-codec-1.9.jar:/usr/local/canal-adapter/bin/../lib/commons-beanutils-1.8.2.jar:/usr/local/canal-adapter/bin/../lib/client-adapter.launcher-1.1.5.jar:/usr/local/canal-adapter/bin/../lib/client-adapter.common-1.1.5.jar:/usr/local/canal-adapter/bin/../lib/classmate-1.3.4.jar:/usr/local/canal-adapter/bin/../lib/canal.protocol-1.1.5.jar:/usr/local/canal-adapter/bin/../lib/canal.common-1.1.5.jar:/usr/local/canal-adapter/bin/../lib/aviator-2.2.1.jar:/usr/local/canal-adapter/bin/../lib/animal-sniffer-annotations-1.14.jar: com.alibaba.otter.canal.adapter.launcher.CanalAdapterApplication
admin     3097     0  0 Jan10 pts/1    00:05:17 /usr/bin/java -server -Xms2048m -Xmx3072m -Xmn1024m -XX:SurvivorRatio=2 -XX:PermSize=96m -XX:MaxPermSize=256m -Xss256k -XX:-UseAdaptiveSizePolicy -XX:MaxTenuringThreshold=15 -XX:+DisableExplicitGC -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled -XX:+UseCMSCompactAtFullCollection -XX:+UseFastAccessorMethods -XX:+UseCMSInitiatingOccupancyOnly -XX:+HeapDumpOnOutOfMemoryError -Djava.awt.headless=true -Djava.net.preferIPv4Stack=true -Dfile.encoding=UTF-8 -DappName=otter-canal -Dlogback.configurationFile=/usr/local/canal-deployer/bin/../conf/logback.xml -Dcanal.conf=/usr/local/canal-deployer/bin/../conf/canal.properties -classpath .:/usr/local/canal-deployer/bin/../conf:/usr/local/canal-deployer/bin/../lib/zookeeper-3.4.5.jar:/usr/local/canal-deployer/bin/../lib/zkclient-0.10.jar:/usr/local/canal-deployer/bin/../lib/spring-tx-5.0.5.RELEASE.jar:/usr/local/canal-deployer/bin/../lib/spring-orm-5.0.5.RELEASE.jar:/usr/local/canal-deployer/bin/../lib/spring-jdbc-5.0.5.RELEASE.jar:/usr/local/canal-deployer/bin/../lib/spring-jcl-5.0.5.RELEASE.jar:/usr/local/canal-deployer/bin/../lib/spring-expression-5.0.5.RELEASE.jar:/usr/local/canal-deployer/bin/../lib/spring-core-5.0.5.RELEASE.jar:/usr/local/canal-deployer/bin/../lib/spring-context-5.0.5.RELEASE.jar:/usr/local/canal-deployer/bin/../lib/spring-beans-5.0.5.RELEASE.jar:/usr/local/canal-deployer/bin/../lib/spring-aop-5.0.5.RELEASE.jar:/usr/local/canal-deployer/bin/../lib/slf4j-api-1.7.12.jar:/usr/local/canal-deployer/bin/../lib/simpleclient_pushgateway-0.4.0.jar:/usr/local/canal-deployer/bin/../lib/simpleclient_httpserver-0.4.0.jar:/usr/local/canal-deployer/bin/../lib/simpleclient_hotspot-0.4.0.jar:/usr/local/canal-deployer/bin/../lib/simpleclient_common-0.4.0.jar:/usr/local/canal-deployer/bin/../lib/simpleclient-0.4.0.jar:/usr/local/canal-deployer/bin/../lib/protobuf-java-3.6.1.jar:/usr/local/canal-deployer/bin/../lib/oro-2.0.8.jar:/usr/local/canal-deployer/bin/../lib/netty-all-4.1.6.Final.jar:/usr/local/canal-deployer/bin/../lib/netty-3.2.2.Final.jar:/usr/local/canal-deployer/bin/../lib/mysql-connector-java-5.1.48.jar:/usr/local/canal-deployer/bin/../lib/mybatis-spring-2.0.4.jar:/usr/local/canal-deployer/bin/../lib/mybatis-3.5.4.jar:/usr/local/canal-deployer/bin/../lib/logback-core-1.1.3.jar:/usr/local/canal-deployer/bin/../lib/logback-classic-1.1.3.jar:/usr/local/canal-deployer/bin/../lib/jsr305-3.0.2.jar:/usr/local/canal-deployer/bin/../lib/joda-time-2.9.4.jar:/usr/local/canal-deployer/bin/../lib/jctools-core-2.1.2.jar:/usr/local/canal-deployer/bin/../lib/jcl-over-slf4j-1.7.12.jar:/usr/local/canal-deployer/bin/../lib/javax.annotation-api-1.3.2.jar:/usr/local/canal-deployer/bin/../lib/j2objc-annotations-1.1.jar:/usr/local/canal-deployer/bin/../lib/httpcore-4.4.3.jar:/usr/local/canal-deployer/bin/../lib/httpclient-4.5.1.jar:/usr/local/canal-deployer/bin/../lib/h2-1.4.196.jar:/usr/local/canal-deployer/bin/../lib/guava-22.0.jar:/usr/local/canal-deployer/bin/../lib/fastjson-1.2.58.sec06.jar:/usr/local/canal-deployer/bin/../lib/error_prone_annotations-2.0.18.jar:/usr/local/canal-deployer/bin/../lib/druid-1.2.6.jar:/usr/local/canal-deployer/bin/../lib/disruptor-3.4.2.jar:/usr/local/canal-deployer/bin/../lib/connector.core-1.1.5.jar:/usr/local/canal-deployer/bin/../lib/commons-logging-1.2.jar:/usr/local/canal-deployer/bin/../lib/commons-lang3-3.7.jar:/usr/local/canal-deployer/bin/../lib/commons-lang-2.6.jar:/usr/local/canal-deployer/bin/../lib/commons-io-2.4.jar:/usr/local/canal-deployer/bin/../lib/commons-compress-1.9.jar:/usr/local/canal-deployer/bin/../lib/commons-codec-1.9.jar:/usr/local/canal-deployer/bin/../lib/commons-beanutils-1.8.2.jar:/usr/local/canal-deployer/bin/../lib/canal.store-1.1.5.jar:/usr/local/canal-deployer/bin/../lib/canal.sink-1.1.5.jar:/usr/local/canal-deployer/bin/../lib/canal.server-1.1.5.jar:/usr/local/canal-deployer/bin/../lib/canal.protocol-1.1.5.jar:/usr/local/canal-deployer/bin/../lib/canal.prometheus-1.1.5.jar:/usr/local/canal-deployer/bin/../lib/canal.parse.driver-1.1.5.jar:/usr/local/canal-deployer/bin/../lib/canal.parse.dbsync-1.1.5.jar:/usr/local/canal-deployer/bin/../lib/canal.parse-1.1.5.jar:/usr/local/canal-deployer/bin/../lib/canal.meta-1.1.5.jar:/usr/local/canal-deployer/bin/../lib/canal.instance.spring-1.1.5.jar:/usr/local/canal-deployer/bin/../lib/canal.instance.manager-1.1.5.jar:/usr/local/canal-deployer/bin/../lib/canal.instance.core-1.1.5.jar:/usr/local/canal-deployer/bin/../lib/canal.filter-1.1.5.jar:/usr/local/canal-deployer/bin/../lib/canal.deployer-1.1.5.jar:/usr/local/canal-deployer/bin/../lib/canal.common-1.1.5.jar:/usr/local/canal-deployer/bin/../lib/aviator-2.2.1.jar:/usr/local/canal-deployer/bin/../lib/animal-sniffer-annotations-1.14.jar: com.alibaba.otter.canal.deployer.CanalLauncher
admin    31216     0  0 Jan10 pts/1    00:10:19 /usr/bin/java -server -Xms2048m -Xmx3072m -XX:+UseG1GC -XX:MaxGCPauseMillis=250 -XX:+UseGCOverheadLimit -XX:+ExplicitGCInvokesConcurrent -XX:+PrintAdaptiveSizePolicy -XX:+PrintTenuringDistribution -Djava.awt.headless=true -Djava.net.preferIPv4Stack=true -Dfile.encoding=UTF-8 -DappName=canal-admin -classpath .:/usr/local/canal-admin/bin/../conf:/usr/local/canal-admin/bin/../lib/zookeeper-3.4.5.jar:/usr/local/canal-admin/bin/../lib/zkclient-0.10.jar:/usr/local/canal-admin/bin/../lib/xmlunit-core-2.5.1.jar:/usr/local/canal-admin/bin/../lib/validation-api-2.0.1.Final.jar:/usr/local/canal-admin/bin/../lib/tomcat-embed-websocket-8.5.29.jar:/usr/local/canal-admin/bin/../lib/tomcat-embed-el-8.5.29.jar:/usr/local/canal-admin/bin/../lib/tomcat-embed-core-8.5.29.jar:/usr/local/canal-admin/bin/../lib/spring-webmvc-5.0.5.RELEASE.jar:/usr/local/canal-admin/bin/../lib/spring-web-5.0.5.RELEASE.jar:/usr/local/canal-admin/bin/../lib/spring-tx-5.0.5.RELEASE.jar:/usr/local/canal-admin/bin/../lib/spring-orm-5.0.5.RELEASE.jar:/usr/local/canal-admin/bin/../lib/spring-jdbc-5.0.5.RELEASE.jar:/usr/local/canal-admin/bin/../lib/spring-jcl-5.0.5.RELEASE.jar:/usr/local/canal-admin/bin/../lib/spring-expression-5.0.5.RELEASE.jar:/usr/local/canal-admin/bin/../lib/spring-core-5.0.5.RELEASE.jar:/usr/local/canal-admin/bin/../lib/spring-context-5.0.5.RELEASE.jar:/usr/local/canal-admin/bin/../lib/spring-boot-test-autoconfigure-2.0.1.RELEASE.jar:/usr/local/canal-admin/bin/../lib/spring-boot-test-2.0.1.RELEASE.jar:/usr/local/canal-admin/bin/../lib/spring-boot-starter-web-2.0.1.RELEASE.jar:/usr/local/canal-admin/bin/../lib/spring-boot-starter-tomcat-2.0.1.RELEASE.jar:/usr/local/canal-admin/bin/../lib/spring-boot-starter-test-2.0.1.RELEASE.jar:/usr/local/canal-admin/bin/../lib/spring-boot-starter-logging-2.0.1.RELEASE.jar:/usr/local/canal-admin/bin/../lib/spring-boot-starter-json-2.0.1.RELEASE.jar:/usr/local/canal-admin/bin/../lib/spring-boot-starter-jdbc-2.0.1.RELEASE.jar:/usr/local/canal-admin/bin/../lib/spring-boot-starter-2.0.1.RELEASE.jar:/usr/local/canal-admin/bin/../lib/spring-boot-autoconfigure-2.0.1.RELEASE.jar:/usr/local/canal-admin/bin/../lib/spring-boot-2.0.1.RELEASE.jar:/usr/local/canal-admin/bin/../lib/spring-beans-5.0.5.RELEASE.jar:/usr/local/canal-admin/bin/../lib/spring-aop-5.0.5.RELEASE.jar:/usr/local/canal-admin/bin/../lib/snakeyaml-1.19.jar:/usr/local/canal-admin/bin/../lib/slf4j-api-1.7.25.jar:/usr/local/canal-admin/bin/../lib/protobuf-java-3.6.1.jar:/usr/local/canal-admin/bin/../lib/persistence-api-2.2.2.jar:/usr/local/canal-admin/bin/../lib/objenesis-2.6.jar:/usr/local/canal-admin/bin/../lib/netty-all-4.1.23.Final.jar:/usr/local/canal-admin/bin/../lib/netty-3.2.2.Final.jar:/usr/local/canal-admin/bin/../lib/mysql-connector-java-5.1.48.jar:/usr/local/canal-admin/bin/../lib/mockito-core-2.15.0.jar:/usr/local/canal-admin/bin/../lib/logback-core-1.2.3.jar:/usr/local/canal-admin/bin/../lib/logback-classic-1.2.3.jar:/usr/local/canal-admin/bin/../lib/log4j-to-slf4j-2.10.0.jar:/usr/local/canal-admin/bin/../lib/log4j-api-2.10.0.jar:/usr/local/canal-admin/bin/../lib/jul-to-slf4j-1.7.25.jar:/usr/local/canal-admin/bin/../lib/jsr305-3.0.2.jar:/usr/local/canal-admin/bin/../lib/jsonassert-1.5.0.jar:/usr/local/canal-admin/bin/../lib/json-smart-2.3.jar:/usr/local/canal-admin/bin/../lib/json-path-2.4.0.jar:/usr/local/canal-admin/bin/../lib/jcl-over-slf4j-1.7.25.jar:/usr/local/canal-admin/bin/../lib/jboss-logging-3.3.2.Final.jar:/usr/local/canal-admin/bin/../lib/javax.annotation-api-1.3.2.jar:/usr/local/canal-admin/bin/../lib/jackson-module-parameter-names-2.9.5.jar:/usr/local/canal-admin/bin/../lib/jackson-datatype-jsr310-2.9.5.jar:/usr/local/canal-admin/bin/../lib/jackson-datatype-jdk8-2.9.5.jar:/usr/local/canal-admin/bin/../lib/jackson-databind-2.9.5.jar:/usr/local/canal-admin/bin/../lib/jackson-core-2.9.5.jar:/usr/local/canal-admin/bin/../lib/jackson-annotations-2.9.0.jar:/usr/local/canal-admin/bin/../lib/j2objc-annotations-1.1.jar:/usr/local/canal-admin/bin/../lib/hibernate-validator-6.0.9.Final.jar:/usr/local/canal-admin/bin/../lib/hamcrest-library-1.3.jar:/usr/local/canal-admin/bin/../lib/hamcrest-core-1.3.jar:/usr/local/canal-admin/bin/../lib/guava-22.0.jar:/usr/local/canal-admin/bin/../lib/fastjson-1.2.58.sec06.jar:/usr/local/canal-admin/bin/../lib/error_prone_annotations-2.0.18.jar:/usr/local/canal-admin/bin/../lib/ebean-types-1.3.jar:/usr/local/canal-admin/bin/../lib/ebean-migration-11.16.2.jar:/usr/local/canal-admin/bin/../lib/ebean-datasource-api-4.5.jar:/usr/local/canal-admin/bin/../lib/ebean-datasource-4.5.2.jar:/usr/local/canal-admin/bin/../lib/ebean-annotation-4.11.jar:/usr/local/canal-admin/bin/../lib/ebean-11.41.1.jar:/usr/local/canal-admin/bin/../lib/commons-logging-1.1.1.jar:/usr/local/canal-admin/bin/../lib/commons-lang-2.6.jar:/usr/local/canal-admin/bin/../lib/commons-io-2.4.jar:/usr/local/canal-admin/bin/../lib/commons-codec-1.11.jar:/usr/local/canal-admin/bin/../lib/commons-beanutils-1.8.2.jar:/usr/local/canal-admin/bin/../lib/classmate-1.3.4.jar:/usr/local/canal-admin/bin/../lib/canal.protocol-1.1.5.jar:/usr/local/canal-admin/bin/../lib/canal.common-1.1.5.jar:/usr/local/canal-admin/bin/../lib/canal.admin-web-1.1.5.jar:/usr/local/canal-admin/bin/../lib/caffeine-2.6.2.jar:/usr/local/canal-admin/bin/../lib/byte-buddy-agent-1.7.11.jar:/usr/local/canal-admin/bin/../lib/byte-buddy-1.7.11.jar:/usr/local/canal-admin/bin/../lib/avaje-classpath-scanner-api-2.2.jar:/usr/local/canal-admin/bin/../lib/avaje-classpath-scanner-3.1.1.jar:/usr/local/canal-admin/bin/../lib/assertj-core-3.9.1.jar:/usr/local/canal-admin/bin/../lib/asm-5.0.4.jar:/usr/local/canal-admin/bin/../lib/antlr4-runtime-4.7.2.jar:/usr/local/canal-admin/bin/../lib/animal-sniffer-annotations-1.14.jar:/usr/local/canal-admin/bin/../lib/android-json-0.0.20131108.vaadin1.jar:/usr/local/canal-admin/bin/../lib/accessors-smart-1.2.jar:/usr/local/canal-admin/bin/../lib/HikariCP-2.7.8.jar: com.alibaba.otter.canal.admin.CanalAdminApplication
[admin@0209306f10bf bin]$
[admin@0209306f10bf bin]$ netstat -tulnp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:8081            0.0.0.0:*               LISTEN      1537/java
tcp        0      0 0.0.0.0:8089            0.0.0.0:*               LISTEN      31216/java
tcp        0      0 0.0.0.0:2881            0.0.0.0:*               LISTEN      859/observer
tcp        0      0 0.0.0.0:2882            0.0.0.0:*               LISTEN      859/observer
tcp        0      0 0.0.0.0:2883            0.0.0.0:*               LISTEN      1475/obproxy
tcp        0      0 0.0.0.0:2884            0.0.0.0:*               LISTEN      1475/obproxy
tcp        0      0 0.0.0.0:11110           0.0.0.0:*               LISTEN      3097/java
tcp        0      0 0.0.0.0:11111           0.0.0.0:*               LISTEN      3097/java
tcp        0      0 0.0.0.0:11112           0.0.0.0:*               LISTEN      3097/java

验证增量数据的同步情况


create table t2(id int primary key, name varchar(32)) partition by hash(id);insert into t2 values(1, 'go'),(2, 'python'),(3, 'C++');
commit;update t2 set name='C' where id = 3;
commit;delete from t2 where id = 2;select * from t2;
MySQL [sbtest]> select * from t2;
+----+------+
| id | name |
+----+------+
|  1 | go   |
|  3 | C    |
+----+------+
2 rows in set (0.05 sec)

检查验证目标端数据同步情况

MySQL [sbtest]> select * from t2;
+----+------+
| id | name |
+----+------+
|  1 | go   |
|  3 | C    |
+----+------+
2 rows in set (0.05 sec)

实践练习四(必选):迁移 MySQL 数据到 OceanBase 集群相关推荐

  1. 实践练习四:迁移 MySQL 数据到 OceanBase 集群

    练习目的 本次练习目的掌握从 MySQL 向 OceanBase 迁移数据的基本方法:mysqldump.datax .canal 等. 练习内容 请记录并分享下列内容: (必选)使用 mysqldu ...

  2. canal同步mysql数据到rocketmq集群

    rockermq多主多从异步复制部署参考 canal github 早期阿里巴巴因为杭州和美国双机房部署,存在跨机房同步的业务需求,实现方式主要是基于业务 trigger 获取增量变更.从 2010 ...

  3. python脚本迁移数据库_Python迁移MySQL数据到MongoDB脚本

    MongoDB是一个文档数据库,在存储小文件方面存在天然优势.随着业务求的变化,需要将线上MySQL数据库中的行记录,导入到MongoDB中文档记录. 一.场景:线上MySQL数据库某表迁移到Mong ...

  4. mysql中如何迁移数据文件,迁移mysql数据文件存放位置

    迁移mysql数据文件存放位置 (2012-01-11 14:46:30) 标签: mysql db datafile 数据 文件 1.备份当前的数据库 2.停止mysql服务 root@box:~/ ...

  5. 关于Ubuntu 16.04系统挂载硬盘以及迁移MYSQL数据存储目录的操作步骤

    转载链接 : 关于Ubuntu 16.04系统挂载硬盘以及迁移MYSQL数据存储目录的操作步骤 :https://www.jianshu.com/p/58093888ee25 本文背景: 现有项目系统 ...

  6. 实践练习二(必选):手动部署 OceanBase 单副本集群

    说明 相关连接: https://open.oceanbase.com/blog/10900159 https://open.oceanbase.com/answer/detail?id=137006 ...

  7. mysql双节点安装_快速安装及配置MySQL Replication双主节点集群--及改变数据保存目录...

    192.168.1.101  master/slave 192.168.1.102  slave 192.168.1.103  slave 操作系统均为centos6.5 原理图: 1. 分别安装my ...

  8. 【MySQL5.7版本单节点大数据量迁移到PXC8.0版本集群全记】

    MySQL5.7版本单节点大数据量迁移到PXC8.0版本集群全记录-1 - likingzi - 博客园 MySQL5.7版本单节点大数据量迁移到PXC8.0版本集群全记录-2 - likingzi ...

  9. mysql中overwrite,打造集群间HIVE数据库表半自动迁移(overwrite)工具

    Author:Christopher_L1n | CSDN Blog | 未经允许,禁止转载 Hive -> Hive 集群间迁移数据库表 阅读提示 为了代码易读性,脚本中加入冗余的参数赋值,可 ...

最新文章

  1. 解决运行eclipse内存不足的问题
  2. SAP转储单全面总结
  3. IBM DB2 For Linux安装指南
  4. 基于局域网的扩展认证协议EAPOL Extensible Authentication Protocol
  5. fluidity详解
  6. centos7.3 docker安装grafana
  7. NPOI之Excel——设置单元格背景色
  8. 手把手教你如何优化C语言程序
  9. 获取iOS任意线程调用堆栈(三)符号化理论:从Mach-o结构分析类名方法名
  10. python跳出if条件_带你学python基础:条件控制if与循环语句while、for 以及range函数...
  11. idea修改完jdbc文件后没有更新_JDBC+MySQL入门案例
  12. 园龄一年了,可还未动笔.
  13. PHP cURL 函数
  14. 最简单上手的音频处理软件Cool Edit,这些操作你该知道
  15. HTML5项目实战之旅行社网站——兼容响应式布局
  16. 微信商户平台 扣款测试规则
  17. html网页简单实现图片轮播效果,html+css+js简单实现图片轮播效果
  18. MySql大批量生成测试数据
  19. linux build文件,从源代码到可执行文件——编译全过程解析
  20. Xshell7工具下载安装以及简单使用

热门文章

  1. 宇视摄像机——枪机后焦调节方法
  2. 【Scratch-外观模块】漩涡特效指令
  3. 项目:模仿苹果桌面,近大远小
  4. Linux命令解读(一):head -n 80 /dev/urandom | tr -dc A-Za-z0-9 | head -c 22
  5. cin、cout的使用
  6. 用python编写nao机器人舞蹈_python控制nao机器人身体动作实例详解
  7. JavaScript 测试题 (2021-6-21)
  8. 分享:Java 开发精美艺术二维码
  9. 某酷ckey签名生成算法系列--(三)ast代码控制流平坦化
  10. Java中的流式布局(FlowLayout)