【问题标题】:IBM CDC for MySQL Not StartedIBM CDC for MySQL 未启动
【发布时间】:2020-06-07 03:49:25
【问题描述】:

我正在尝试为 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 部分。

由于IBM提供的1.8的JRE/JDK,我已经设置了适当的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.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.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.script.Startup.main(Startup.java:105) 37 2020-06-07 11:21:51.335 main{1} com.datamirror.ts.util.TsExceptionHandler processUnhandledException() 发生未捕获的异常:†java.lang.RuntimeException com.datamirror.ts.monitoragent.statistics.MonitorS

【问题讨论】:

    标签: java mysql jdbc ibm-data-replication


    【解决方案1】:

    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中记录了详细的配置步骤

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

    谢谢 苏达山 K IBM IDR CDC

    【讨论】:

    • 感谢您的回复。我重新安装了 IIDR 11.4.02-5560 而不是 5548 以使其正常工作。 ?serverTimezone=UTC 可以忽略。但是,该服务已启动,但仅允许作为源。正如 IBM 文档所列出的,MySQL 应该可以成为目标。请建议我是否遗漏了什么。
    • 另外,MySQL Jdbc 连接器仅适用于 8.0_18(不是 8.0_20)。
    • 目标 mySQL 只是 1 个节点。我正在考虑从属,但它暗示着主人......那么,让它与 MySQL 社区一起工作的正确方法是什么。
    • 目标 MySQL 只是测试环境中的 1 个节点。我正在考虑提到的 SLAVE,但它暗示主人​​失踪了……那么,让它与 MySQL 社区一起工作的正确方法是什么。我正在使用参数: log-bin=二进制日志的路径 log-bin-index=二进制日志的路径 windex binlog_format=row enforce_gtid_consistency = ON gtid_mode = ON log_slave_updates = TRUE server_id = 1 或更高的整数值来自:ibm.com/support/producthub/db2/docs/content/SSTRGZ_11.4.0/…
    • CDC for MySQL 支持 MySQL 作为源,CDC for FlexRep 支持 MySQL 作为目标。 CDC for FlexRep 通过 JDBC 驱动程序支持 MySQL、PostgreSQL、EDB 作为目标,我们在ibm.com/support/knowledgecenter/SSTRGZ_11.4.0/… 记录了官方支持的 JDBC 驱动程序。注意:IBM CDC FlexRep 也可以配置为使用第三方 JDBC 驱动程序。如果在使用第三方 JDBC 驱动程序时出现问题,客户可以联系 IBM 技术支持以请求帮助。谢谢Sudarshan K
    【解决方案2】:

    在测试了一些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 本身将采用一些默认参数,例如服务器设置的时区。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-10-10
      • 2022-06-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-26
      相关资源
      最近更新 更多