BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース GitHub、MySQLインフラをv5.7から8.0にアップグレード

GitHub、MySQLインフラをv5.7から8.0にアップグレード

原文リンク(2024-02-04)

GitHubはこのほど、MySQLのインフラをバージョン5.7から8.0にアップグレードした。このアップグレードの背景としては、5.7が寿命を迎え、MySQL 8.0が提供する最新のセキュリティパッチ、バグフィックス、パフォーマンス強化を活用する必要性があったことが挙げられる。

GitHubのMySQLインフラは、Azure仮想マシンとベアメタルホストを組み合わせた1200以上のホストで構成され、300TB以上のデータを管理し、50以上のデータベースクラスタで毎秒550万クエリを処理している。プライマリ+レプリカのクラスタ構成で高い可用性を確保した。GitHubのデータパーティショニングアプローチでは、水平方向と垂直方向のシャーディングが行われ、特定のプロダクトドメイン領域と、シングルプライマリクラスタを超える大規模なドメイン領域に対応している。

このメジャーアップグレードの準備は2022年7月に始まった。MySQLインフラストラクチャの重要性を認識していたデータベースチームは、サービスレベル目標(SLO)と契約(SLA)に対して一定の要件を持っていた。作業負荷が多様で規模が大きいため、アップグレードの段階では、インフラストラクチャの準備、アプリケーションの互換性の確保、チーム内の透明性のあるコミュニケーションの維持が必要となった。

アップグレードは、ローリングレプリカアップグレードから始まり、次の段階に移る前に各段階を注意深く監視した。その後、チームはレプリケーショントポロジーを更新し、現在の5.7プライマリの下に8.0プライマリ候補をセットアップした。MySQL 8.0ホストのプライマリへの昇格は、プライマリホスト上で直接アップグレードすることなく実行された。その後、補助サーバをアップグレードして一貫性を確保し、徹底的なクリーンアップを行った。

ソースGitHub.com の MySQL 8.0 へのアップグレード

GitHubのアップグレード戦略で重要な点は、必要に応じてMySQL 5.7にロールバックできることであった。これを管理するため、GitHubは文字セットの違いやロール管理機能などの互換性の問題に取り組み、バージョン間のシームレスな移行を実現した。アップグレードの過程で、チームはVitessのアップグレードに関する課題に直面した。レプリケーションの遅延やバグに遭遇し、特定のMySQLバージョンの導入や慎重なワークロード管理が必要となった。また、クエリが継続的インテグレーション(CI)環境ではパスするが、本番環境では失敗するという現実的な問題にも直面した。

アップグレードプロセスは1年以上続き、複数のチームが関与し、効果的な観測可能プラットフォーム、堅牢なテスト計画、信頼性の高いロールバック機能の重要性が浮き彫りになった。チームは、ロールバックを成功させるために不可欠な、クライアント側のコンフィギュレーションの一貫性が持つ価値を学んだ。この経験は、よく理解され標準化された接続設定を持つことの利点を強調した。

Lobster で、MySQL のスケーラビリティと、大規模な組織が MySQL をどのようにスケールさせるかについて、ユーザが議論している興味深いディスカッションを目にした。

今回のアップグレードで得た重要な収穫の1つは、データパーティショニングにおけるこれまでの取り組みが極めて重要な役割を果たしたことである。この戦略により、より的を絞ったアップグレードが可能になり、プロセス中の未知の変数に関連するリスクを最小限に抑えることができた。MySQL のフリートが 5 クラスタから現在の 50 クラスタに拡張されたことで、より大規模なフリート管理のための観測可能性の強化、高度なツール、効率的なプロセスの必要性も浮き彫りになった。

作者について

この記事に星をつける

おすすめ度
スタイル

BT