Percona Online Schema Change
Overview
Summary | Extension to support the tool |
Current Version | 4.20.0 (2023-03-10)
Dependency updates:
|
Author | Andreas Dangel (andreas.dangel [at] adangel.org) |
Issue Tracking | |
Source Repository | |
Maven Coordinates | |
Supported Database | MySQL, MariaDB (since 4.3.2) |
- 1 Overview
- 2 Readme
- 2.1 Supported Databases
- 2.2 Supported Changeset Formats
- 2.3 Liquibase version(s) tested against
- 2.4 Supported Changes and examples
- 2.4.1 AddColumn
- 2.4.2 AddForeignKeyConstraint
- 2.4.3 AddPrimaryKey
- 2.4.4 AddUniqueConstraint
- 2.4.5 CreateIndex
- 2.4.6 DropColumn
- 2.4.7 DropForeignKeyConstraint
- 2.4.8 DropUniqueConstraint
- 2.4.9 DropIndex
- 2.4.10 ModifyDataType
- 2.4.11 Sql
- 2.5 Configuration
- 2.5.1 UsePercona flag
- 2.5.2 PerconaOptions flag
- 2.5.3 Liquibase Percona extension XSD
- 2.5.4 System Properties
- 2.6 Using / Installing the extension
- 2.6.1 Download
- 2.6.2 Command line liquibase
- 2.6.3 Via maven
- 2.6.4 Docker
- 2.6.5 Using snapshots
- 2.7 Notes
- 2.8 Building this extension
- 2.8.1 Integration testing
- 2.9 Common Problems
- 2.10 References
- 2.11 Old Versions and Release Notes
Readme
Supported Databases
MySQL and MariaDB (since 4.3.2) are the only supported databases. The extension checks whether it is being run against a MySQL/MariaDB database. If not, it falls back to the default changes provided by liquibase-core.
Supported Changeset Formats
This liquibase extension supports the following changeset formats:
Formatted SQL (since liquibase-percona 4.19.1)
Liquibase version(s) tested against
Liquibase 3.2.0 (liquibase-percona 1.0.0)
Liquibase 3.3.0 (liquibase-percona 1.1.1)
Liquibase 3.3.5 and 3.4.2 (liquibase-percona 1.2.1)
Liquibase 3.3.5, 3.4.2, and 3.5.1 (liquibase-percona 1.2.2)
Liquibase 3.3.5, 3.4.2, and 3.5.3 (liquibase-percona 1.3.1, 1.4.0)
Liquibase 3.3.5, 3.4.2, and 3.5.4 (liquibase-percona 1.4.1)
Liquibase 3.3.5, 3.4.2, 3.5.5, and 3.6.2 (liquibase-percona 1.5.2). Percona Toolkit 3.0.12.
Liquibase 3.3.5, 3.4.2, 3.5.5, and 3.6.3 (liquibase-percona 1.6.0). Percona Toolkit 3.0.13.
Liquibase 3.5.5, 3.6.3, 3.7.0, 3.8.9, 3.9.0, and 3.10.1 (liquibase-percona 1.7.0). Percona Toolkit 3.2.0.
Liquibase 3.5.5, 3.6.3, 3.7.0, 3.8.9, 3.9.0, and 3.10.3 (liquibase-percona 1.7.1). Percona Toolkit 3.3.0.
Liquibase 4.0.0, 4.1.1, 4.2.2 (liquibase-percona 2.0.0). Percona Toolkit 3.3.0.
Liquibase 4.0.0, 4.1.1, 4.2.2, 4.3.5, 4.4.3, 4.5.0, 4.6.2, 4.7.1, 4.8.0, 4.9.1, 4.10.0, 4.11.0, 4.12.0 (liquibase-percona 4.12.0). Percona Toolkit 3.3.1.
Liquibase 4.0.0, 4.1.1, 4.2.2, 4.3.5, 4.4.3, 4.5.0, 4.6.2, 4.7.1, 4.8.0, 4.9.1, 4.10.0, 4.11.0, 4.12.0, 4.13.0, 4.14.0, 4.15.0 (liquibase-percona 4.15.0). Percona Toolkit 3.4.0.
Liquibase 4.16.0 (liquibase-percona 4.16.0). Percona Toolkit 3.4.0.
Liquibase 4.17.1 (liquibase-percona 4.17.1). Percona Toolkit 3.4.0.
Liquibase 4.18.0 (liquibase-percona 4.18.0). Percona Toolkit 3.5.0.
Liquibase 4.19.0 (liquibase-percona 4.19.0). Percona Toolkit 3.5.0.
Liquibase 4.19.1 (liquibase-percona 4.19.1). Percona Toolkit 3.5.1.
Liquibase 4.20.0 (liquibase-percona 4.20.0). Percona Toolkit 3.5.1.
Supported Changes and examples
The following changes are supported:
AddColumn
Since: liquibase-percona 1.0.0
Automatic rollback supported? yes
Example:
<changeSet id="2" author="Alice">
<addColumn tableName="person">
<column name="address" type="varchar(255)"/>
</addColumn>
</changeSet>
Corresponding command:
pt-online-schema-change --alter="ADD COLUMN address VARCHAR(255)" ...
AddForeignKeyConstraint
Since: liquibase-percona 1.3.0
Automatic rollback supported? yes
Example:
<changeSet id="3" author="Alice">
<addForeignKeyConstraint constraintName="fk_person_address"
referencedTableName="person" referencedColumnNames="id"
baseTableName="address" baseColumnNames="person_id"/>
</changeSet>
Corresponding command:
pt-online-schema-change --alter="ADD CONSTRAINT fk_person_address FOREIGN KEY (person_id) REFERENCES person (id)" ...
AddPrimaryKey
Since: liquibase-percona 1.7.0
Automatic rollback supported? no
Example:
<changeSet id="2" author="Alice">
<addPrimaryKey tableName="person" columnNames="id, name"/>
</changeSet>
Corresponding command:
pt-online-schema-change --alter="DROP PRIMARY KEY, ADD PRIMARY KEY (id, name)" ...
Note: When the table has already a primary key, a "DROP PRIMARY KEY" statement is added to the
alter command first. By default, the pt-online-schema-change will not execute this change,
you have to set the additional option --no-check-alter
first (see check-alter).
Make sure to read this section completely.
In order to figure out, whether a primary key exists already (and therefore the DROP PRIMARY KEY statement is needed),
a database connection is required. This means, the generated migration SQL will be wrong (it only contains the
ADD PRIMARY KEY statement).
Automatic rollback is not supported by this percona change (as opposed to the plain liquibase addPrimaryKey change).
pt-osc usually needs a primary key or a unique key in order to operate properly. If the table has no such keys,
it most likey will refuse to operate.
AddUniqueConstraint
Since: liquibase-percona 1.3.0
Automatic rollback supported? yes
Example:
<changeSet id="2" author="Alice">
<addUniqueConstraint columnNames="id, name" tableName="person" constraintName="uq_id_name"/>
</changeSet>
Corresponding command:
pt-online-schema-change --alter="ADD CONSTRAINT uq_id_name UNIQUE (id, name)" ...
CreateIndex
Since: liquibase-percona 1.2.0
Automatic rollback supported? yes
Example:
<changeSet id="2" author="Alice">
<createIndex indexName="emailIdx" tableName="person" unique="true">
<column name="email"/>
</createIndex>
</changeSet>
Corresponding command:
pt-online-schema-change --alter="ADD UNIQUE INDEX emailIdx (email)" ...
DropColumn
Since: liquibase-percona 1.0.0
Automatic rollback supported? no
Example:
<changeSet id="2" author="Alice">
<dropColumn tableName="person" columnName="age"/>
</changeSet>
Corresponding command:
pt-online-schema-change --alter="DROP COLUMN age" ...
DropForeignKeyConstraint
Since: liquibase-percona 1.3.0
Automatic rollback supported? no
Example:
<changeSet id="4" author="Alice">
<dropForeignKeyConstraint baseTableName="address" constraintName="fk_person_address" />
</changeSet>
Corresponding command:
pt-online-schema-change --alter="DROP FOREIGN KEY _fk_person_address" ...
DropUniqueConstraint
Since: liquibase-percona 1.3.0
Automatic rollback supported? no
Example:
<changeSet id="3" author="Alice">
<dropUniqueConstraint tableName="person" constraintName="uq_id_name"/>
</changeSet>
Corresponding command:
pt-online-schema-change --alter="DROP KEY uq_id_name" ...
DropIndex
Since: liquibase-percona 1.2.0
Automatic rollback supported? no
Example:
<changeSet id="3" author="Alice">
<dropIndex indexName="emailIdx" tableName="person"/>
</changeSet>
Corresponding command:
pt-online-schema-change --alter="DROP INDEX emailIdx" ...
ModifyDataType
Since: liquibase-percona 1.2.0
Automatic rollback supported? no
Example:
<changeSet id="2" author="Alice">
<modifyDataType tableName="person" columnName="email" newDataType="VARCHAR(400)"/>
</changeSet>
Corresponding command:
pt-online-schema-change --alter="MODIFY email VARCHAR(400)" ...
Sql
Since: liquibase-percona 4.19.1
Automatic rollback supported? no
Example:
<changeSet id="2" author="Alice">
<sql>ALTER TABLE person ADD COLUMN address VARCHAR(255) NULL</sql>
</changeSet>
Corresponding command:
pt-online-schema-change --alter="ADD COLUMN address VARCHAR(255) NULL" ...
Note that there are several limitations:
Percona toolkit won't be used, when the sql statements consists of multiple statements (e.g. separated by
;
). In that case a warning will be logged and the sql change will be executed as usual without the percona toolkit.If the sql change is not an alter table statement, then a warning will be logged and the sql change will be executed as usual without the percona toolkit.
Liquibase-percona tries to determine the table name. If that doesn't work, then a warning will be logged and the sql change will be executed as usual without the percona toolkit.
This change type is active by default and percona toolkit will be used when possible. It can be disabled as usual via system property
liquibase.percona.skipChanges
.Be sure to test the changelog thoroughly.
Configuration
UsePercona flag
Each change allows to enable or disable the usage of percona toolkit via the property usePercona
. By default, the percona toolkit is used, see also the system property liquibase.percona.defaultOn
.
Example:
- changeSet:
id: 2
author: Alice
changes:
- addColumn:
tableName: person
usePercona: false
columns:
- column:
name: address
type: varchar(255)
This flag exists since liquibase-percona 1.3.0
It is supported by using the YAML format and since liquibase 3.6.0, you can use it in XML changesets, too:
<addColumn tableName="person"
xmlns:liquibasePercona="http://www.liquibase.org/xml/ns/dbchangelog-ext/liquibase-percona"
liquibasePercona:usePercona="false">
<column name="address" type="varchar(255)"/>
</addColumn>
Since liquibase-percona 4.19.1, you can use it in SQL changeset as follows:
--changeset Alice:2
--liquibasePercona:usePercona="false"
ALTER TABLE person ADD address VARCHAR(255) NULL;
PerconaOptions flag
Each change allows to specify options that are used when executing pt-osc. If specified, this option overrides the system property liquibase.percona.options
. If not specified, then the system property will be used.
Example:
- changeSet:
id: 2
author: Alice
changes:
- addColumn:
tableName: person
perconaOptions: "--alter-foreign-keys-method=auto"
columns:
- column:
name: address
type: varchar(255)
This flag exists since liquibase-percona 2.0.0.
It is supported by using the YAML format and in XML changesets:
<addColumn tableName="person"
xmlns:liquibasePercona="http://www.liquibase.org/xml/ns/dbchangelog-ext/liquibase-percona"
liquibasePercona:perconaOptions="--alter-foreign-keys-method=auto">
<column name="address" type="varchar(255)"/>
</addColumn>
Since liquibase-percona 4.19.1 this is also supported in SQL changesets:
--changeset Alice:2
--liquibasePercona:perconaOptions="--alter-foreign-keys-method=auto"
ALTER TABLE person ADD email VARCHAR(255) NULL;
Liquibase Percona extension XSD
According to the Liquibase Documentation for XML Changelogs an extra XSD for the extension is not mandatory as there an "allow all" default schema (dbchangelog-ext.xsd). But having an explicit schema helps in IDE support (e.g. autocomplete, validation). Therefore, this extension provides an official XSD for the attributes it supports on the changes (usePercona
and perconaFlags
).
Example usage:
<?xml version="1.0" encoding="UTF-8"?>
<databaseChangeLog
xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:liquibasePercona="http://www.liquibase.org/xml/ns/dbchangelog-ext/liquibase-percona"
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog
http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-latest.xsd
http://www.liquibase.org/xml/ns/dbchangelog-ext/liquibase-percona https://raw.githubusercontent.com/liquibase/liquibase-percona/main/src/main/resources/dbchangelog-ext-liquibase-percona.xsd">
<changeSet id="1" author="alice">
<addColumn tableName="person" liquibasePercona:usePercona="false">
<column name="address" type="varchar(255)"/>
</addColumn>
</changeSet>
</databaseChangeLog>
If you use as the URL exactly https://raw.githubusercontent.com/liquibase/liquibase-percona/main/src/main/resources/dbchangelog-ext-liquibase-percona.xsd
, then liquibase doesn't retrieve the XSD file from the internet but uses the locally provided file inside liquibase-percona.jar
instead.
Otherwise, you need to set the system property liquibase.secureParsing
to false, so that liquibase downloads the extension schema from the internet in order to validate the XML changelog file.
The extension schema is available in the repository: dbchangelog-ext-liquibase-percona.xsd.
System Properties
The extension supports the following java system properties:
liquibase.percona.failIfNoPT
: true/false. Default: false. If set to true, the database update will fail, if the commandpt-online-schema-change
is not found. This can be used, to enforce, that percona toolkit is used.liquibase.percona.noAlterSqlDryMode
: true/false. Default: false. When running updateSQL or rollbackSQL in order to generate a migration SQL file, the command line, that would be executed, will be added as a comment. In addition, the SQL statements (as produced by liquibase-core) will also be generated and output into the migration file. This allows to simply execute the generated migration SQL to perform an update. However, the Percona toolkit won't be used. If this property is set totrue
, then no such SQL statements will be output into the migration file.liquibase.percona.skipChanges
: comma separated list of changes. Default: <empty>. This option can be used in order to selectively disable one or more changes. If a change is disabled, then the change will be executed by the default liquibase core implementation and percona toolkit won't be used. By default, this property is empty, so that all supported changes are executed using the percona toolkit. Example: Set this toaddColumn,dropColumn
in order to not use percona for adding/dropping a column.liquibase.percona.options
: String of options. Default: --alter-foreign-keys-method=auto --nocheck-unique-key-change. Since liquibase-percona 1.2.1. Default value changed with liquibase-percona 1.6.0. This option allows the user to pass additional command line options to pt-online-schema-change. This e.g. can be used in complication replication setup to change the way slaves are detected and how their state is used. You can also specify a percona configuration file via--config file.conf
, see Configuration Files. Multiple options are separated by space. If argument itself contains a space, it must be quoted with double-quotes, e.g.--config "filename with spaces.conf"
.liquibase.percona.defaultOn
: true/false. Default: true. Since liquibase-percona 1.3.0 This options allows to change the default behavior for the UsePercona flag. By default, all changes, that do not explicitly specify this flag, use the value from this system property. Setting this property tofalse
allows to control for each single change, whether to use Percona Toolkit or not.liquibase.password
: String with the password needed to connect to the database. Default: <empty>. Since liquibase-percona 1.4.0. With this property, you can shortcut the automatic detection of the password from the underlyingjava.sql.Connection
(if that fails) or from the defaultliquibase.properties
file. If this property is set, then it is used for the password when executingpt-online-schema-change
.liquibase.percona.path
: Path to the percona toolkit directory, where the toolpt-online-schema-change
is installed. Default: <empty>. Since liquibase-percona 1.4.1. With this property, you can select a specific toolkit installation. If this property is not set, then the toolkit will be searched on thePATH
. You need to specify thebin
subfolder of the Percona Toolkit distribution.liquibase.percona.ptdebug
: true/false. Default: false. Since liquibase-percona 1.5.0 This option enables the debug output of pt-osc by setting the environment variablePTDEBUG
before starting pt-osc.liquibase.percona.keepAlive
: true/false. Default: true Since liquibase-percona 4.4.0 This option allows to disable the keepalive thread if there are any problems with it. The keepalive thread pings the database while pt-online-schema-change is executing. This avoids that the server closes liquibase's connection as it is idle during pt-osc. The server variable "wait_timeout" controls when the connection is considered stale and dropped by the server. This variable is used to determine how often the server will be pinged.
You can set these properties by using the standard java -D
option:
java -Dliquibase.percona.skipChanges=createIndex,dropColumn -jar liquibase.jar ...
Note: You'll have to call liquibase via "java -jar" as otherwise the system property cannot be set. You'll also need to make sure, that the liquibase-percona.jar file is on the classpath via the "--classpath" option.
When executing liquibase through maven, you can use the Properties Maven Plugin to set the system property. An example can be found in the "createIndexSkipped" integration test.
Using / Installing the extension
Download
The jar files can be downloaded manually from maven:
https://repo.maven.apache.org/maven2/org/liquibase/ext/liquibase-percona/
Command line liquibase
After extracting the zip file of liquibase, place liquibase-percona-4.20.0.jar
file in the sub directory lib
. The shell script liquibase
/ liquibase.bat
will automatically pick this up and the extension is available.
Via maven
Add the following dependency to the liquibase plugin:
<dependency>
<groupId>org.liquibase.ext</groupId>
<artifactId>liquibase-percona</artifactId>
<version>4.20.0</version>
</dependency>
Docker
You can also create a docker image which combines liquibase, liquibase-percona and percona toolkit. See Liquibase Percona Docker images.
Using snapshots
Snapshot builds contain the latest features which are not yet available in a release.
Download: https://oss.sonatype.org/content/repositories/snapshots/org/liquibase/ext/liquibase-percona/
Enable the snapshot repository via Maven:
<project>
<pluginRepositories>
<pluginRepository>
<id>sonatype-nexus-snapshots</id>
<name>Sonatype Nexus Snapshots</name>
<url>https://oss.sonatype.org/content/repositories/snapshots</url>
<releases>
<enabled>false</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>
</project>
See also https://maven.apache.org/guides/development/guide-testing-development-plugins.html.
And just use the latest SNAPSHOT version for liquibase-percona dependency, e.g. 4.20.1-SNAPSHOT:
<dependency>
<groupId>org.liquibase.ext</groupId>
<artifactId>liquibase-percona</artifactId>
<version>4.20.1-SNAPSHOT</version>
</dependency>
Notes
The non-locking update is achieved using triggers. First a new temporary table is created, including the added or dropped columns. Then the data is copied in chunks. While the copy is in progress, any newly created or deleted or updated rows are copied, too. This is done by adding triggers to the original table. After the copy is finished, the original table is dropped and the temporary table is renamed.
This means, that pt-online-schema-change cannot be used, if the table already uses triggers.
The command pt-online-schema-change
is searched only on the PATH
. Depending on the property liquibase.percona.failIfNoPT
the update will fail or will just run without using pt-online-schema-change and potentially lock the table for the duration of the update.
Building this extension
Simply run ./mvn clean verify
. You'll find the jar-file in the target/
subdirectory.
Integration testing
In order to execute the integration tests, run mvn clean verify -Prun-its.
Please note, that you'll need:
docker. During the pre-integration-test phase the official mysql image will be started. Under debian, execute
sudo apt-get install docker.io
.Internet access to download the docker image the first time. And to download percona toolkit. The build system will add the downloaded toolkit automatically to the
PATH
.The percona toolkit requires perl with mysql dbi libraries. Under debian, execute
sudo apt-get install libdbd-mysql-perl
.
See the properties config_... in pom.xml
for connection details for the mysql docker instance.
To run a single integration test, execute maven like this: ./mvn verify -Prun-its -Dinvoker.test=addColumn*,dropColumn
Common Problems
NoSuchMethodError: PerconaDropColumnChange.getColumns()Ljava/util/List
The full error message:
Unexpected error running Liquibase: liquibase.exception.UnexpectedLiquibaseException:
java.lang.NoSuchMethodError: liquibase.ext.percona.PerconaDropColumnChange.getColumns()Ljava/util/List;
This means, you are trying to use version 1.1.1 of the extension with liquibase 3.2.x. This is an unsupported combination. For Liquibase 3.2.x, you'll need to use liquibase-percona 1.0.0
References
Old Versions and Release Notes
March 10, 2023 | 4.20.0 | 4.20.0 (2023-03-10)
Dependency updates:
|
March 3, 2023 | 4.19.1 | 4.19.1 (2023-03-03)
New Features This release of Liquibase Percona extension ships two new features. Support for Custom SQL changes You can now use Custom SQL changes. The Liquibase Percona extension will automatically detect if it is a There are some limitations: Only a single statement is supported. When multiple statements (e.g. separated by Support for Custom SQL changes is enabled by default. Example usage in XML: <databaseChangeLog>
<changeSet id="2" author="Alice">
<sql>ALTER TABLE person ADD COLUMN address VARCHAR(255) NULL</sql>
</changeSet>
<changeSet id="3" author="Alice">
<sql xmlns:liquibasePercona="http://www.liquibase.org/xml/ns/dbchangelog-ext/liquibase-percona"
liquibasePercona:usePercona="false">
ALTER TABLE person ADD COLUMN address VARCHAR(255) NULL
</sql>
</changeSet>
</databaseChangeLog> Example usage in YAML: databaseChangeLog:
- changeSet:
id: 2
author: Alice
changes:
- sql:
splitStatements: true
sql: |
ALTER TABLE person ADD COLUMN address VARCHAR(255) NULL;
- changeSet:
id: 3
author: Alice
changes:
- sql:
usePercona: false
splitStatements: true
sql: |
ALTER TABLE person ADD COLUMN address VARCHAR(255) NULL; Support for Formatted SQL Changelogs You can now use Formatted SQL Changelogs. It also supports the The implementation reuses the support for Custom SQL changes. This means, that the same limitations apply to SQL Changelogs: Multiple statements are not supported. Only Support for SQL Changelogs is enabled by default. If you apply a SQL changelog with Liquibase Percona extension, then it will try to execute all changeset with Percona Toolkit if possible. If this is not what you want, you need to make use of the UsePercona flag. You can also globally disable Percona Toolkit usage with the system property Example usage: --changeset Alice:2
ALTER TABLE person ADD address VARCHAR(255) NULL;
--changeset Alice:3
--liquibasePercona:usePercona="false"
ALTER TABLE person ADD address VARCHAR(255) NULL;
Implemented enhancements:
Fixed bugs:
Dependency updates:
Closed issues:
Merged pull requests:
|
January 20, 2023 | 4.19.0 | 4.19.0 (2023-01-20)
Dependency updates:
Closed issues:
|
December 9, 2022 | 4.18.0 | 4.18.0 (2022-12-09)
Fixed bugs: Dependency updates:
Merged pull requests: |
October 27, 2022 | 4.17.1 | 4.17.1 (2022-10-27)
Dependency updates:
Merged pull requests:
|
October 11, 2022 | 4.17.0 | 4.17.0 (2022-10-11)
Dependency updates:
|
September 13, 2022 | 4.16.0 | 4.16.0 (2022-09-13)
Dependency updates:
Merged pull requests:
|
August 23, 2022 | 4.15.0 |
Dependency updates:
|
July 26, 2022 | 4.14.0 |
Dependency updates:
|
July 16, 2022 | 4.13.0 |
Dependency updates:
|
June 23, 2022 | 4.12.0 |
Implemented enhancements: Dependency updates:
|
May 27, 2022 | 4.11.0 |
Dependency updates: |
May 6, 2022 | 4.10.0 |
Implemented enhancements:
Dependency updates:
|
March 31, 2022 | 4.9.1 |
|
March 18, 2022 | 4.9.0 |
|
February 24, 2022 | 4.8.0 |
|
January 27, 2022 | 4.7.1 |
|
January 13, 2022 | 4.7.0 |
|
December 02, 2021 | 4.6.2 |
|
November 19, 2021 | 4.6.1.1 |
|
November 06, 2021 | 4.6.1 |
|
October 04, 2021 | 4.5.0 |
|
August 12, 2021 | 4.4.3 |
|
July 23, 2021 | 4.4.2 |
|
July 18, 2021 | 4.4.1 |
|
June 20, 2021 | 4.4.0 |
|
May 24, 2021 | 4.3.5 |
|
April 28, 2021 | 4.3.4 |
|
April 23, 2021 | 4.3.3 |
|
March 26, 2021 | 4.3.2 | |
February 23, 2021 | 4.3.1 |
|
February 04, 2021 | 2.0.0 |
|
January 28, 2021 | 1.7.1 |
|
July 04, 2020 | 1.7.0 | |
April 20, 2019 | 1.6.0 | The minimum Java runtime version is now Java 1.7. The system property |
April 14, 2019 | 1.5.2 |
|
November 10, 2018 | 1.5.1 |
|
September 30, 2018 | 1.5.0 |
The plugin is only compatible with version 3.0.12 or later of Percona Toolkit. |
September 27, 2018 | 1.4.1 |
|
July 21, 2017 | 1.4.0 |
|
July 21, 2017 | 1.3.1 |
|
December 18, 2016 | 1.3.0 |
|
September 13, 2016 | 1.2.1 | |
April 2, 2016 | 1.2.0 | |
July 26, 2015 | 1.1.1 |
|
November 6, 2014 | 1.1.0 |
|
October 19, 2014 | 1.0.0 |
|