Skip to content

# gh-ost 1.0.17: Hooks, Sub-second lag control, Amazon RDS and more

MySQL gh-ost New Features Open Source September 6, 2016September 6, 2016

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!

- Twitter
- LinkedIn
- WhatsApp
- Email
- Facebook
- Print

### Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Subscribe
Notify of
wpDiscuz
Send to Email Address Your Name Your Email Address Cancel
Post was not sent - check your email addresses!
Email check failed, please try again
Sorry, your blog cannot share posts by email.