翼度科技»论坛 编程开发 mysql 查看内容

Datax助力轻松迁移SQLServer数据至GreatSQL

12

主题

12

帖子

36

积分

新手上路

Rank: 1

积分
36
1.环境说明

1.1源端SQLSserver

版本IP端口Microsoft SQL Server 2017192.168.140.16014331.2目标端GreatSQL

版本IP端口GreatSQL-8.0.32192.168.139.8633082.安装环境

2.1安装SQLServer环境

环境说明:借助Docker使用镜像启动数据库
2.1.1安装docker

1.安装基础软件包
  1. $ yum install -y wget net-tools nfs-utils lrzsz gcc gcc-c++ make cmake libxml2-devel openssl-devel curl curl-devel unzip sudo ntp libaio-devel wget vim ncurses-devel autoconf automake zlib-devel python-devel epel-release openssh-server socat ipvsadm conntrack yum-utils
复制代码
2.配置 docker-ce 国内 yum 源(阿里云)
  1. $ yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
复制代码
3.安装 docker 依赖包
  1. $ yum install -y  device-mapper-persistent-data lvm2
复制代码
4.安装 docker-ce
  1. $ yum install docker-ce -y
复制代码
5.启动容器
  1. $ systemctl start docker && systemctl enable docker
复制代码
2.1.2 拉取镜像
  1. $ docker pull mcr.microsoft.com/mssql/server:2017-latest
复制代码
2.1.3运行容器
  1. $ docker run -e "ACCEPT_EULA=Y" -e "SA_PASSWORD=********" \
  2. -p 1433:1433 --name sqlserver2017 \
  3. -d mcr.microsoft.com/mssql/server:2017-latest
复制代码
此处记得密码设置为复杂密码
参数解释:

  • -e "ACCEPT_EULA=Y":默认选择同意协议许可证
  • -e "SA_PASSWORD=********":设置连接密码,密码不能太短太简单,否则不满足sqlserver密码规范,容器会停止运行
  • -p 1433:1433: 宿主机端口映射到容器端口(前者为宿主机)
  • --name sqlserver2017:容器别名
  • -d: 后台运行
  • mcr.microsoft.com/mssql/server:2017-latest:镜像名称:标签
2.1.4使用数据库

1.进入容器
  1. $ docker exec -it sqlserver2017 bash
复制代码
2.连接数据库
  1. $ /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P "********"
复制代码
3.查询数据库
  1. 1> select name from sys.Databases;
  2. 2> go
复制代码
4.创建数据库
  1. 1> create database testdb;
  2. 2> go
复制代码
5.创建表并插入数据
  1. use testdb
  2. create table t1(id int)
  3. go
  4. Insert into t1 values(1),(2)
  5. go
复制代码
2.2安装GreatSQL环境

使用Docker镜像进行安装,直接拉取GreatSQL镜像即可
  1. $ docker pull greatsql/greatsql
复制代码
并创建GreatSQL容器
  1. $ docker run -d --name greatsql --hostname=greatsql -e MYSQL_ALLOW_EMPTY_PASSWORD=1 greatsql/greatsql
复制代码
2.3安装datax

DataX安装需要依赖的环境

  • JDK(1.8以上,推荐1.8)
  • Python(推荐Python2.6.X及以上)
安装步骤,解压即用,但是解压完成不做其他操作运行job会报错
  1. $ cd /soft
  2. $ ll
  3. total 3764708
  4. -rw-r--r--  1 root root  853734462 Dec  9 04:06 datax.tar.gz
  5. $ tar xf datax.tar.gz
  6. $ python /soft/datax/bin/datax.py /soft/datax/job/job.json
  7. DataX (DATAX-OPENSOURCE-3.0), From Alibaba !
  8. Copyright (C) 2010-2017, Alibaba Group. All Rights Reserved.
  9. 2023-07-19 11:19:17.483 [main] WARN  ConfigParser - 插件[streamreader,streamwriter]加载失败,1s后重试... Exception:Code:[Common-00], Describe:[您提供的配置文件存在错误信息,请检查您的作业配置 .] - 配置信息错误,您提供的配置文件[/soft/datax/plugin/reader/._mysqlreader/plugin.json]不存在. 请检查您的配置文件.
  10. 2023-07-19 11:19:18.488 [main] ERROR Engine -
  11. 经DataX智能分析,该任务最可能的错误原因是:
  12. com.alibaba.datax.common.exception.DataXException: Code:[Common-00], Describe:[您提供的配置文件存在错误信息,请检查您的作业配置 .] - 配置信息错误,您提供的配置文件[/soft/datax/plugin/reader/._mysqlreader/plugin.json]不存在. 请检查您的配置文件.
  13. at com.alibaba.datax.common.exception.DataXException.asDataXException(DataXException.java:26)
  14. at com.alibaba.datax.common.util.Configuration.from(Configuration.java:95)
  15. at com.alibaba.datax.core.util.ConfigParser.parseOnePluginConfig(ConfigParser.java:153)
  16. at com.alibaba.datax.core.util.ConfigParser.parsePluginConfig(ConfigParser.java:125)
  17. at com.alibaba.datax.core.util.ConfigParser.parse(ConfigParser.java:63)
  18. at com.alibaba.datax.core.Engine.entry(Engine.java:137)
  19. at com.alibaba.datax.core.Engine.main(Engine.java:204)
复制代码
解决报错:删除plugin目录下以及plugin/reader和plugin/writer目录下的所有._开头的文件
需要删除三个目录下的隐藏文件

  • plugin/
  • plugin/reader/
  • plugin/writer/
  1. $ rm -rf /opt/app/datax/plugin/._*
  2. $ rm -rf /opt/app/datax/plugin/reader/._*
  3. $ rm -rf /opt/app/datax/plugin/writer/._*
复制代码
运行一个测例,检测datax是否安装成功
  1. $ python /soft/datax/bin/datax.py  /soft/datax/job/job.json
  2. DataX (DATAX-OPENSOURCE-3.0), From Alibaba !
  3. Copyright (C) 2010-2017, Alibaba Group. All Rights Reserved.
  4. 2023-07-19 11:22:12.298 [main] INFO  VMInfo - VMInfo# operatingSystem class => sun.management.OperatingSystemImpl
  5. 2023-07-19 11:22:12.305 [main] INFO  Engine - the machine info  =>
  6. osInfo: Oracle Corporation 1.8 25.251-b08
  7. jvmInfo: Linux amd64 4.19.25-200.1.el7.bclinux.x86_64
  8. cpu num: 48
  9. totalPhysicalMemory: -0.00G
  10. freePhysicalMemory: -0.00G
  11. maxFileDescriptorCount: -1
  12. currentOpenFileDescriptorCount: -1
  13. GC Names [PS MarkSweep, PS Scavenge]
  14. MEMORY_NAME                    | allocation_size                | init_size                     
  15. PS Eden Space                  | 256.00MB                       | 256.00MB                       
  16. Code Cache                     | 240.00MB                       | 2.44MB                        
  17. Compressed Class Space         | 1,024.00MB                     | 0.00MB                        
  18. PS Survivor Space              | 42.50MB                        | 42.50MB                        
  19. PS Old Gen                     | 683.00MB                       | 683.00MB                       
  20. Metaspace                      | -0.00MB                        | 0.00MB  
  21. 2023-07-19 11:22:12.320 [main] INFO  Engine -
  22. {"content":[{"reader":{"name":"streamreader",
  23. "parameter":{"column":[
  24. {"type":"string","value":"DataX"},
  25. {"type":"long","value":19890604},
  26. {"type":"date","value":"1989-06-04 00:00:00"},
  27. {"type":"bool","value":true},
  28. {"type":"bytes","value":"test"}
  29. ],"sliceRecordCount":100000}
  30. },"writer":{"name":"streamwriter","parameter":{"encoding":"UTF-8","print":false}}}],
  31. "setting":{"errorLimit":{"percentage":0.02,"record":0},
  32. "speed":{"byte":10485760}}}
  33. 2023-07-19 11:22:12.336 [main] WARN  Engine - prioriy set to 0, because NumberFormatException, the value is: null
  34. 2023-07-19 11:22:12.337 [main] INFO  PerfTrace - PerfTrace traceId=job_-1, isEnable=false, priority=0
  35. 2023-07-19 11:22:12.338 [main] INFO  JobContainer - DataX jobContainer starts job.
  36. 2023-07-19 11:22:12.339 [main] INFO  JobContainer - Set jobId = 0
  37. 2023-07-19 11:22:12.352 [job-0] INFO  JobContainer - jobContainer starts to do prepare ...
  38. 2023-07-19 11:22:12.352 [job-0] INFO  JobContainer - DataX Reader.Job [streamreader] do prepare work .
  39. 2023-07-19 11:22:12.352 [job-0] INFO  JobContainer - DataX Writer.Job [streamwriter] do prepare work .
  40. 2023-07-19 11:22:12.352 [job-0] INFO  JobContainer - jobContainer starts to do split ...
  41. 2023-07-19 11:22:12.353 [job-0] INFO  JobContainer - Job set Max-Byte-Speed to 10485760 bytes.
  42. 2023-07-19 11:22:12.354 [job-0] INFO  JobContainer - DataX Reader.Job [streamreader] splits to [1] tasks.
  43. 2023-07-19 11:22:12.354 [job-0] INFO  JobContainer - DataX Writer.Job [streamwriter] splits to [1] tasks.
  44. 2023-07-19 11:22:12.371 [job-0] INFO  JobContainer - jobContainer starts to do schedule ...
  45. 2023-07-19 11:22:12.375 [job-0] INFO  JobContainer - Scheduler starts [1] taskGroups.
  46. 2023-07-19 11:22:12.376 [job-0] INFO  JobContainer - Running by standalone Mode.
  47. 2023-07-19 11:22:12.384 [taskGroup-0] INFO  TaskGroupContainer - taskGroupId=[0] start [1] channels for [1] tasks.
  48. 2023-07-19 11:22:12.388 [taskGroup-0] INFO  Channel - Channel set byte_speed_limit to -1, No bps activated.
  49. 2023-07-19 11:22:12.388 [taskGroup-0] INFO  Channel - Channel set record_speed_limit to -1, No tps activated.
  50. 2023-07-19 11:22:12.396 [taskGroup-0] INFO  TaskGroupContainer - taskGroup[0] taskId[0] attemptCount[1] is started
  51. 2023-07-19 11:22:12.697 [taskGroup-0] INFO  TaskGroupContainer - taskGroup[0] taskId[0] is successed, used[302]ms
  52. 2023-07-19 11:22:12.698 [taskGroup-0] INFO  TaskGroupContainer - taskGroup[0] completed it's tasks.
  53. 2023-07-19 11:22:22.402 [job-0] INFO  StandAloneJobContainerCommunicator - Total 100000 records, 2600000 bytes | Speed 253.91KB/s, 10000 records/s | Error 0 records, 0 bytes |  All Task WaitWriterTime 0.020s |  All Task WaitReaderTime 0.033s | Percentage 100.00%
  54. 2023-07-19 11:22:22.402 [job-0] INFO  AbstractScheduler - Scheduler accomplished all tasks.
  55. 2023-07-19 11:22:22.402 [job-0] INFO  JobContainer - DataX Writer.Job [streamwriter] do post work.
  56. 2023-07-19 11:22:22.403 [job-0] INFO  JobContainer - DataX Reader.Job [streamreader] do post work.
  57. 2023-07-19 11:22:22.403 [job-0] INFO  JobContainer - DataX jobId [0] completed successfully.
  58. 2023-07-19 11:22:22.403 [job-0] INFO  HookInvoker - No hook invoked, because base dir not exists or is a file: /soft/datax/hook
  59. 2023-07-19 11:22:22.404 [job-0] INFO  JobContainer -
  60. [total cpu info] =>
  61. averageCpu                     | maxDeltaCpu                    | minDeltaCpu                    
  62. -1.00%                         | -1.00%                         | -1.00%
  63. [total gc info] =>
  64. NAME                 | totalGCCount       | maxDeltaGCCount    | minDeltaGCCount    | totalGCTime        | maxDeltaGCTime     | minDeltaGCTime     
  65. PS MarkSweep         | 0                  | 0                  | 0                  | 0.000s             | 0.000s             | 0.000s            
  66. PS Scavenge          | 0                  | 0                  | 0                  | 0.000s             | 0.000s             | 0.000s            
  67. 2023-07-19 11:22:22.404 [job-0] INFO  JobContainer - PerfTrace not enable!
  68. 2023-07-19 11:22:22.404 [job-0] INFO  StandAloneJobContainerCommunicator - Total 100000 records, 2600000 bytes | Speed 253.91KB/s, 10000 records/s | Error 0 records, 0 bytes |  All Task WaitWriterTime 0.020s |  All Task WaitReaderTime 0.033s | Percentage 100.00%
  69. 2023-07-19 11:22:22.406 [job-0] INFO  JobContainer -
  70. 任务启动时刻                    : 2023-07-19 11:22:12
  71. 任务结束时刻                    : 2023-07-19 11:22:22
  72. 任务总计耗时                    :                 10s
  73. 任务平均流量                    :          253.91KB/s
  74. 记录写入速度                    :          10000rec/s
  75. 读出记录总数                    :              100000
  76. 读写失败总数                    :                   0
复制代码
3.SQLServer2GreatSQL全量迁移

3.1 源端(SQLServer)造测试数据
  1. $ docker exec -it 47bd0ed79c26 /bin/bash
  2. $ /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P "********"
  3. 1> create database testdb
  4. 1> use testdb
  5. 1> insert into t1 values(1),(2),(3);
  6. 2> go
  7. 1> select * from t1;
  8. 2> go
  9. id         
  10. \-----------
  11. ​          1
  12. ​          2
  13. ​          3
复制代码
3.2 目标端(GreatSQL)创建表结构
  1. greatsql> create database testdb;
  2. greatsql> use testdb;
  3. greatsql> create table t1 (id int primary key);
复制代码
3.3 编写Datax的job文件
  1. $ cat /soft/datax/job/sqlserver_to_greatsql.json
  2. {
  3. ​    "job": {
  4. ​        "content": [
  5. ​            {
  6. ​                "reader": {
  7. ​                    "name": "sqlserverreader",
  8. ​                    "parameter": {
  9. ​                        "connection": [
  10. ​                            {
  11. ​                                "jdbcUrl": ["jdbc:sqlserver://127.0.0.1:1433;DatabaseName=testdb"],
  12. ​                                "table": ["t1"]
  13. ​                            }
  14. ​                        ],
  15. ​                        "password": "********",
  16. ​                        "username": "SA",
  17. ​                        "column": ["*"]
  18. ​                    }
  19. ​                },
  20. ​                "writer": {
  21. ​                    "name": "mysqlwriter",
  22. ​                    "parameter": {
  23. ​                        "column": ["*"],
  24. ​                        "connection": [
  25. ​                            {
  26. ​                                "jdbcUrl": "jdbc:mysql://10.17.139.86:3308/testdb",
  27. ​                                "table": ["t1"]
  28. ​                            }
  29. ​                       ],
  30. ​                        "password": "******",
  31. ​                        "session": [],
  32. ​                        "username": "admin",
  33. ​                        "writeMode": "insert"
  34. ​                    }
  35. ​                }
  36. ​            }
  37. ​        ],
  38. ​        "setting": {
  39. ​            "speed": {
  40. ​                "channel": "5"
  41. ​            }
  42. ​        }
  43. ​    }
  44. }
复制代码
3.4 运行Datax迁移任务
  1. $ python /soft/datax/bin/datax.py /soft/datax/job/sqlserver_to_greatsql.json
  2. DataX (DATAX-OPENSOURCE-3.0), From Alibaba !
  3. Copyright (C) 2010-2017, Alibaba Group. All Rights Reserved.
  4. 2023-11-28 09:58:44.087 [main] INFO  VMInfo - VMInfo# operatingSystem class => sun.management.OperatingSystemImpl
  5. 2023-11-28 09:58:44.104 [main] INFO  Engine - the machine info  =>
  6. osInfo: Oracle Corporation 1.8 25.181-b13
  7. jvmInfo: Linux amd64 3.10.0-957.el7.x86_64
  8. cpu num: 8
  9. totalPhysicalMemory: -0.00G
  10. freePhysicalMemory: -0.00G
  11. maxFileDescriptorCount: -1
  12. currentOpenFileDescriptorCount: -1
  13. GC Names [PS MarkSweep, PS Scavenge]
  14. MEMORY_NAME                    | allocation_size                | init_size                     
  15. PS Eden Space                  | 256.00MB                       | 256.00MB                       
  16. Code Cache                     | 240.00MB                       | 2.44MB                        
  17. Compressed Class Space         | 1,024.00MB                     | 0.00MB                        
  18. PS Survivor Space              | 42.50MB                        | 42.50MB                        
  19. PS Old Gen                     | 683.00MB                       | 683.00MB                       
  20. Metaspace                      | -0.00MB                        | 0.00MB                        
  21. 2023-11-28 09:58:44.137 [main] INFO  Engine -
  22. {
  23. "content":[
  24. {"reader":{
  25. "name":"sqlserverreader",
  26. "parameter":{
  27. "column":["*"],
  28. "connection":[
  29. {"jdbcUrl":["jdbc:sqlserver://127.0.0.1:1433;DatabaseName=testdb"],
  30. "table":["t1"]}],
  31. "password":"*************",
  32. "username":"SA"}},
  33. "writer":{"name":"mysqlwriter","parameter":{"column":["*"],
  34. "connection":[{"jdbcUrl":"jdbc:mysql://10.17.139.86:3308/testdb",
  35. "table":["t1"]}],
  36. "password":"********",
  37. "session":[],
  38. "username":"admin",
  39. "writeMode":"insert"}}}],
  40. "setting":{"speed":{"channel":"5"}}}
  41. 2023-11-28 09:58:44.176 [main] WARN  Engine - prioriy set to 0, because NumberFormatException, the value is: null
  42. 2023-11-28 09:58:44.179 [main] INFO  PerfTrace - PerfTrace traceId=job_-1, isEnable=false, priority=0
  43. 2023-11-28 09:58:44.180 [main] INFO  JobContainer - DataX jobContainer starts job.
  44. 2023-11-28 09:58:44.183 [main] INFO  JobContainer - Set jobId = 0
  45. 2023-11-28 09:58:44.542 [job-0] INFO  OriginalConfPretreatmentUtil - Available jdbcUrl:jdbc:sqlserver://127.0.0.1:1433;DatabaseName=testdb.
  46. 2023-11-28 09:58:44.544 [job-0] WARN  OriginalConfPretreatmentUtil - 您的配置文件中的列配置存在一定的风险. 因为您未配置读取数据库表的列,当您的表字段个数、类型有变动时,可能影响任务正确性甚至会运行出错。请检查您的配置并作出修改.
  47. Loading class `com.mysql.jdbc.Driver'. This is deprecated. The new driver class is `com.mysql.cj.jdbc.Driver'. The driver is automatically registered via the SPI and manual loading of the driver class is generally unnecessary.
  48. 2023-11-28 09:58:45.099 [job-0] INFO  OriginalConfPretreatmentUtil - table:[t1] all columns:[id].
  49. 2023-11-28 09:58:45.099 [job-0] WARN  OriginalConfPretreatmentUtil - 您的配置文件中的列配置信息存在风险. 因为您配置的写入数据库表的列为*,当您的表字段个数、类型有变动时,可能影响任务正确性甚至会运行出错。请检查您的配置并作出修改.
  50. 2023-11-28 09:58:45.102 [job-0] INFO  OriginalConfPretreatmentUtil - Write data [
  51. insert INTO %s (id) VALUES(?)
  52. ], which jdbcUrl like:[jdbc:mysql://10..17.139.86:16310/testdb?yearIsDateType=false&zeroDateTimeBehavior=convertToNull&tinyInt1isBit=false&rewriteBatchedStatements=true]
  53. 2023-11-28 09:58:45.103 [job-0] INFO  JobContainer - jobContainer starts to do prepare ...
  54. 2023-11-28 09:58:45.103 [job-0] INFO  JobContainer - DataX Reader.Job [sqlserverreader] do prepare work
  55. 2023-11-28 09:58:45.104 [job-0] INFO  JobContainer - DataX Writer.Job [mysqlwriter] do prepare work .
  56. 2023-11-28 09:58:45.104 [job-0] INFO  JobContainer - jobContainer starts to do split ...
  57. 2023-11-28 09:58:45.105 [job-0] INFO  JobContainer - Job set Channel-Number to 5 channels.
  58. 2023-11-28 09:58:45.112 [job-0] INFO  JobContainer - DataX Reader.Job [sqlserverreader] splits to [1] tasks.
  59. 2023-11-28 09:58:45.114 [job-0] INFO  JobContainer - DataX Writer.Job [mysqlwriter] splits to [1] tasks.
  60. 2023-11-28 09:58:45.135 [job-0] INFO  JobContainer - jobContainer starts to do schedule ...
  61. 2023-11-28 09:58:45.139 [job-0] INFO  JobContainer - Scheduler starts [1] taskGroups.
  62. 2023-11-28 09:58:45.142 [job-0] INFO  JobContainer - Running by standalone Mode.
  63. 2023-11-28 09:58:45.151 [taskGroup-0] INFO  TaskGroupContainer - taskGroupId=[0] start [1] channels for [1] tasks.
  64. 2023-11-28 09:58:45.157 [taskGroup-0] INFO  Channel - Channel set byte_speed_limit to -1, No bps activated.
  65. 2023-11-28 09:58:45.158 [taskGroup-0] INFO  Channel - Channel set record_speed_limit to -1, No tps activated.
  66. 2023-11-28 09:58:45.173 [taskGroup-0] INFO  TaskGroupContainer - taskGroup[0] taskId[0] attemptCount[1] is started
  67. 2023-11-28 09:58:45.181 [0-0-0-reader] INFO  CommonRdbmsReader$Task - Begin to read record by Sql: [select * from t1
  68. ] jdbcUrl:[jdbc:sqlserver://127.0.0.1:1433;DatabaseName=testdb].
  69. 2023-11-28 09:58:45.398 [0-0-0-reader] INFO  CommonRdbmsReader$Task - Finished read record by Sql: [select * from t1
  70. ] jdbcUrl:[jdbc:sqlserver://127.0.0.1:1433;DatabaseName=testdb].
  71. 2023-11-28 09:58:45.454 [taskGroup-0] INFO  TaskGroupContainer - taskGroup[0] taskId[0] is successed, used[284]ms
  72. 2023-11-28 09:58:45.455 [taskGroup-0] INFO  TaskGroupContainer - taskGroup[0] completed it's tasks.
  73. 2023-11-28 09:58:55.175 [job-0] INFO  StandAloneJobContainerCommunicator - Total 3 records, 3 bytes | Speed 0B/s, 0 records/s | Error 0 records, 0 bytes |  All Task WaitWriterTime 0.000s |  All Task WaitReaderTime 0.000s | Percentage 100.00%
  74. 2023-11-28 09:58:55.175 [job-0] INFO  AbstractScheduler - Scheduler accomplished all tasks.
  75. 2023-11-28 09:58:55.175 [job-0] INFO  JobContainer - DataX Writer.Job [mysqlwriter] do post work.
  76. 2023-11-28 09:58:55.176 [job-0] INFO  JobContainer - DataX Reader.Job [sqlserverreader] do post work.
  77. 2023-11-28 09:58:55.176 [job-0] INFO  JobContainer - DataX jobId [0] completed successfully.
  78. 2023-11-28 09:58:55.176 [job-0] INFO  HookInvoker - No hook invoked, because base dir not exists or is a file: /soft/datax/hook
  79. 2023-11-28 09:58:55.177 [job-0] INFO  JobContainer -
  80. [total cpu info] =>
  81. averageCpu                     | maxDeltaCpu                    | minDeltaCpu                    
  82. -1.00%                         | -1.00%                         | -1.00%
  83. [total gc info] =>
  84. NAME                 | totalGCCount       | maxDeltaGCCount    | minDeltaGCCount    | totalGCTime        | maxDeltaGCTime     | minDeltaGCTime     
  85. PS MarkSweep         | 1                  | 1                  | 1                  | 0.061s             | 0.061s             | 0.061s            
  86. PS Scavenge          | 1                  | 1                  | 1                  | 0.039s             | 0.039s             | 0.039s            
  87. 2023-11-28 09:58:55.177 [job-0] INFO  JobContainer - PerfTrace not enable!
  88. 2023-11-28 09:58:55.177 [job-0] INFO  StandAloneJobContainerCommunicator - Total 3 records, 3 bytes | Speed 0B/s, 0 records/s | Error 0 records, 0 bytes |  All Task WaitWriterTime 0.000s |  All Task WaitReaderTime 0.000s | Percentage 100.00%
  89. 2023-11-28 09:58:55.179 [job-0] INFO  JobContainer -
  90. 任务启动时刻                    : 2023-11-28 09:58:44
  91. 任务结束时刻                    : 2023-11-28 09:58:55
  92. 任务总计耗时                    :                 10s
  93. 任务平均流量                    :                0B/s
  94. 记录写入速度                    :              0rec/s
  95. 读出记录总数                    :                   3
  96. 读写失败总数                    :                   0
复制代码
3.5 到目标端验证数据
  1. greatsql> select * from t1;
  2. +----+
  3. | id |
  4. +----+
  5. |  1 |
  6. |  2 |
  7. |  3 |
  8. +----+
  9. 3 rows in set (0.01 sec)
复制代码
4. SQLServer to GreatSQL增量迁移

4.1 源端(SQLServer)创建测试数据
  1. 2> create table t2 (id int,createtime datetime);
  2. 3> go
  3. 1> insert into t2 values(1,GETDATE());
  4. 2> g
  5. (1 rows affected)
  6. 1> insert into t2 values(2,GETDATE());
  7. 2> go
  8. (1 rows affected)
  9. 1> insert into t2 values(3,GETDATE());
  10. 2> go
  11. (1 rows affected)
  12. 1> insert into t2 values(4,GETDATE());
  13. 2> go
  14. (1 rows affected)
  15. 1> insert into t2 values(5,GETDATE());
  16. 2> go
  17. (1 rows affected)
  18. 1> insert into t2 values(6,GETDATE());
  19. 2> go
  20. (1 rows affected)
  21. 1> select * from t2;
  22. 2> go
  23. id          createtime            
  24. ---------- -----------------------
  25. ​          1 2023-11-28 02:18:20.790
  26. ​          2 2023-11-28 02:18:27.040
  27. ​          3 2023-11-28 02:18:32.103
  28. ​          4 2023-11-28 02:18:37.690
  29. ​          5 2023-11-28 02:18:41.450
  30. ​          6 2023-11-28 02:18:46.330
复制代码
4.2 编写Datax的全量迁移job文件
  1. $ cat sqlserver_to_greatsql_inc.json
  2. {
  3. ​    "job": {
  4. ​        "content": [
  5. ​            {
  6. ​                "reader": {
  7. ​                    "name": "sqlserverreader",
  8. ​                    "parameter": {
  9. ​                        "connection": [
  10. ​                            {
  11. ​                                "jdbcUrl": ["jdbc:sqlserver://127.0.0.1:1433;DatabaseName=testdb"],
  12. ​                                "table": ["t2"]
  13. ​                            }
  14. ​                        ],
  15. ​                        "password": "********",
  16. ​                        "username": "SA",
  17. ​                        "column": ["*"]
  18. ​                    }
  19. ​                },
  20. ​                "writer": {
  21. ​                    "name": "mysqlwriter",
  22. ​                    "parameter": {
  23. ​                        "column": ["*"],
  24. ​                        "connection": [
  25. ​                            {
  26. ​                                "jdbcUrl": "jdbc:mysql://10.17.139.86:3308/testdb",
  27. ​                                "table": ["t2"]
  28. ​                            }
  29. ​                        ],
  30. ​                        "password": "!QAZ2wsx",
  31. ​                        "session": [],
  32. ​                        "username": "admin",
  33. ​                        "writeMode": "insert"
  34. ​                    }
  35. ​                }
  36. ​            }
  37. ​        ],
  38. ​        "setting": {
  39. ​            "speed": {
  40. ​                "channel": "5"
  41. ​            }
  42. ​        }
  43. ​    }
  44. }
复制代码
4.3 运行Datax全量迁移任务
  1. $ python /soft/datax/bin/datax.py /soft/datax/job/sqlserver_to_greatsql_inc.json
  2. DataX (DATAX-OPENSOURCE-3.0), From Alibaba !
  3. Copyright (C) 2010-2017, Alibaba Group. All Rights Reserved.
  4. 2023-11-28 10:19:59.279 [main] INFO  VMInfo - VMInfo# operatingSystem class => sun.management.OperatingSystemImpl
  5. 2023-11-28 10:19:59.286 [main] INFO  Engine - the machine info  =>
  6. osInfo: Oracle Corporation 1.8 25.181-b13
  7. jvmInfo: Linux amd64 3.10.0-957.el7.x86_64
  8. cpu num: 8
  9. totalPhysicalMemory: -0.00G
  10. freePhysicalMemory: -0.00G
  11. maxFileDescriptorCount: -1
  12. currentOpenFileDescriptorCount: -1
  13. GC Names [PS MarkSweep, PS Scavenge]
  14. MEMORY_NAME                    | allocation_size                | init_size                     
  15. PS Eden Space                  | 256.00MB                       | 256.00MB                       
  16. Code Cache                     | 240.00MB                       | 2.44MB                        
  17. Compressed Class Space         | 1,024.00MB                     | 0.00MB                        
  18. PS Survivor Space              | 42.50MB                        | 42.50MB                        
  19. PS Old Gen                     | 683.00MB                       | 683.00MB                       
  20. Metaspace                      | -0.00MB                        | 0.00MB                        
  21. 2023-11-28 10:19:59.302 [main] INFO  Engine -
  22. {"content":[{"reader":{"name":"sqlserverreader","parameter":{"column":[
  23. "*"],"connection":[{"jdbcUrl":["jdbc:sqlserver://127.0.0.1:1433;DatabaseName=testdb"],
  24. "table":["t2"]}],"password":"*************","username":"SA"}},
  25. "writer":{"name":"mysqlwriter","parameter":{"column":["*"],
  26. "connection":[{"jdbcUrl":"jdbc:mysql://10..17.139.86:16310/testdb","table":["t2"]}],
  27. "password":"********",
  28. "session":[],
  29. "username":"admin",
  30. "writeMode":"insert"}}}],
  31. "setting":{"speed":{"channel":"5"}}}
  32. 2023-11-28 10:19:59.319 [main] WARN  Engine - prioriy set to 0, because NumberFormatException, the value is: null
  33. 2023-11-28 10:19:59.321 [main] INFO  PerfTrace - PerfTrace traceId=job_-1, isEnable=false, priority=0
  34. 2023-11-28 10:19:59.321 [main] INFO  JobContainer - DataX jobContainer starts job.
  35. 2023-11-28 10:19:59.324 [main] INFO  JobContainer - Set jobId = 0
  36. 2023-11-28 10:19:59.629 [job-0] INFO  OriginalConfPretreatmentUtil - Available jdbcUrl:jdbc:sqlserver://127.0.0.1:1433;DatabaseName=testdb.
  37. 2023-11-28 10:19:59.630 [job-0] WARN  OriginalConfPretreatmentUtil - 您的配置文件中的列配置存在一定的风险. 因为您未配置读取数据库表的列,当您的表字段个数、类型有变动时,可能影响任务正确性甚至会运行出错。请检查您的配置并作出修改.
  38. Loading class `com.mysql.jdbc.Driver'. This is deprecated. The new driver class is `com.mysql.cj.jdbc.Driver'. The driver is automatically registered via the SPI and manual loading of the driver class is generally unnecessary.
  39. 2023-11-28 10:20:00.027 [job-0] INFO  OriginalConfPretreatmentUtil - table:[t2] all columns:[
  40. id,createtime].
  41. 2023-11-28 10:20:00.027 [job-0] WARN  OriginalConfPretreatmentUtil - 您的配置文件中的列配置信息存在风险. 因为您配置的写入数据库表的列为*,当您的表字段个数、类型有变动时,可能影响任务正确性甚至会运行出错。请检查您的配置并作出修改.
  42. 2023-11-28 10:20:00.029 [job-0] INFO  OriginalConfPretreatmentUtil - Write data [
  43. insert INTO %s (id,createtime) VALUES(?,?)
  44. ], which jdbcUrl like:[jdbc:mysql://10..17.139.86:16310/testdb?yearIsDateType=false&zeroDateTimeBehavior=convertToNull&tinyInt1isBit=false&rewriteBatchedStatements=true]
  45. 2023-11-28 10:20:00.030 [job-0] INFO  JobContainer - jobContainer starts to do prepare ...
  46. 2023-11-28 10:20:00.031 [job-0] INFO  JobContainer - DataX Reader.Job [sqlserverreader] do prepare work .
  47. 2023-11-28 10:20:00.031 [job-0] INFO  JobContainer - DataX Writer.Job [mysqlwriter] do prepare work .
  48. 2023-11-28 10:20:00.032 [job-0] INFO  JobContainer - jobContainer starts to do split ...
  49. 2023-11-28 10:20:00.032 [job-0] INFO  JobContainer - Job set Channel-Number to 5 channels.
  50. 2023-11-28 10:20:00.037 [job-0] INFO  JobContainer - DataX Reader.Job [sqlserverreader] splits to [1] tasks.
  51. 2023-11-28 10:20:00.038 [job-0] INFO  JobContainer - DataX Writer.Job [mysqlwriter] splits to [1] tasks.
  52. 2023-11-28 10:20:00.060 [job-0] INFO  JobContainer - jobContainer starts to do schedule ...
  53. 2023-11-28 10:20:00.063 [job-0] INFO  JobContainer - Scheduler starts [1] taskGroups.
  54. 2023-11-28 10:20:00.066 [job-0] INFO  JobContainer - Running by standalone Mode.
  55. 2023-11-28 10:20:00.073 [taskGroup-0] INFO  TaskGroupContainer - taskGroupId=[0] start [1] channels for [1] tasks.
  56. 2023-11-28 10:20:00.080 [taskGroup-0] INFO  Channel - Channel set byte_speed_limit to -1, No bps activated.
  57. 2023-11-28 10:20:00.080 [taskGroup-0] INFO  Channel - Channel set record_speed_limit to -1, No tps activated.
  58. 2023-11-28 10:20:00.093 [taskGroup-0] INFO  TaskGroupContainer - taskGroup[0] taskId[0] attemptCount[1] is started
  59. 2023-11-28 10:20:00.101 [0-0-0-reader] INFO  CommonRdbmsReader$Task - Begin to read record by Sql: [select * from t2
  60. ] jdbcUrl:[jdbc:sqlserver://127.0.0.1:1433;DatabaseName=testdb].
  61. 2023-11-28 10:20:00.262 [0-0-0-reader] INFO  CommonRdbmsReader$Task - Finished read record by Sql: [select * from t2
  62. ] jdbcUrl:[jdbc:sqlserver://127.0.0.1:1433;DatabaseName=testdb].
  63. 2023-11-28 10:20:00.334 [taskGroup-0] INFO  TaskGroupContainer - taskGroup[0] taskId[0] is successed, used[243]ms
  64. 2023-11-28 10:20:00.335 [taskGroup-0] INFO  TaskGroupContainer - taskGroup[0] completed it's tasks.
  65. 2023-11-28 10:20:10.087 [job-0] INFO  StandAloneJobContainerCommunicator - Total 6 records, 54 bytes | Speed 5B/s, 0 records/s | Error 0 records, 0 bytes |  All Task WaitWriterTime 0.000s |  All Task WaitReaderTime 0.000s | Percentage 100.00%
  66. 2023-11-28 10:20:10.088 [job-0] INFO  AbstractScheduler - Scheduler accomplished all tasks.
  67. 2023-11-28 10:20:10.088 [job-0] INFO  JobContainer - DataX Writer.Job [mysqlwriter] do post work.
  68. 2023-11-28 10:20:10.089 [job-0] INFO  JobContainer - DataX Reader.Job [sqlserverreader] do post work.
  69. 2023-11-28 10:20:10.090 [job-0] INFO  JobContainer - DataX jobId [0] completed successfully.
  70. 2023-11-28 10:20:10.091 [job-0] INFO  HookInvoker - No hook invoked, because base dir not exists or is a file: /soft/datax/hook
  71. 2023-11-28 10:20:10.094 [job-0] INFO  JobContainer -
  72. [total cpu info] =>
  73. averageCpu                     | maxDeltaCpu                    | minDeltaCpu                    
  74. -1.00%                         | -1.00%                         | -1.00%                     
  75. [total gc info] =>
  76. NAME                 | totalGCCount       | maxDeltaGCCount    | minDeltaGCCount    | totalGCTime        | maxDeltaGCTime     | minDeltaGCTime     
  77. PS MarkSweep         | 1                  | 1                  | 1                  | 0.034s             | 0.034s             | 0.034s            
  78. PS Scavenge          | 1                  | 1                  | 1                  | 0.031s             | 0.031s             | 0.031s            
  79. 2023-11-28 10:20:10.094 [job-0] INFO  JobContainer - PerfTrace not enable!
  80. 2023-11-28 10:20:10.095 [job-0] INFO  StandAloneJobContainerCommunicator - Total 6 records, 54 bytes | Speed 5B/s, 0 records/s | Error 0 records, 0 bytes |  All Task WaitWriterTime 0.000s |  All Task WaitReaderTime 0.000s | Percentage 100.00%
  81. 2023-11-28 10:20:10.097 [job-0] INFO  JobContainer -
  82. 任务启动时刻                    : 2023-11-28 10:19:59
  83. 任务结束时刻                    : 2023-11-28 10:20:10
  84. 任务总计耗时                    :                 10s
  85. 任务平均流量                    :                5B/s
  86. 记录写入速度                    :              0rec/s
  87. 读出记录总数                    :                   6
  88. 读写失败总数                    :                   0
复制代码
4.4 验证全量迁移的数据
  1. greatsql> select * from t2;
  2. +----+---------------------+
  3. | id | createtime          |
  4. +----+---------------------+
  5. |  1 | 2023-11-28 02:18:21 |
  6. |  2 | 2023-11-28 02:18:27 |
  7. |  3 | 2023-11-28 02:18:32 |
  8. |  4 | 2023-11-28 02:18:38 |
  9. |  5 | 2023-11-28 02:18:41 |
  10. |  6 | 2023-11-28 02:18:46 |
  11. +----+---------------------+
复制代码
还可以用 checksum table x 来验证,大表就不能全表select * 了
4.5 源端(SQLServer)插入增量数据
  1. 2> insert into t2 values(7,'202311-28 03:18:46.330');
  2. 3> go
  3. Changed database context to 'jem_db'.
  4. (1 rows affected)
  5. 1> insert into t2 values(8,'2023-11-28 03:20:46.330');
  6. 2> go
  7. (1 rows affected)
  8. 1> insert into t2 values(9,'2023-11-28 03:25:46.330');
  9. 2> go
  10. (1 rows affected)
  11. 1> insert into t2 values(10,'2023-11-28 03:30:46.330');
  12. 2> go
  13. (1 rows affected)
  14. 1> select * from t2;
  15. 2> go
  16. id          createtime            
  17. ----------- -----------------------
  18. ​          1 2023-11-28 02:18:20.790
  19. ​          2 2023-11-28 02:18:27.040
  20. ​          3 2023-11-28 02:18:32.103
  21. ​          4 2023-11-28 02:18:37.690
  22. ​          5 2023-11-28 02:18:41.450
  23. ​          6 2023-11-28 02:18:46.330
  24. ​          7 2023-11-28 03:18:46.330
  25. ​          8 2023-11-28 03:20:46.330
  26. ​          9 2023-11-28 03:25:46.330
  27. ​         10 2023-11-28 03:30:46.330
复制代码
4.6 编写Datax增量迁移job文件
  1. $ cat sqlserver_to_greatsql_inc.json
  2. {
  3. ​    "job": {
  4. ​        "content": [
  5. ​            {
  6. ​                "reader": {
  7. ​                    "name": "sqlserverreader",
  8. ​                    "parameter": {
  9. ​                        "connection": [
  10. ​                            {
  11. ​                                "jdbcUrl": ["jdbc:sqlserver://127.0.0.1:1433;DatabaseName=testdb"],
  12. ​                                "table": ["t2"]
  13. ​                            }
  14. ​                        ],
  15. ​                        "password": "********",
  16. ​                        "username": "SA",
  17. ​                        "column": ["*"],
  18. ​                        "where":"createtime > '${start_time}' and createtime < '${end_time}'"
  19. ​                    }
  20. ​                },
  21. ​                "writer": {
  22. ​                    "name": "mysqlwriter",
  23. ​                    "parameter": {
  24. ​                        "column": ["*"],
  25. ​                        "connection": [
  26. ​                            {
  27. ​                                "jdbcUrl": "jdbc:mysql://10..17.139.86:16310/testdb",
  28. ​                                "table": ["t2"]
  29. ​                            }
  30. ​                        ],
  31. ​                        "password": "!QAZ2wsx",
  32. ​                        "session": [],
  33. ​                        "username": "admin",
  34. ​                        "writeMode": "insert"
  35. ​                    }
  36. ​                }
  37. ​            }
  38. ​        ],
  39. ​        "setting": {
  40. ​            "speed": {
  41. ​                "channel": "5"
  42. ​            }
  43. ​        }
  44. ​    }
  45. }
复制代码
4.7 运行Datax增量迁移任务
  1. $ python /soft/datax/bin/datax.py /soft/datax/job/sqlserver_to_mysql_inc.json -p "-Dstart_time='2023-11-28 03:17:46.330' -Dend_time='2023-11-28 03:31:46.330'"
  2. DataX (DATAX-OPENSOURCE-3.0), From Alibaba !
  3. Copyright (C) 2010-2017, Alibaba Group. All Rights Reserved.
  4. 2023-11-28 10:29:24.492 [main] INFO  VMInfo - VMInfo# operatingSystem class => sun.management.OperatingSystemImpl
  5. 2023-11-28 10:29:24.504 [main] INFO  Engine - the machine info  =>
  6. osInfo: Oracle Corporation 1.8 25.181-b13
  7. jvmInfo: Linux amd64 3.10.0-957.el7.x86_64
  8. cpu num: 8
  9. totalPhysicalMemory: -0.00G
  10. freePhysicalMemory: -0.00G
  11. maxFileDescriptorCount: -1
  12. currentOpenFileDescriptorCount: -1
  13. GC Names [PS MarkSweep, PS Scavenge]
  14. MEMORY_NAME                    | allocation_size                | init_size                     
  15. PS Eden Space                  | 256.00MB                       | 256.00MB                       
  16. Code Cache                     | 240.00MB                       | 2.44MB                        
  17. Compressed Class Space         | 1,024.00MB                     | 0.00MB                        
  18. PS Survivor Space              | 42.50MB                        | 42.50MB                        
  19. PS Old Gen                     | 683.00MB                       | 683.00MB                       
  20. Metaspace                      | -0.00MB                        | 0.00MB                        
  21. 2023-11-28 10:29:24.524 [main] INFO  Engine -
  22. {"content":[{"reader":{"name":"sqlserverreader","parameter":{"column":["*"],
  23. "connection":[{"jdbcUrl":["jdbc:sqlserver://127.0.0.1:1433;DatabaseName=testdb"],
  24. "table":["t2"]}],"password":"*************","username":"SA",
  25. "where":"createtime > '2023-11-28 03:17:46.330' and createtime < '2023-11-28 03:31:46.330'"}},
  26. "writer":{"name":"mysqlwriter","parameter":{"column":["*"],"connection":[{"jdbcUrl":"jdbc:mysql://10..17.139.86:16310/testdb","table":["t2"]}],
  27. "password":"********",
  28. "session":[],
  29. "username":"admin",
  30. "writeMode":"insert"}}}],
  31. "setting":{"speed":{"channel":"5"}}}
  32. 2023-11-28 10:29:24.542 [main] WARN  Engine - prioriy set to 0, because NumberFormatException, the value is: null
  33. 2023-11-28 10:29:24.544 [main] INFO  PerfTrace - PerfTrace traceId=job_-1, isEnable=false, priority=0
  34. 2023-11-28 10:29:24.544 [main] INFO  JobContainer - DataX jobContainer starts job.
  35. 2023-11-28 10:29:24.546 [main] INFO  JobContainer - Set jobId = 0
  36. 2023-11-28 10:29:24.830 [job-0] INFO  OriginalConfPretreatmentUtil - Available jdbcUrl:jdbc:sqlserver://127.0.0.1:1433;DatabaseName=testdb.
  37. 2023-11-28 10:29:24.831 [job-0] WARN  OriginalConfPretreatmentUtil - 您的配置文件中的列配置存在一定的风险. 因为您未配置读取数据库表的列,当您的表字段个数、类型有变动时,可能影响任务正确性甚至会运行出错。请检查您的配置并作出修改.
  38. Loading class `com.mysql.jdbc.Driver'. This is deprecated. The new driver class is `com.mysql.cj.jdbc.Driver'. The driver is automatically registered via the SPI and manual loading of the driver class is generally unnecessary.
  39. 2023-11-28 10:29:25.113 [job-0] INFO  OriginalConfPretreatmentUtil - table:[t2] all columns:[id,createtime].
  40. 2023-11-28 10:29:25.113 [job-0] WARN  OriginalConfPretreatmentUtil - 您的配置文件中的列配置信息存在风险. 因为您配置的写入数据库表的列为*,当您的表字段个数、类型有变动时,可能影响任务正确性甚至会运行出错。请检查您的配置并作出修改.
  41. 2023-11-28 10:29:25.115 [job-0] INFO  OriginalConfPretreatmentUtil - Write data [
  42. insert INTO %s (id,createtime) VALUES(?,?)
  43. ], which jdbcUrl like:[jdbc:mysql://10..17.139.86:16310/testdb?yearIsDateType=false&zeroDateTimeBehavior=convertToNull&tinyInt1isBit=false&rewriteBatchedStatements=true]
  44. 2023-11-28 10:29:25.116 [job-0] INFO  JobContainer - jobContainer starts to do prepare ...
  45. 2023-11-28 10:29:25.117 [job-0] INFO  JobContainer - DataX Reader.Job [sqlserverreader] do prepare work .
  46. 2023-11-28 10:29:25.117 [job-0] INFO  JobContainer - DataX Writer.Job [mysqlwriter] do prepare work .
  47. 2023-11-28 10:29:25.118 [job-0] INFO  JobContainer - jobContainer starts to do split ...
  48. 2023-11-28 10:29:25.118 [job-0] INFO  JobContainer - Job set Channel-Number to 5 channels.
  49. 2023-11-28 10:29:25.123 [job-0] INFO  JobContainer - DataX Reader.Job [sqlserverreader] splits to [1] tasks.
  50. 2023-11-28 10:29:25.124 [job-0] INFO  JobContainer - DataX Writer.Job [mysqlwriter] splits to [1] tasks.
  51. 2023-11-28 10:29:25.146 [job-0] INFO  JobContainer - jobContainer starts to do schedule ...
  52. 2023-11-28 10:29:25.150 [job-0] INFO  JobContainer - Scheduler starts [1] taskGroups.
  53. 2023-11-28 10:29:25.153 [job-0] INFO  JobContainer - Running by standalone Mode.
  54. 2023-11-28 10:29:25.159 [taskGroup-0] INFO  TaskGroupContainer - taskGroupId=[0] start [1] channels for [1] tasks.
  55. 2023-11-28 10:29:25.165 [taskGroup-0] INFO  Channel - Channel set byte_speed_limit to -1, No bps activated.
  56. 2023-11-28 10:29:25.165 [taskGroup-0] INFO  Channel - Channel set record_speed_limit to -1, No tps activated.
  57. 2023-11-28 10:29:25.176 [taskGroup-0] INFO  TaskGroupContainer - taskGroup[0] taskId[0] attemptCount[1] is started
  58. 2023-11-28 10:29:25.183 [0-0-0-reader] INFO  CommonRdbmsReader$Task - Begin to read record by Sql: [select * from t2 where (createtime > '2023-11-28 03:17:46.330' and createtime < '2023-11-28 03:31:46.330')
  59. ] jdbcUrl:[jdbc:sqlserver://127.0.0.1:1433;DatabaseName=testdb].
  60. 2023-11-28 10:29:25.344 [0-0-0-reader] INFO  CommonRdbmsReader$Task - Finished read record by Sql: [select * from t2 where (createtime > '2023-11-28 03:17:46.330' and createtime < '2023-11-28 03:31:46.330')
  61. ] jdbcUrl:[jdbc:sqlserver://127.0.0.1:1433;DatabaseName=testdb].
  62. 2023-11-28 10:29:25.606 [taskGroup-0] INFO  TaskGroupContainer - taskGroup[0] taskId[0] is successed, used[431]ms
  63. 2023-11-28 10:29:25.607 [taskGroup-0] INFO  TaskGroupContainer - taskGroup[0] completed it's tasks.
  64. 2023-11-28 10:29:35.173 [job-0] INFO  StandAloneJobContainerCommunicator - Total 4 records, 37 bytes | Speed 3B/s, 0 records/s | Error 0 records, 0 bytes |  All Task WaitWriterTime 0.000s |  All Task WaitReaderTime 0.000s | Percentage 100.00%
  65. 2023-11-28 10:29:35.173 [job-0] INFO  AbstractScheduler - Scheduler accomplished all tasks.
  66. 2023-11-28 10:29:35.174 [job-0] INFO  JobContainer - DataX Writer.Job [mysqlwriter] do post work.
  67. 2023-11-28 10:29:35.175 [job-0] INFO  JobContainer - DataX Reader.Job [sqlserverreader] do post work.
  68. 2023-11-28 10:29:35.175 [job-0] INFO  JobContainer - DataX jobId [0] completed successfully.
  69. 2023-11-28 10:29:35.177 [job-0] INFO  HookInvoker - No hook invoked, because base dir not exists or is a file: /soft/datax/hook
  70. 2023-11-28 10:29:35.179 [job-0] INFO  JobContainer -
  71. [total cpu info] =>
  72. averageCpu                     | maxDeltaCpu                    | minDeltaCpu                    
  73. -1.00%                         | -1.00%                         | -1.00%
  74. [total gc info] =>
  75. NAME                 | totalGCCount       | maxDeltaGCCount    | minDeltaGCCount    | totalGCTime        | maxDeltaGCTime     | minDeltaGCTime     
  76. PS MarkSweep         | 1                  | 1                  | 1                  | 0.052s             | 0.052s             | 0.052s            
  77. PS Scavenge          | 1                  | 1                  | 1                  | 0.024s             | 0.024s             | 0.024s            
  78. 2023-11-28 10:29:35.180 [job-0] INFO  JobContainer - PerfTrace not enable!
  79. 2023-11-28 10:29:35.181 [job-0] INFO  StandAloneJobContainerCommunicator - Total 4 records, 37 bytes | Speed 3B/s, 0 records/s | Error 0 records, 0 bytes |  All Task WaitWriterTime 0.000s |  All Task WaitReaderTime 0.000s | Percentage 100.00%
  80. 2023-11-28 10:29:35.183 [job-0] INFO  JobContainer -
  81. 任务启动时刻                    : 2023-11-28 10:29:24
  82. 任务结束时刻                    : 2023-11-28 10:29:35
  83. 任务总计耗时                    :                 10s
  84. 任务平均流量                    :                3B/s
  85. 记录写入速度                    :              0rec/s
  86. 读出记录总数                    :                   4
  87. 读写失败总数                    :                   0
复制代码
4.8 到目标端(GreatSQL)验证增量数据
  1. greatsql> select * from t2;
  2. +----+---------------------+
  3. | id | createtime          |
  4. +----+---------------------+
  5. |  1 | 2023-11-28 02:18:21 |
  6. |  2 | 2023-11-28 02:18:27 |
  7. |  3 | 2023-11-28 02:18:32 |
  8. |  4 | 2023-11-28 02:18:38 |
  9. |  5 | 2023-11-28 02:18:41 |
  10. |  6 | 2023-11-28 02:18:46 |
  11. |  7 | 2023-11-28 03:18:46 |
  12. |  8 | 2023-11-28 03:20:46 |
  13. |  9 | 2023-11-28 03:25:46 |
  14. | 10 | 2023-11-28 03:30:46 |
  15. +----+---------------------+
  16. 10 rows in set (0.00 sec)
复制代码
增量迁移总结:通过增加过滤条件达到增量迁移的目的。主要是通过过滤条件过滤掉了全量迁移的数据,进而变相的完成了增量迁移。

Enjoy GreatSQL
来源:https://www.cnblogs.com/greatsql/p/18150097
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

举报 回复 使用道具