Skip to content

Comment GH-OST a sauvé nos mises en production

Notifications You must be signed in to change notification settings

VanRoy/talk-gh-ost

Repository files navigation

Comment GH-OST a sauvé nos mises en production

Réaliser une mise en production avec des changements de schéma sur MySQL ne semble pas poser de défis particuliers. Sauf quand votre base de données fait 3To, que certaines tables contiennent des milliards de lignes et que votre application réalise plusieurs centaines de requêtes par secondes. Durant cette présentation je présenterai comment GH-OST, un outil open-source de migration de schéma créé par GitHub à sauvé nos mises en production. Je partagerai aussi les bonnes pratiques, les pièges à éviter ainsi que les alternatives.

Demonstration

Start MySQL

docker compose up

Prepare schema

mysql src/main/sq/01_schema.sql
mysql src/main/sq/02_procedure.sql
mysql src/main/sq/03_prepare.sql
Migration
./gh-ost \
  --host localhost \
  --database testdb \
  --user root \
  --password root \
  --allow-on-master \
  --table 'transactions' \
  --alter 'ADD COLUMN is_deleted TINYINT' \
  --postpone-cut-over-flag-file=/tmp/ghost.cut
Follow
echo status | nc -U  /tmp/gh-ost.testdb.transactions.sock
echo throttle | nc -U  /tmp/gh-ost.testdb.transactions.sock
echo unthrottle | nc -U  /tmp/gh-ost.testdb.transactions.sock
Add new transaction
INSERT INTO testdb.transactions (user_uuid, amount, date, description, debit, timestamp_last_update)
    VALUES ('5252d724-1018-11ec-ae5a-0242ac1a0002', 111, '2021-09-29', 'For Devoxx', 1, 0)
Cut-over
rm -f /tmp/ghost.cut

About

Comment GH-OST a sauvé nos mises en production

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published