diff --git a/.github/workflows/debezium-workflow-pr.yml b/.github/workflows/debezium-workflow-pr.yml index 95c2752ed..f5fcffe4d 100644 --- a/.github/workflows/debezium-workflow-pr.yml +++ b/.github/workflows/debezium-workflow-pr.yml @@ -308,7 +308,7 @@ jobs: # Runs each combination concurrently matrix: profile: [ "mysql-ci", "mysql-ci-gtids", "mysql-ci-percona", "mysql-ci-ssl" ] - version-mysql-server: [ "8.0", "8.4" ] + version-mysql-server: [ "8.0", "8.4", "9.0" ] fail-fast: false name: "MySQL ${{ matrix.version-mysql-server }} - ${{ matrix.profile }}" needs: [ check_style, file_changes ] diff --git a/.github/workflows/debezium-workflow-push.yml b/.github/workflows/debezium-workflow-push.yml index b88c85670..068a3ddd8 100644 --- a/.github/workflows/debezium-workflow-push.yml +++ b/.github/workflows/debezium-workflow-push.yml @@ -121,7 +121,7 @@ jobs: max-parallel: 2 matrix: profile: [ "mysql-ci", "mysql-ci-gtids", "mysql-ci-percona", "mysql-ci-ssl" ] - version-mysql-server: [ "8.0", "8.4" ] + version-mysql-server: [ "8.0", "8.4", "9.0" ] fail-fast: false name: "MySQL ${{ matrix.version-mysql-server }} - ${{ matrix.profile }}" needs: [ check_style ] diff --git a/debezium-connector-mysql/src/test/docker/server-gtids/my.cnf b/debezium-connector-mysql/src/test/docker/server-gtids/my.cnf index 4b3fba437..8f22843c5 100644 --- a/debezium-connector-mysql/src/test/docker/server-gtids/my.cnf +++ b/debezium-connector-mysql/src/test/docker/server-gtids/my.cnf @@ -118,6 +118,21 @@ binlog_expire_logs_seconds = 259200 gtid_mode = on enforce_gtid_consistency = on +authentication_policy = caching_sha2_password +caching_sha2_password_auto_generate_rsa_keys = on + +# -------------------------------------------------------------------------------------------- +# This section specifies 9.0 specific configurations +# -------------------------------------------------------------------------------------------- +[mysqld-9.0] + +# ---------------------------------------------- +# Enable GTIDs on this primary server +# ---------------------------------------------- +gtid_mode = on +enforce_gtid_consistency = on + authentication_policy = caching_sha2_password caching_sha2_password_auto_generate_rsa_keys = on binlog_expire_logs_seconds = 259200 +binlog_expire_logs_seconds = 259200 diff --git a/debezium-connector-mysql/src/test/docker/server-replica/my.cnf b/debezium-connector-mysql/src/test/docker/server-replica/my.cnf index 5f8c458f8..aa69e2d0e 100644 --- a/debezium-connector-mysql/src/test/docker/server-replica/my.cnf +++ b/debezium-connector-mysql/src/test/docker/server-replica/my.cnf @@ -97,3 +97,14 @@ enforce_gtid_consistency = on authentication_policy = caching_sha2_password caching_sha2_password_auto_generate_rsa_keys = on binlog_expire_logs_seconds = 259200 + +# -------------------------------------------------------------------------------------------- +# This section specifies 9.0 specific configurations +# -------------------------------------------------------------------------------------------- +[mysqld-9.0] +gtid_mode = on +enforce_gtid_consistency = on + +authentication_policy = caching_sha2_password +caching_sha2_password_auto_generate_rsa_keys = on +binlog_expire_logs_seconds = 259200 diff --git a/debezium-connector-mysql/src/test/docker/server-ssl/my.cnf b/debezium-connector-mysql/src/test/docker/server-ssl/my.cnf index 4f3ea3894..7f2b80179 100644 --- a/debezium-connector-mysql/src/test/docker/server-ssl/my.cnf +++ b/debezium-connector-mysql/src/test/docker/server-ssl/my.cnf @@ -82,3 +82,11 @@ binlog_expire_logs_seconds = 86400 authentication_policy = caching_sha2_password caching_sha2_password_auto_generate_rsa_keys = on binlog_expire_logs_seconds = 86400 + +# -------------------------------------------------------------------------------------------- +# This section specifies 9.0 specific configurations +# -------------------------------------------------------------------------------------------- +[mysqld-9.0] +authentication_policy = caching_sha2_password +caching_sha2_password_auto_generate_rsa_keys = on +binlog_expire_logs_seconds = 86400 diff --git a/debezium-connector-mysql/src/test/docker/server/my.cnf b/debezium-connector-mysql/src/test/docker/server/my.cnf index 0c5ca37b9..aeff6a588 100644 --- a/debezium-connector-mysql/src/test/docker/server/my.cnf +++ b/debezium-connector-mysql/src/test/docker/server/my.cnf @@ -77,3 +77,11 @@ binlog_expire_logs_seconds = 86400 authentication_policy = caching_sha2_password caching_sha2_password_auto_generate_rsa_keys = on binlog_expire_logs_seconds = 86400 + +# -------------------------------------------------------------------------------------------- +# This section specifies 9.0 specific configurations +# -------------------------------------------------------------------------------------------- +[mysqld-9.0] +authentication_policy = caching_sha2_password +caching_sha2_password_auto_generate_rsa_keys = on +binlog_expire_logs_seconds = 86400 diff --git a/debezium-connector-mysql/src/test/java/io/debezium/connector/mysql/MySqlTestConnection.java b/debezium-connector-mysql/src/test/java/io/debezium/connector/mysql/MySqlTestConnection.java index e95a8ef35..383e55472 100644 --- a/debezium-connector-mysql/src/test/java/io/debezium/connector/mysql/MySqlTestConnection.java +++ b/debezium-connector-mysql/src/test/java/io/debezium/connector/mysql/MySqlTestConnection.java @@ -25,6 +25,7 @@ public enum MySqlVersion { MYSQL_5_6, MYSQL_5_7, MYSQL_8, + MYSQL_9 } MySqlVersion mySqlVersion; @@ -116,7 +117,9 @@ public boolean isPercona() { @Override public String currentDateTimeDefaultOptional(String isoString) { - return !MySqlVersion.MYSQL_8.equals(getMySqlVersion()) ? isoString : null; + return !MySqlVersion.MYSQL_8.equals(getMySqlVersion()) && !MySqlVersion.MYSQL_9.equals(getMySqlVersion()) + ? isoString + : null; } @Override @@ -141,7 +144,7 @@ public void setBinlogRowQueryEventsOn() throws SQLException { @Override public boolean isCurrentDateTimeDefaultGenerated() { - return MySqlVersion.MYSQL_8.equals(getMySqlVersion()); + return MySqlVersion.MYSQL_8.equals(getMySqlVersion()) || MySqlVersion.MYSQL_9.equals(getMySqlVersion()); } public MySqlVersion getMySqlVersion() { @@ -149,7 +152,10 @@ public MySqlVersion getMySqlVersion() { final String versionString = getMySqlVersionString(); // Fallback to MySQL - if (versionString.startsWith("8.")) { + if (versionString.startsWith("9.")) { + mySqlVersion = MySqlVersion.MYSQL_9; + } + else if (versionString.startsWith("8.")) { mySqlVersion = MySqlVersion.MYSQL_8; } else if (versionString.startsWith("5.5")) {