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
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.
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
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.
gh-ost cannot crawl your
tungsten topology, and you are able to specify
--tungsten --assume-master-host=the.master.com. See cheatsheet.
--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
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.
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!
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.
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.
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!