GitHubがMySQL 5.7からMySQL 8.0へ移行した過程
(github.blog)-
GitHubは1,200台以上のMySQLホストをMySQL 8.0へアップグレードする作業を進めました。この取り組みは、MySQL 5.7のサポート終了が近づいていたことに加え、最新のセキュリティパッチや新機能を活用するために行われ、全体で1年以上を要しました。多様で複雑なMySQLインフラをアップグレードする中で直面した技術的課題や得られた学びは、自動化とフリート管理の重要性を強調しています。
-
GitHubは15年前、Ruby on Railsアプリケーションと単一のMySQLデータベースから始まりました。その後、プラットフォームのスケーリングと耐久性の要件を満たすために、MySQLアーキテクチャを改善し続けてきました。そして今回、1,200台以上のMySQLホストをMySQL 8.0へアップグレードする作業を実施しました。
-
アップグレードの動機は、MySQL 5.7のサポート終了が近づく中で、最新のセキュリティパッチ、バグ修正、性能向上を得るためにMySQL 8.0へ移行したいというものでした。また8.0には、Instant DDLs、invisible indexes、compressed bin logsなどの新機能も含まれています。
-
GitHubのMySQLインフラは、1,200台以上のホストから成る多様で複雑なデプロイ構成で成り立っています。これを維持しながらアップグレードを実施するために、GitHubには綿密な計画、テストの自動化、そして複数チーム間での協業が必要でした。
-
アップグレード準備の段階では、インフラの更新、アプリケーション互換性の確認、コミュニケーションと透明性の維持、そして段階的に進めるアップグレード戦略の策定といった作業を行いました。アップグレードはいくつかの段階に分けて進められ、重要な点は、ロールバックの可能性を維持しながら進行させることでした。
-
アップグレード中には、MySQL 8.0からMySQL 5.7へのロールバックが難しいという問題もありましたが、GitHubはロールバック機能を維持しつつ安全にアップグレードを実施しました。Vitessのようなさまざまな技術的課題にも直面しましたが、それらを乗り越え、アップグレード全体には1年以上がかかりました。
-
このプロジェクトを通じて得られた経験と教訓は、GitHubにとってMySQLアップグレードが重要な定常メンテナンスの一つであることを強調するとともに、自動化と安定したフリート管理ツールの開発が、今後のアップグレードをより効率的に進める助けになるという結論につながりました.
3件のコメント
MSは買収した会社に対して、自社の技術スタックへの移行をあえて強要しないようですね……まだRoR / mysqlなんですね
GitHubのDBマイグレーション……想像するだけでも恐ろしいですね
下手に手を出したらどうにもならなくなると分かっていたから、じっとしていたんじゃないですか?(笑)