Etsy Paymentsは、Vitessが管理するシャーディングされた環境に23つのテーブルで400億行を移動し、vindexesを使用してデータのシャーディングを行いました。この記事は、カットオーバー中のエラーに関する問題に焦点を当てています。
Vitessのトランザクション・モードを理解することが非常に重要です。シングル・モードは原子性を維持しますが、マルチ・モードは部分的なコミットが生じる可能性があります。2つのフェーズ・コミット・モードは実験的なもので、推奨されません。
リバース・VReplicationは、カットオーバー後のシャーディングされたキー・スペースとシャーディングされていないキー・スペースの間のデータ同期を確保します。ただし、ユニーク・キー・エンフォースメントによって破損することがあり、行の削除や手動でのPosカラムの更新が必要です。
WHERE句にシャーディング・キーが含まれていない散乱クエリーは、クエリーのボリュームが過剰になり、潜在的なアウトエージュを引き起こす可能性があります。Vitessは現在、--no_scatterフラグを提供し、散乱クエリーを防ぐことができます。
互換性のないクエリーは、カットオーバー後失敗する可能性があります。開発環境での包括的なテストが、問題を特定し解決するために不可欠です。
その他の潜在的なエラーとして、サポートされていないSQL構文に関するものがあります。これらは、新しいVitessバージョンにアップグレードすることで解決できます。
これらのリスクにもかかわらず、カットオーバーは一般的に逆戻り可能です。ただし、どのような障害が生じるかを注意深く検討する必要があります。
etsy.com
Scaling Etsy Payments with Vitess: Part 3 – Reducing Cutover Risk
