GA release v1.1.8 includes new features such as GTID support, MySQL 8.4 support, and migration checkpoints, as well as several critical bug fixes. Please submit any questions or bug reports in an issue.
Big thanks to all the contributors!
Changes
- Add MySQL 8.4 Support by @chen-anders in #1494
- GTID support for binlog streaming by @timvaillancourt and @meiji163 in #1584
- Use the
--gtidflag to use GTID sets for binlog streaming instead of file-based coordinates (the default). This option requiresgtid_mode=ONandenforce_gtid_consistency=ON.
- Use the
- Resume migration from checkpoint by @meiji163 in #1595
- Use
--checkpointflag to write periodic checkpoints that can be used to resume an interrupted migration. As long as the relevant binlogs are still available, a migration can be resumed from the last checkpoint by invoking gh-ost again with--resume. It is recommended to use in combination with--gtid, which allows resuming from a different replica. - Please read resume.md before using. Also see #1595 (comment) for more details.
- Use
- PanicOnWarnings option to detect SQL warnings and fail the copy process by @grodowski and @ggilder in #1500 and #1633
--panic-on-warningswill panic thegh-ostprocess if there are any unexpected warnings while copying rows or applying row changes.- This prevents data loss for migrations that would violate a unique key constraint.
- Add
--skip-metadata-lock-checkby @meiji163 in #1616- Use
--skip-metadata-lock-checkif you are running with performance_schema disabled. However, enabling performance_schema is recommended due to #1536.
- Use
- (Experimental) Revertible migrations by @meiji163 in #1607
- Some migrations can be reverted after they complete by invoking
gh-ostwith the--revertflag and the--old-tableflag, which specifies name of the "old" table from the original migration e.g._<table-name>_del. The original migration must be invoked with--checkpointand the relevant binlogs have to still exist on the inspected replica. ⚠️ Migrations are only revertible under certain conditions. Please read revert.md before using. Also see #1607 (comment) for more details.
- Some migrations can be reverted after they complete by invoking
- Add
postpone-cut-over-flag-fileinteractive command by @yktakaha4 in #1561- The cutover flag file can be set via interactive command
postpone-cut-over-flag-file=<path-to-cutover-flag>.
- The cutover flag file can be set via interactive command
- Add a
gh-ost-on-batch-copy-retryhook which is invoked when a batch copy fails by @grodwoski in #1507 - Add trigger support by @yakirgb in #1503 and #1626
- Use
--include-triggersto makegh-ostcreate the same triggers on the ghost table at cutover time.
- Use
- Fix: Avoid logging MySQL connection configs by @meiji163 in #1501
- Fix: Add support for unique text column, they are mapped to uint8[] by @markmarkmarkthebest in #1583
- Fix: Ensure metadata lock is held by rename session by @abaowhy in #1536
- Fix: Panic if InitiateHeartbeat exhausts retries to avoid looping infinitely by @grodowski in #1594
- Fix: Conversion bug when string data comes from binlog by @mattbooks in #1571
- Fix: Converting binary to varbinary strips trailing 0's @jorendorff in #1628
- Fix: Prevent exponential backoff from overflowing. by @burnison in #1491
- Fix: TLS verify error when gh-ost discovers the replication master by @petervandoros in #1487
- Fix: Output for
binarykeys in-verbosemode. by @burnison in #1559 - Fix: Lexographical comparison of binlog filenames by @grodowski in #1604
- Fix: Logic to include originalUniqueKey in sharedUniqueKeys by @htmsousa in #1453
- Fix: Align max
--dml-batch-sizewith the implementation by @yktakaha4 in #1575 - Testing: sysbench localtest by @meiji163 in #1590
- Testing: toxiproxy localtest by @meiji163 in #1591
- Testing: copier test, upgrade testcontainers by @meiji163 in #1567
- Testing: Use docker for CI replica tests, deprecate dbdeployer by @meiji163 in #1529
- Move successful cleanup into func by @pasha132 in #1520
- Upgrade go to 1.23.0,
netmodule to 0.36.0 by @dependabot[bot] in #1511 - Add support for go 1.25 by @ggilder in #1634
- Update status format in docs by @coding-chimp in #1512
- Remove restriction on password length and bump go-mysql to 1.11.0 by @joshvarner in #1525
New Contributors
- @htmsousa made their first contribution in #1453
- @chen-anders made their first contribution in #1494
- @burnison made their first contribution in #1491
- @petervandoros made their first contribution in #1487
- @coding-chimp made their first contribution in #1512
- @grodowski made their first contribution in #1500
- @joshvarner made their first contribution in #1525
- @pasha132 made their first contribution in #1520
- @abaowhy made their first contribution in #1536
- @yktakaha4 made their first contribution in #1561
- @mattbooks made their first contribution in #1571
- @markmarkmarkthebest made their first contribution in #1583
- @bkungl made their first contribution in #1570
- @cinderellasecure made their first contribution in #1597
- @jorendorff made their first contribution in #1628
- @ggilder made their first contribution in #1633
Full Changelog: v1.1.7...v1.1.8
Edit 2026-03-10: Update binaries to include x86 RPM package