gh-ost version 1.0.17 is now released, with various additions and fixes. Here are some notes of interest:
Hooks
gh-ost
now supports hooks. These are your own executables that gh-ost
will invoke at particular points of interest (validation pass, about to cut-over, success, failure, status, etc.)
gh-ost
will set various environment variables for your executables to pick up, passing along such information as migrated/ghost table name, elapsed time, processed rows, migrated host etc.
Sub-second lag control
At GitHub we’re very strict about replication lag. We keep it well under 1
second at most times. gh-ost
can now identify sub-second lag on replicas (well, you need to supply with the right query). Our current production migrations are set by default with --max-lag-millis=500
or less, and our most intensive migrations keep replication lag well below 1sec
or even below 500ms
No SUPER
The SUPER
privilege is required to set global binlog_format='ROW'
and for STOP SLAVE; START SLAVE;
If you know your replica has RBR, you can pass --assume-rbr
and skips those steps.
RDS
Hooks + No Super = RDS, as seems to be the case. For --test-on-replica
you will need to supply your own gh-ost-on-stop-replication
hook, to stop your RDS replica at cut-over phase. See this tracking issue
master-master
While active-active are still not supported, you now have greater control over master-master topologies by being able to explicitly pick your master (as gh-ost
arbitrarily picks one of the co-masters). Do so by passing --assume-master-host
. See cheatsheet.
tungsten replicator
Similarly, gh-ost
cannot crawl your tungsten
topology, and you are able to specify --tungsten --assume-master-host=the.master.com
. See cheatsheet.
Concurrent-rowcount
--exact-rowcount
is awesomeness, keeping quite accurate estimate of progress. With --concurrent-rowcount
we begin migration with a rough estimate, and execute select count(*) from your_table
in parallel, updating our estimate later on throughout the migration
Stricter, safer
gh-ost
works in STRICT_ALL_TABLES
mode, meaning it would fail rather than set the wrong value to a column.
In addition to unit-testing and production continuous test, a set of local tests is growing, hopefully to run as CI tests later on.
Fixed problems
Fixed time_zone
related bug, high unsigned
values bug; added strict check for triggers, relaxed config file parsing, and more. Thank you to community contributors for PRs, from ipv6
to typos!
Known issues
Issues coming and going at all times — thank you for reporting Issues!
We have a confirmed bug with non-UTF charsets at this time. Some other minor issues and feature requests are open — we’ll take them as we go along.
Feedback requests
We are not testing gh-ost
on RDS ourselves. We appreciate community feedback on this tracking issue.
We are not testing gh-ost
on Galera/XtraDB cluster ourselves. We appreciate community feedback on this tracking issue.
We value submitted Issues and questions.
Speaking
We will be presenting gh-ost
in the next month:
- I will be presenting gh-ost at GitHub Universe, Sep. 14th
- Tom Krouper will be presenting gh-ost at DataLayer, Seattle, Sep 28th
- Tom Krouper and myself will be presenting gh-ost at PerconaLive, Amsterdam, Oct 5th
Hope to see you there, and thank you again to all contributors!