Data Replication

  • 1.  IBM CDC for MySQL not started

    Posted Mon June 08, 2020 03:30 PM
    I am trying to set up a IBM Data Replication for AS400 to MySQL. For the target MySQL, it is now the latest MySQL 8.0.20 Community Server. I have tested the JDBC connections well. However, the CDC instance is never started (by testing MySQL Jdbc connection from 8.0.9rc to 8.0.20).

    In Windows, the instance is added but not started. Same actions are done but the instance could not be added in RHEL. However, the log error message is exactly the same with the software version below:
    • IBM InfoSphere CDC Access Server (11.4.0.2 - 11016)
    • IBM InfoSphere Data Replication for MySQL (11.4.0.2 - 5548)
      • Remark: both RHEL / Windows 2016 testing environments facing same results
    • MySQL 8.0.20 Community Version (both remote / local databases are tested)

    For only 8.0.9rc to 8.0.11, it is likely trying to connection with errors returned.
    • Malformed database URL, failed to parse the main URL sections.

    As the JRE / JDK of 1.8 provided IBM, I have set proper JAVA_HOME, PATH for the settings. Is there any clues? I have tried the connection strings with: (on both 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
    Actually, it provided the same result. I tried to type something wrong with jdbc:mysql://127.0.0.1:3306/testdb&useSSL=false
    Then, it can return syntax error.

    Does anyone have any clues? Is it related to JDBC VS Java version compatibility issue?

    Detailed Java Log Message:

    36 2020-06-07 11:21:51.335 main{1} com.datamirror.ts.engine.ReplicationExecutive startup() Monitoring Statistics database error: A SQL exception has occurred. The SQL error code is '0'. The SQL state is: 08001. The error message is: |Cannot load connection class because of underlying exception: com.mysql.cj.core.exceptions.WrongArgumentException: Malformed database URL, failed to parse the main URL sections.†com.datamirror.ts.monitoragent.statistics.MonitorStatisticsPbException Monitoring Statistics database error: A SQL exception has occurred. The SQL error code is '0'. The SQL state is: 08001. The error message is: |Cannot load connection class because of underlying exception: com.mysql.cj.core.exceptions.WrongArgumentException: Malformed database URL, failed to parse the main URL sections.| at com.datamirror.ts.monitoragent.statistics.MonitorStatisticsDatabase.openConnection(MonitorStatisticsDatabase.java:616)| at com.datamirror.ts.monitoragent.statistics.MonitorStatisticsDatabase.(MonitorStatisticsDatabase.java:129)| at com.datamirror.ts.monitoragent.statistics.MonitoringStatistics.monitorStatsCollectOn(MonitoringStatistics.java:162)| at com.datamirror.ts.monitoragent.statistics.MonitoringStatistics.(MonitoringStatistics.java:145)| at com.datamirror.ts.monitoragent.statistics.MonitoringStatistics.start(MonitoringStatistics.java:177)| at com.datamirror.ts.engine.ReplicationExecutive.init(ReplicationExecutive.java:430)| at com.datamirror.ts.engine.ReplicationExecutive.startup(ReplicationExecutive.java:244)| at com.datamirror.ts.commandlinetools.script.Startup.executeUtility(Startup.java:92)| at com.datamirror.ts.commandlinetools.shared.BaseUtility.entryPoint(BaseUtility.java:267)| at com.datamirror.ts.commandlinetools.script.Startup.main(Startup.java:105)|Caused by: java.sql.SQLNonTransientConnectionException Cannot load connection class because of underlying exception: com.mysql.cj.core.exceptions.WrongArgumentException: Malformed database URL, failed to parse the main URL sections.| at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:108)| at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:95)| at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:87)| at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:61)| at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:71)| at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:79)| at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:131)| at com.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:232)| at java.sql.DriverManager.getConnection(DriverManager.java:675)| at java.sql.DriverManager.getConnection(DriverManager.java:258)| at com.datamirror.ts.monitoragent.statistics.MonitorStatisticsDatabase.createConnection(MonitorStatisticsDatabase.java:765)| at com.datamirror.ts.monitoragent.statistics.MonitorStatisticsDatabase.openConnection(MonitorStatisticsDatabase.java:569)| at com.datamirror.ts.monitoragent.statistics.MonitorStatisticsDatabase.(MonitorStatisticsDatabase.java:129)| at com.datamirror.ts.monitoragent.statistics.MonitoringStatistics.monitorStatsCollectOn(MonitoringStatistics.java:162)| at com.datamirror.ts.monitoragent.statistics.MonitoringStatistics.(MonitoringStatistics.java:145)| at com.datamirror.ts.monitoragent.statistics.MonitoringStatistics.start(MonitoringStatistics.java:177)| at com.datamirror.ts.engine.ReplicationExecutive.init(ReplicationExecutive.java:430)| at com.datamirror.ts.engine.ReplicationExecutive.startup(ReplicationExecutive.java:244)| at com.datamirror.ts.commandlinetools.script.Startup.executeUtility(Startup.java:92)| at com.datamirror.ts.commandlinetools.shared.BaseUtility.entryPoint(BaseUtility.java:267)| at com.datamirror.ts.commandlinetools.script.Startup.main(Startup.java:105)|Caused by: com.mysql.cj.core.exceptions.UnableToConnectException Cannot load connection class because of underlying exception: com.mysql.cj.core.exceptions.WrongArgumentException: Malformed database URL, failed to parse the main URL sections.| at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)| at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:83)| at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:57)| at java.lang.reflect.Constructor.newInstance(Constructor.java:437)| at com.mysql.cj.core.exceptions.ExceptionFactory.createException(ExceptionFactory.java:60)| at com.mysql.cj.core.exceptions.ExceptionFactory.createException(ExceptionFactory.java:99)| at com.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:232)| at java.sql.DriverManager.getConnection(DriverManager.java:675)| at java.sql.DriverManager.getConnection(DriverManager.java:258)| at com.datamirror.ts.monitoragent.statistics.MonitorStatisticsDatabase.createConnection(MonitorStatisticsDatabase.java:765)| at com.datamirror.ts.monitoragent.statistics.MonitorStatisticsDatabase.openConnection(MonitorStatisticsDatabase.java:569)| at com.datamirror.ts.monitoragent.statistics.MonitorStatisticsDatabase.(MonitorStatisticsDatabase.java:129)| at com.datamirror.ts.monitoragent.statistics.MonitoringStatistics.monitorStatsCollectOn(MonitoringStatistics.java:162)| at com.datamirror.ts.monitoragent.statistics.MonitoringStatistics.(MonitoringStatistics.java:145)| at com.datamirror.ts.monitoragent.statistics.MonitoringStatistics.start(MonitoringStatistics.java:177)| at com.datamirror.ts.engine.ReplicationExecutive.init(ReplicationExecutive.java:430)| at com.datamirror.ts.engine.ReplicationExecutive.startup(ReplicationExecutive.java:244)| at com.datamirror.ts.commandlinetools.script.Startup.executeUtility(Startup.java:92)| at com.datamirror.ts.commandlinetools.shared.BaseUtility.entryPoint(BaseUtility.java:267)| at com.datamirror.ts.commandlinetools.script.Startup.main(Startup.java:105)|Caused by: com.mysql.cj.core.exceptions.WrongArgumentException Malformed database URL, failed to parse the main URL sections.| at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)| at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:83)| at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:57)| at java.lang.reflect.Constructor.newInstance(Constructor.java:437)| at com.mysql.cj.core.exceptions.ExceptionFactory.createException(ExceptionFactory.java:60)| at com.mysql.cj.core.conf.url.ConnectionUrlParser.parseConnectionString(ConnectionUrlParser.java:140)| at com.mysql.cj.core.conf.url.ConnectionUrlParser.(ConnectionUrlParser.java:130)| at com.mysql.cj.core.conf.url.ConnectionUrlParser.parseConnectionString(ConnectionUrlParser.java:119)| at com.mysql.cj.core.conf.url.ConnectionUrl.getConnectionUrlInstance(ConnectionUrl.java:197)| at com.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:202)| at java.sql.DriverManager.getConnection(DriverManager.java:675)| at java.sql.DriverManager.getConnection(DriverManager.java:258)| at com.datamirror.ts.monitoragent.statistics.MonitorStatisticsDatabase.createConnection(MonitorStatisticsDatabase.java:765)| at com.datamirror.ts.monitoragent.statistics.MonitorStatisticsDatabase.openConnection(MonitorStatisticsDatabase.java:569)| at com.datamirror.ts.monitoragent.statistics.MonitorStatisticsDatabase.(MonitorStatisticsDatabase.java:129)| at com.datamirror.ts.monitoragent.statistics.MonitoringStatistics.monitorStatsCollectOn(MonitoringStatistics.java:162)| at com.datamirror.ts.monitoragent.statistics.MonitoringStatistics.(MonitoringStatistics.java:145)| at com.datamirror.ts.monitoragent.statistics.MonitoringStatistics.start(MonitoringStatistics.java:177)| at com.datamirror.ts.engine.ReplicationExecutive.init(ReplicationExecutive.java:430)| at com.datamirror.ts.engine.ReplicationExecutive.startup(ReplicationExecutive.java:244)| at com.datamirror.ts.commandlinetools.script.Startup.executeUtility(Startup.java:92)| at com.datamirror.ts.commandlinetools.shared.BaseUtility.entryPoint(BaseUtility.java:267)| at 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() An uncaught exception has occurred: †java.lang.RuntimeException com.datamirror.ts.monitoragent.statistics.MonitorS

    ------------------------------
    Samuel SUM
    (working with IBM Cognos, SPSS, DB2, DataStage, CDC, etc)
    ------------------------------


    #DataReplication
    #DataIntegration


  • 2.  RE: IBM CDC for MySQL not started

    Posted Tue June 23, 2020 05:40 PM

    They key to your question is "AS400 to MySQL".

    Whereas CDC for MySQL source engine docs :
    https://www.ibm.com/support/knowledgecenter/SSTRGZ_11.4.0/com.ibm.cdcdoc.mysql.doc/concepts/overview.html

    say "This engine provides full source-side replication capability for MySQL".   This is not a target engine.

    For MySQL as a target you need CDC FlexRep engine:
    https://www.ibm.com/support/knowledgecenter/SSTRGZ_11.4.0/com.ibm.cdcdoc.cdcflexrep.doc/concepts/supportedflexrepjdbcdrivers.html



    ------------------------------
    Glenn Steffler
    ------------------------------