0

我正在尝试为 AS400 设置 IBM 数据复制到 MySQL。对于目标 MySQL,它现在是最新的 MySQL 8.0.20 Community Server。我已经很好地测试了 JDBC 连接。但是,CDC 实例从未启动(通过测试从 8.0.9rc 到 8.0.20 的 MySQL Jdbc 连接)。在 Windows 中,实例已添加但未启动。某些操作已完成,但无法在 RHEL 中添加实例。但是,日志错误消息完全相同。

  1. IBM InfoSphere CDC 访问服务器 (11.4.0.2 - 11016)
  2. IBM InfoSphere Data Replication for MySQL (11.4.0.2 - 5548) 备注:RHEL / Windows 2016 测试环境都面临相同的结果

仅对于 8.0.9rc 到 8.0.11,它可能会尝试连接并返回错误。

  • 格式错误的数据库 URL,无法解析主要 URL 部分。

由于 1.8 的 JRE/JDK 提供了 IBM,我已经为设置设置了正确的 JAVA_HOME、PATH。有什么线索吗?我已经尝试了连接字符串:(在 Windows / Linux Access Server + IIDR 上)

  • jdbc:mysql://127.0.0.1:3306/testdb
  • jdbc:mysql://127.0.0.1:3306/testdb?useSSL=false
  • jdbc:mysql://127.0.0.1:3306/testdb?useUnicode=true&characterEncoding=utf-8&useSSL=false
  • jdbc:mysql://127.0.0.1:3306/testdb?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT

实际上,它提供了相同的结果。我试图用 jdbc 输入错误:mysql://127.0.0.1:3306/testdb&useSSL=false

然后,它可以返回语法错误。有没有人有任何线索?是否与 JDBC VS Java 版本兼容性问题有关?

详细的 Java 日志消息: 36 2020-06-07 11:21:51.335 main{1} com.datamirror.ts.engine.ReplicationExecutive startup() 监控统计数据库错误:发生 SQL 异常。SQL 错误代码为“0”。SQL 状态为:08001。错误消息为:|Cannot load connection class because of underly exception: com.mysql.cj.core.exceptions.WrongArgumentException: Malformed database URL, failed to parse the main URL section.†com.datamirror .ts.monitoragent.statistics.MonitorStatisticsPbException 监控统计数据库错误:发生 SQL 异常。SQL 错误代码为“0”。SQL 状态为:08001。错误消息为:|无法加载连接类,因为基础异常:com.mysql.cj.core.exceptions.WrongArgumentException:数据库 URL 格式错误,无法解析主要 URL 部分。| 在 com.datamirror.ts。monitoragent.statistics.MonitorStatisticsDatabase.openConnection(MonitorStatisticsDatabase.java:616)| 在 com.datamirror.ts.monitoragent.statistics.MonitorStatisticsDatabase.(MonitorStatisticsDatabase.java:129)| 在 com.datamirror.ts.monitoragent.statistics.MonitoringStatistics.monitorStatsCollectOn(MonitoringStatistics.java:162)| 在 com.datamirror.ts.monitoragent.statistics.MonitoringStatistics.(MonitoringStatistics.java:145)| 在 com.datamirror.ts.monitoragent.statistics.MonitoringStatistics.start(MonitoringStatistics.java:177)| 在 com.datamirror.ts.engine.ReplicationExecutive.init(ReplicationExecutive.java:430)| 在 com.datamirror.ts.engine.ReplicationExecutive.startup(ReplicationExecutive.java:244)| 在 com.datamirror.ts.commandlinetools.script.Startup.executeUtility(Startup.java:92)| 在 com.datamirror.ts.commandlinetools。shared.BaseUtility.entryPoint(BaseUtility.java:267)| 在 com.datamirror.ts.commandlinetools.script.Startup.main(Startup.java:105)|原因:java.sql.SQLNonTransientConnectionException 由于基础异常无法加载连接类:com.mysql.cj.core.exceptions.WrongArgumentException : 格式错误的数据库 URL,无法解析主要 URL 部分。| 在 com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:108)| 在 com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:95)| 在 com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:87)| 在 com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:61)| 在 com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:71)| 在 com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping。translateException(SQLExceptionsMapping.java:79)| 在 com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:131)| 在 com.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:232)| 在 java.sql.DriverManager.getConnection(DriverManager.java:675)| 在 java.sql.DriverManager.getConnection(DriverManager.java:258)| 在 com.datamirror.ts.monitoragent.statistics.MonitorStatisticsDatabase.createConnection(MonitorStatisticsDatabase.java:765)| 在 com.datamirror.ts.monitoragent.statistics.MonitorStatisticsDatabase.openConnection(MonitorStatisticsDatabase.java:569)| 在 com.datamirror.ts.monitoragent.statistics.MonitorStatisticsDatabase.(MonitorStatisticsDatabase.java:129)| 在 com.datamirror.ts.monitoragent.statistics.MonitoringStatistics.monitorStatsCollectOn(MonitoringStatistics。爪哇:162)| 在 com.datamirror.ts.monitoragent.statistics.MonitoringStatistics.(MonitoringStatistics.java:145)| 在 com.datamirror.ts.monitoragent.statistics.MonitoringStatistics.start(MonitoringStatistics.java:177)| 在 com.datamirror.ts.engine.ReplicationExecutive.init(ReplicationExecutive.java:430)| 在 com.datamirror.ts.engine.ReplicationExecutive.startup(ReplicationExecutive.java:244)| 在 com.datamirror.ts.commandlinetools.script.Startup.executeUtility(Startup.java:92)| 在 com.datamirror.ts.commandlinetools.shared.BaseUtility.entryPoint(BaseUtility.java:267)| 在 com.datamirror.ts.commandlinetools.script.Startup.main(Startup.java:105)|原因:com.mysql.cj.core.exceptions.UnableToConnectException 由于底层异常无法加载连接类:com.mysql.cj .core.exceptions.WrongArgumentException:数据库 URL 格式错误,无法解析主要 URL 部分。| 在 sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)| 在 sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:83)| 在 sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:57)| 在 java.lang.reflect.Constructor.newInstance(Constructor.java:437)| 在 com.mysql.cj.core.exceptions.ExceptionFactory.createException(ExceptionFactory.java:60)| 在 com.mysql.cj.core.exceptions.ExceptionFactory.createException(ExceptionFactory.java:99)| 在 com.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:232)| 在 java.sql.DriverManager.getConnection(DriverManager.java:675)| 在 java.sql.DriverManager.getConnection(DriverManager.java:258)| 在 com.datamirror.ts。monitoragent.statistics.MonitorStatisticsDatabase.createConnection(MonitorStatisticsDatabase.java:765)| 在 com.datamirror.ts.monitoragent.statistics.MonitorStatisticsDatabase.openConnection(MonitorStatisticsDatabase.java:569)| 在 com.datamirror.ts.monitoragent.statistics.MonitorStatisticsDatabase.(MonitorStatisticsDatabase.java:129)| 在 com.datamirror.ts.monitoragent.statistics.MonitoringStatistics.monitorStatsCollectOn(MonitoringStatistics.java:162)| 在 com.datamirror.ts.monitoragent.statistics.MonitoringStatistics.(MonitoringStatistics.java:145)| 在 com.datamirror.ts.monitoragent.statistics.MonitoringStatistics.start(MonitoringStatistics.java:177)| 在 com.datamirror.ts.engine.ReplicationExecutive.init(ReplicationExecutive.java:430)| 在 com.datamirror.ts.engine.ReplicationExecutive.startup(ReplicationExecutive.java:244)| 在 com.datamirror.ts.commandlinetools.script.Startup.executeUtility(Startup.java:92)| 在 com.datamirror.ts.commandlinetools.shared.BaseUtility.entryPoint(BaseUtility.java:267)| 在 com.datamirror.ts.commandlinetools.script.Startup.main(Startup.java:105)|原因:com.mysql.cj.core.exceptions.WrongArgumentException 数据库 URL 格式错误,无法解析主要 URL 部分。| 在 sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)| 在 sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:83)| 在 sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:57)| 在 java.lang.reflect.Constructor.newInstance(Constructor.java:437)| 在 com.mysql.cj.core.exceptions.ExceptionFactory.createException(ExceptionFactory.java:60)| 在 com. mysql.cj.core.conf.url.ConnectionUrlParser.parseConnectionString(ConnectionUrlParser.java:140)| 在 com.mysql.cj.core.conf.url.ConnectionUrlParser.(ConnectionUrlParser.java:130)| 在 com.mysql.cj.core.conf.url.ConnectionUrlParser.parseConnectionString(ConnectionUrlParser.java:119)| 在 com.mysql.cj.core.conf.url.ConnectionUrl.getConnectionUrlInstance(ConnectionUrl.java:197)| 在 com.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:202)| 在 java.sql.DriverManager.getConnection(DriverManager.java:675)| 在 java.sql.DriverManager.getConnection(DriverManager.java:258)| 在 com.datamirror.ts.monitoragent.statistics.MonitorStatisticsDatabase.createConnection(MonitorStatisticsDatabase.java:765)| 在 com.datamirror.ts.monitoragent.statistics.MonitorStatisticsDatabase.openConnection(MonitorStatisticsDatabase.java:第569章 在 com.datamirror.ts.monitoragent.statistics.MonitorStatisticsDatabase.(MonitorStatisticsDatabase.java:129)| 在 com.datamirror.ts.monitoragent.statistics.MonitoringStatistics.monitorStatsCollectOn(MonitoringStatistics.java:162)| 在 com.datamirror.ts.monitoragent.statistics.MonitoringStatistics.(MonitoringStatistics.java:145)| 在 com.datamirror.ts.monitoragent.statistics.MonitoringStatistics.start(MonitoringStatistics.java:177)| 在 com.datamirror.ts.engine.ReplicationExecutive.init(ReplicationExecutive.java:430)| 在 com.datamirror.ts.engine.ReplicationExecutive.startup(ReplicationExecutive.java:244)| 在 com.datamirror.ts.commandlinetools.script.Startup.executeUtility(Startup.java:92)| 在 com.datamirror.ts.commandlinetools.shared.BaseUtility.entryPoint(BaseUtility.java:267)| 在 com.datamirror.ts.commandlinetools。

4

2 回答 2

0

在测试了一些 JDBC 驱动后,目前建议使用 MySQL Connector mysql-connector-java-8.0.18.jar。CDC 仍在使用 JAVA 8。(IBM JAVA 9)

mysql-connector-java-8.0.20.jar 可能更适用于 OpenJDK 11。

对于连接字符串,可能只是:jdbc:mysql://hostname:db_port/db_name

CDC 本身将采用一些默认参数,例如服务器设置的时区。

于 2020-06-18T15:50:33.253 回答
0

mysql 代理跟踪日志中显示的异常指向 URL 构造是不合适的,请您看看下面的示例。

示例:jdbc:mysql://hostname:db_port/db_name?serverTimezone=UTC

如何配置的详细步骤记录在知识中心https://www.ibm.com/support/knowledgecenter/en/SSTRGZ_11.4.0/com.ibm.cdcdoc.mysql.doc/tasks/addanewinstance_windows.html

请找到社区版部分下提供的步骤,希望这能解决问题。

谢谢 Sudarshan K IBM IDR CDC

于 2020-06-09T04:36:26.590 回答