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. Some action is done but the instance could not be added in RHEL. However, the log error message is exactly the same.
- 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
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
The Exception shown in mysql agent trace logs pointing the URL construction is not appropriate, can you please take a look at below example.
Example: jdbc:mysql://hostname:db_port/db_name?serverTimezone=UTC
The detailed steps how to configure are documented in Knowledge Center at https://www.ibm.com/support/knowledgecenter/en/SSTRGZ_11.4.0/com.ibm.cdcdoc.mysql.doc/tasks/addanewinstance_windows.html
Please find the steps provided under community edition section, hope this will address the issue.
Thank you Sudarshan K IBM IDR CDC