12 ポイント 投稿者 xguru 2021-09-29 | まだコメントはありません。 | WhatsAppで共有
  • 10年以上前にRoRと単一のMySQLインスタンスで始まったGitHub

  • 2019年にパーティショニングを開始し、2年間にわたってさまざまな作業を実施した振り返り

→ 2021年時点でDBの負荷が50%減少したとのこと

  1. 仮想パーティション
  • 実際にテーブルを移動する前に、アプリケーションレイヤーで仮想的に分離

  • テーブルをグループ化してスキーマドメインとして束ね、SQL Linterを使って境界を強制

→ 後でパーティショニングする際の安全性を高めるため

  • Query Linter と Transaction Linter で仮想境界を確認
  1. ダウンタイムなしでデータを移行
  • Vitess の Vertical Sharding 機能を利用

→ VTGateをKubernetesクラスタにデプロイし、接続ポイントを変更

  • Write-cutoverプロセスを導入

→ MySQLのReplication機能を使ってデータを別クラスタへフィード

→ ProxySQL を使ってMySQLクライアント接続をMultiplex

結果

  • 2019年には単一クラスタだったmysql1は、平均で毎秒95万クエリに応答

  • 2021年にはマルチクラスタへ分散され、平均で毎秒120万クエリに応答しつつホスト負荷は半減

まだコメントはありません。

まだコメントはありません。