DBZ-8030 Add support for MySQL 9

This commit is contained in:
Jiri Pechanec 2024-08-14 05:50:04 +02:00
parent 4cca5a78c1
commit c5482a4df1
7 changed files with 53 additions and 5 deletions

View File

@ -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 ]

View File

@ -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 ]

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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")) {