Amazon Aurora MySQL 互換エディション DB インスタンスを使用していますが、リードレプリカを使用すると問題が発生します。これらの問題を解決したいと考えています。
解決策
Aurora リードレプリカを昇格させる
別のリードレプリカインスタンスをライターインスタンスとして昇格させるには、手動でフェイルオーバーを実行します。
次の手順を実行します。
- Amazon Relational Database Service (Amazon RDS) コンソールを開きます。
- ナビゲーションペインで [データベース] を選択します。
- Aurora DB クラスターのライターインスタンスを選択します。
- [アクション]、[フェイルオーバー] の順に選択します。
ライターインスタンスが使用できなくなると、Aurora は自動的にリードレプリカインスタンスにフェイルオーバーします。ライターインスタンスが使用できなくなる原因には、リソースの競合やメンテナンス作業など、さまざまな原因が考えられます。
リーダーが複数いる場合は、クラスター内の各インスタンスにプロモーション優先階層を指定します。ライターインスタンスに障害が発生すると、Aurora は優先順位が最も高いレプリカを新しいライターとして昇格させます。
AWS リージョン間の Aurora レプリカをスタンドアロン DB クラスターとして昇格させることもできます。昇格プロセスを開始すると、リージョン間レプリケーションは停止します。新しく昇格されたクラスターは独立した DB クラスターとして機能し、読み取り操作と書き込み操作の両方を管理します。
レプリケーションラグの測定
DB クラスター内のすべての Aurora DB インスタンスは共通のデータボリュームを共有しているため、レプリケーションの遅延は最小限に抑えられます。ただし、シナリオによっては、リーダーの遅延が少し長くなることがあります。
**注:**リージョン間レプリカは論理レプリケーションを使用します。選択したリージョン間の変更および適用レートとネットワーク通信の遅延は、リージョン間のレプリカに影響を与える可能性があります。Aurora データベースを使用するリージョン間レプリカの遅延は通常 1 秒未満です。
レプリケーションラグを測定するには、次の Amazon CloudWatch メトリックスを使用します。
- AuroraReplicaLag は、同じリージョンのライターノードとリーダーノード間のレプリケーション遅延をミリ秒単位で測定します。
- AuroraBinLogReplicaLag は、バイナリログを使用する Aurora DB クラスター間のレプリケーション遅延を測定します。
レプリケーションのパフォーマンスを向上
レプリケーションの遅延を改善するには、次のアクションを実行してください。
- リーダーインスタンスがライターインスタンスよりも小さい場合、変更の量が多すぎてリーダーが追いつけない可能性があります。リーダーインスタンスに大きな負荷がかからないようにするには、クラスター内のすべてのインスタンスを同じサイズにするのがベストプラクティスです。
**注:**ライターインスタンスに大きな負荷がかかっていると、リードレプリカの一時的なラグが発生することがあります。リーダーインスタンスがライターインスタンスに追いつくと、ラグは減少します。
- 実行時間の長いトランザクションが進行中の場合、リーダーでレプリケーション遅延が発生する可能性があります。レプリケーション遅延を回避するには、トランザクションを小さいバッチで実行し、頻繁にコミットを実行してください。
ネイティブバイナリログベースの MySQL レプリケーションを使用してレプリケーション遅延をトラブルシューティングする方法については、「Aurora DB クラスターのバックアップと復元の概要」を参照してください。
レプリケーション遅延が大きい場合のトラブルシューティング
高いレプリケーション遅延は、AuroraReplicaLag CloudWatch メトリクスで確認できます。レプリケーションの遅延が大きいと、リーダーインスタンスが再起動する可能性があります。レプリケーションの遅延が大きいためにリーダーインスタンスが頻繁に再起動されないようにするには、「Amazon Aurora リードレプリカが遅れて再起動したのはなぜですか?」を参照してください。
GTID ベースのレプリケーションを設定する
Aurora では、ネイティブバイナリログレプリケーションを使用してリードレプリカインスタンスにデータを複製しません。グローバルトランザクション識別子 (GTID) を使用して同じクラスター内のインスタンス間でデータを複製することはできません。ただし、特定のシナリオでは GTID ベースのレプリケーションを設定できます。Aurora MySQL 互換で GTID ベースのレプリケーションを使用する方法の詳細については、「Amazon Aurora MySQL 互換エディションでグローバルトランザクション ID (GTID) によるレプリケーションがサポートされるようになりました」を参照してください。
**注:**Amazon RDS MySQL と Aurora クラスターの間、および Aurora クラスター間の GTID ベースのレプリケーションを設定できます。ソースは外部マスターである必要があります。レプリケーションプロセスを開始する前に、必ずソースでバイナリログを有効にしてください。
GTID の詳細については、MySQL Web サイトの「GTID 形式とストレージ」を参照してください。
関連情報
AWS リージョン間の Amazon Aurora MySQL DB クラスターのレプリケーション
Amazon Aurora によるレプリケーション