PlanetScaleでリードレプリカに接続できるようになった話
概要
PlanetScaleでは、リードレプリカを使用することで、データベースのパフォーマンス向上と可用性の向上を実現できます。リードレプリカは、データベースのクエリを分散し、プライマリノードへの負荷を軽減するための強力なツールです。
リードレプリカの理解
リードレプリカはデータベースの継続的に更新されるコピーです。以下の2つの主要な目的があります:
- データをクエリするための追加のソースを提供する。
- メンテナンスや予期しない障害の際に、迅速なフェイルオーバーを可能にすることでデータベースの可用性を高める。
負荷を軽減するためにレプリカを利用する前に、トレードオフを理解することが重要です。
リードレプリカへのクエリ方法
グローバルレプリカクレデンシャルの作成
グローバルレプリカクレデンシャルを使用すると、クエリを自動的にブランチのレプリカやリードオンリーリージョンにルーティングできます。
手順:
- PlanetScaleダッシュボードで新しいクレデンシャルを作成し、接続タイプとして「レプリカ」を選択します。
- 新しいクレデンシャルの接続文字列を使用して、レプリカ専用のデータベース接続を設定します。
高可用性
PlanetScaleのレプリカはデータベースの高可用性を実現するために使用されます。プライマリノードが障害を起こした場合、自動的に利用可能なレプリカから新しいプライマリノードが選出され、トラフィックが新しいプライマリにリルートされます。
複数のアベイラビリティゾーン
クラウドアーキテクチャでは、リージョンはさらにアベイラビリティゾーン(AZ)と呼ばれるデータセンターに分けられます。たとえば、AWSのus-east-1リージョンには6つのデフォルトAZがあります。PlanetScaleのスケーラープロおよびエンタープライズデータベースのインフラは、3つのAZに分散されています。AZ障害が発生した場合、データベースは利用可能なAZに自動フェイルオーバーします。
データの一貫性とレプリケーションラグ
プライマリノードでデータが更新されると、その変更はすぐにレプリカに同期されますが、少しの遅延があります。この遅延をレプリケーションラグと呼びます。レプリカからデータをクエリする際には、レプリケーションラグを考慮することが重要です。
いつレプリカを使用するべきか
レプリカは、読み込みが多いワークロードをプライマリノードからオフロードするのに役立ちます。例えば、スケジュールされたジョブ、分析ジョブ、検索機能、集計クエリなどでレプリカを使用できます。
PlanetScaleでのレプリカの使用
PlanetScaleでは、すべてのプロダクションデータベースブランチにレプリカが使用されています。データベースのプランによってレプリカの数は異なります。
- Scaler Pro: 各プロダクションブランチに2つのレプリカが含まれ、複数のAZに分散されています。
- Enter Prise: カスタマイズ可能で、必要に応じて任意の数のレプリカを持つことができます。
開発ブランチにはレプリカがありません。開発ブランチは開発目的のみで使用され、プロダクションブランチと同じレジリエンスを持ちません。
まとめ
PlanetScaleのリードレプリカを使用することで、データベースのパフォーマンスと可用性を大幅に向上させることができます。特に読み込みが多いワークロードに対して有効であり、データの一貫性とレプリケーションラグに注意を払いながら使用することが重要です。ぜひPlanetScaleのリードレプリカを試してみてください。