DBZ-2466 Add Percona Server profile to assembly
This commit is contained in:
parent
011c3be948
commit
304ad4998c
@ -113,6 +113,7 @@
|
|||||||
<mysql.replica.user>mysqlreplica</mysql.replica.user>
|
<mysql.replica.user>mysqlreplica</mysql.replica.user>
|
||||||
<mysql.replica.password>mysqlpw</mysql.replica.password>
|
<mysql.replica.password>mysqlpw</mysql.replica.password>
|
||||||
<mysql.port>3306</mysql.port>
|
<mysql.port>3306</mysql.port>
|
||||||
|
<mysql.percona.port>3306</mysql.percona.port>
|
||||||
<mysql.gtid.port>3306</mysql.gtid.port>
|
<mysql.gtid.port>3306</mysql.gtid.port>
|
||||||
<mysql.gtid.replica.port>3306</mysql.gtid.replica.port>
|
<mysql.gtid.replica.port>3306</mysql.gtid.replica.port>
|
||||||
<mysql.replica.port>3306</mysql.replica.port> <!-- by default use primary as 'replica' -->
|
<mysql.replica.port>3306</mysql.replica.port> <!-- by default use primary as 'replica' -->
|
||||||
@ -292,6 +293,54 @@
|
|||||||
</assembly>
|
</assembly>
|
||||||
</build>
|
</build>
|
||||||
</image>
|
</image>
|
||||||
|
<image>
|
||||||
|
<!--
|
||||||
|
A Docker image using a Percona Server installation
|
||||||
|
-->
|
||||||
|
<name>debezium/percona-server-test-database</name>
|
||||||
|
<run>
|
||||||
|
<namingStrategy>none</namingStrategy>
|
||||||
|
<env>
|
||||||
|
<MYSQL_ROOT_PASSWORD>debezium-rocks</MYSQL_ROOT_PASSWORD>
|
||||||
|
<MYSQL_USER>${mysql.user}</MYSQL_USER>
|
||||||
|
<MYSQL_PASSWORD>${mysql.password}</MYSQL_PASSWORD>
|
||||||
|
<TZ>Pacific/Pago_Pago</TZ>
|
||||||
|
</env>
|
||||||
|
<ports>
|
||||||
|
<port>${mysql.percona.port}:3306</port>
|
||||||
|
</ports>
|
||||||
|
<log>
|
||||||
|
<prefix>percona-server</prefix>
|
||||||
|
<enabled>true</enabled>
|
||||||
|
<color>magenta</color>
|
||||||
|
</log>
|
||||||
|
<wait>
|
||||||
|
<log>MySQL init process done. Ready for start up.</log>
|
||||||
|
<time>${mysql.init.timeout}</time>
|
||||||
|
</wait>
|
||||||
|
</run>
|
||||||
|
<build>
|
||||||
|
<from>percona/percona-server:${version.mysql.server}</from>
|
||||||
|
<assembly>
|
||||||
|
<inline>
|
||||||
|
<fileSets>
|
||||||
|
<fileSet>
|
||||||
|
<directory>${project.basedir}/src/test/docker/server</directory>
|
||||||
|
<includes>
|
||||||
|
<include>my.cnf</include>
|
||||||
|
</includes>
|
||||||
|
<outputDirectory>etc/mysql</outputDirectory>
|
||||||
|
</fileSet>
|
||||||
|
<fileSet>
|
||||||
|
<directory>${project.basedir}/src/test/docker/init</directory>
|
||||||
|
<outputDirectory>docker-entrypoint-initdb.d</outputDirectory>
|
||||||
|
</fileSet>
|
||||||
|
</fileSets>
|
||||||
|
</inline>
|
||||||
|
<targetDir>/</targetDir>
|
||||||
|
</assembly>
|
||||||
|
</build>
|
||||||
|
</image>
|
||||||
</images>
|
</images>
|
||||||
</configuration>
|
</configuration>
|
||||||
<!--
|
<!--
|
||||||
@ -402,10 +451,11 @@
|
|||||||
</activation>
|
</activation>
|
||||||
<properties>
|
<properties>
|
||||||
<!-- Run multiple images at the same time, but use different ports for all MySQL servers -->
|
<!-- Run multiple images at the same time, but use different ports for all MySQL servers -->
|
||||||
<docker.filter>debezium/mysql-server-test-database,debezium/mysql-server-gtids-test-database,debezium/mysql-server-gtids-test-database-replica</docker.filter>
|
<docker.filter>debezium/mysql-server-test-database,debezium/mysql-server-gtids-test-database,debezium/mysql-server-gtids-test-database-replica,debezium/percona-server-test-database</docker.filter>
|
||||||
<mysql.port>4301</mysql.port>
|
<mysql.port>4301</mysql.port>
|
||||||
<mysql.gtid.port>4302</mysql.gtid.port>
|
<mysql.gtid.port>4302</mysql.gtid.port>
|
||||||
<mysql.gtid.replica.port>4303</mysql.gtid.replica.port>
|
<mysql.gtid.replica.port>4303</mysql.gtid.replica.port>
|
||||||
|
<mysql.percona.port>4304</mysql.percona.port>
|
||||||
</properties>
|
</properties>
|
||||||
<build>
|
<build>
|
||||||
<plugins>
|
<plugins>
|
||||||
@ -490,6 +540,20 @@
|
|||||||
</systemPropertyVariables>
|
</systemPropertyVariables>
|
||||||
</configuration>
|
</configuration>
|
||||||
</execution>
|
</execution>
|
||||||
|
<!-- Then just Percona Server -->
|
||||||
|
<execution>
|
||||||
|
<id>integration-test-percona-server</id>
|
||||||
|
<goals>
|
||||||
|
<goal>integration-test</goal>
|
||||||
|
</goals>
|
||||||
|
<configuration>
|
||||||
|
<systemPropertyVariables>
|
||||||
|
<!-- same port for both, since we're only running one server -->
|
||||||
|
<database.port>${mysql.percona.port}</database.port>
|
||||||
|
<database.replica.port>${mysql.percona.port}</database.replica.port>
|
||||||
|
</systemPropertyVariables>
|
||||||
|
</configuration>
|
||||||
|
</execution>
|
||||||
<execution>
|
<execution>
|
||||||
<id>verify</id>
|
<id>verify</id>
|
||||||
<goals>
|
<goals>
|
||||||
@ -539,6 +603,27 @@
|
|||||||
</properties>
|
</properties>
|
||||||
</profile>
|
</profile>
|
||||||
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
Use the Docker image for Percona Server.
|
||||||
|
To use, specify "-Dpercona-server" or -Ppercona-server on the Maven command line.
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
|
||||||
|
<profile>
|
||||||
|
<id>percona-server</id>
|
||||||
|
<activation>
|
||||||
|
<activeByDefault>false</activeByDefault>
|
||||||
|
<property>
|
||||||
|
<name>percona-server</name>
|
||||||
|
</property>
|
||||||
|
</activation>
|
||||||
|
<properties>
|
||||||
|
<!-- Docker properties -->
|
||||||
|
<docker.filter>debezium/percona-server-test-database</docker.filter>
|
||||||
|
<!-- Integration test properties -->
|
||||||
|
<database.port>${mysql.percona.port}</database.port>
|
||||||
|
<database.replica.port>${mysql.percona.port}</database.replica.port>
|
||||||
|
<docker.initimage>ln -s /usr/share/zoneinfo/Pacific/Pago_Pago /etc/localtime</docker.initimage>
|
||||||
|
</properties>
|
||||||
|
</profile>
|
||||||
|
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
Use the Docker image for a MySQL replica of another MySQL server
|
Use the Docker image for a MySQL replica of another MySQL server
|
||||||
configured to use GTIDs. To use, specify "-Dmysql-replica"
|
configured to use GTIDs. To use, specify "-Dmysql-replica"
|
||||||
or -Pmysql-replica on the Maven command line.
|
or -Pmysql-replica on the Maven command line.
|
||||||
|
@ -18,3 +18,20 @@ GRANT ALL PRIVILEGES ON *.* TO 'mysqluser'@'%';
|
|||||||
-- DATABASE: emptydb
|
-- DATABASE: emptydb
|
||||||
-- ----------------------------------------------------------------------------------------------------------------
|
-- ----------------------------------------------------------------------------------------------------------------
|
||||||
CREATE DATABASE emptydb;
|
CREATE DATABASE emptydb;
|
||||||
|
RESET MASTER;
|
||||||
|
CREATE DATABASE testing;
|
||||||
|
CREATE TABLE testing.testing (id INT NOT NULL AUTO_INCREMENT PRIMARY KEY);
|
||||||
|
INSERT INTO testing.testing VALUES ();
|
||||||
|
INSERT INTO testing.testing VALUES ();
|
||||||
|
INSERT INTO testing.testing VALUES ();
|
||||||
|
INSERT INTO testing.testing VALUES ();
|
||||||
|
INSERT INTO testing.testing VALUES ();
|
||||||
|
INSERT INTO testing.testing VALUES ();
|
||||||
|
INSERT INTO testing.testing VALUES ();
|
||||||
|
INSERT INTO testing.testing VALUES ();
|
||||||
|
INSERT INTO testing.testing VALUES ();
|
||||||
|
INSERT INTO testing.testing VALUES ();
|
||||||
|
INSERT INTO testing.testing VALUES ();
|
||||||
|
INSERT INTO testing.testing VALUES ();
|
||||||
|
INSERT INTO testing.testing VALUES ();
|
||||||
|
INSERT INTO testing.testing VALUES ();
|
||||||
|
@ -330,7 +330,7 @@ public void shouldProcessRolledBackSavepoint() throws SQLException, InterruptedE
|
|||||||
int recordCount;
|
int recordCount;
|
||||||
int customerEventsCount;
|
int customerEventsCount;
|
||||||
int topicCount;
|
int topicCount;
|
||||||
if (MySQLConnection.isMySQL5()) {
|
if (MySQLConnection.isMySQL5() && !MySQLConnection.isPerconaServer()) {
|
||||||
// MySQL 5 contains events when the TX was effectively rolled-back
|
// MySQL 5 contains events when the TX was effectively rolled-back
|
||||||
// INSERT + INSERT + ROLLBACK, SAVEPOINT filtered
|
// INSERT + INSERT + ROLLBACK, SAVEPOINT filtered
|
||||||
recordCount = 3;
|
recordCount = 3;
|
||||||
|
@ -92,6 +92,16 @@ public static boolean isMySQL5() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Obtain whether the database source is the Percona Server fork.
|
||||||
|
*
|
||||||
|
* @return true if the database is Percona Server; otherwise false.
|
||||||
|
*/
|
||||||
|
public static boolean isPerconaServer() {
|
||||||
|
String comment = forTestDatabase("mysql").getMySqlVersionComment();
|
||||||
|
return comment.startsWith("Percona");
|
||||||
|
}
|
||||||
|
|
||||||
protected static void addDefaults(Configuration.Builder builder) {
|
protected static void addDefaults(Configuration.Builder builder) {
|
||||||
builder.withDefault(JdbcConfiguration.HOSTNAME, "localhost")
|
builder.withDefault(JdbcConfiguration.HOSTNAME, "localhost")
|
||||||
.withDefault(JdbcConfiguration.PORT, 3306)
|
.withDefault(JdbcConfiguration.PORT, 3306)
|
||||||
@ -147,6 +157,20 @@ public String getMySqlVersionString() {
|
|||||||
return versionString;
|
return versionString;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getMySqlVersionComment() {
|
||||||
|
String versionString;
|
||||||
|
try {
|
||||||
|
versionString = connect().queryAndMap("SHOW GLOBAL VARIABLES LIKE 'version_comment'", rs -> {
|
||||||
|
rs.next();
|
||||||
|
return rs.getString(2);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
catch (SQLException e) {
|
||||||
|
throw new IllegalStateException("Couldn't obtain MySQL Server version comment", e);
|
||||||
|
}
|
||||||
|
return versionString;
|
||||||
|
}
|
||||||
|
|
||||||
public DatabaseDifferences databaseAsserts() {
|
public DatabaseDifferences databaseAsserts() {
|
||||||
if (databaseAsserts == null) {
|
if (databaseAsserts == null) {
|
||||||
if (getMySqlVersion() == MySqlVersion.MYSQL_8) {
|
if (getMySqlVersion() == MySqlVersion.MYSQL_8) {
|
||||||
|
Loading…
Reference in New Issue
Block a user