

# Amazon Aurora MySQL を使用する際のベストプラクティス
<a name="AuroraMySQL.BestPractices"></a><a name="best_practices"></a>

このトピックには、Amazon Aurora MySQL DB クラスターの使用およびデータ移行のベストプラクティスとオプションに関する情報が含まれます。このトピックの情報は、[Amazon Aurora DB クラスターの管理](CHAP_Aurora.md) にあるガイドラインや手順を一部要約し、改めて説明したものです。

**Contents**
+ [接続先の DB インスタンスの確認](#AuroraMySQL.BestPractices.DeterminePrimaryInstanceConnection)
+ [Aurora MySQL のパフォーマンスとスケーリングのためのベストプラクティス](AuroraMySQL.BestPractices.Performance.md)
  + [開発やテストのための T インスタンスクラスの使用](AuroraMySQL.BestPractices.Performance.md#AuroraMySQL.BestPractices.T2Medium)
  + [Asynchronous Key Prefetch を使用した Aurora MySQL インデックス付き結合クエリの最適化](AuroraMySQL.BestPractices.Performance.md#Aurora.BestPractices.AKP)
    + [Asynchronous Key Prefetch の有効化](AuroraMySQL.BestPractices.Performance.md#Aurora.BestPractices.AKP.Enabling)
    + [Asynchronous Key Prefetch のクエリの最適化](AuroraMySQL.BestPractices.Performance.md#Aurora.BestPractices.AKP.Optimizing)
  + [ハッシュ結合を使用した大規模な Aurora MySQL 結合クエリの最適化](AuroraMySQL.BestPractices.Performance.md#Aurora.BestPractices.HashJoin)
    + [ハッシュ結合を有効にする](AuroraMySQL.BestPractices.Performance.md#Aurora.BestPractices.HashJoin.Enabling)
    + [ハッシュ結合のクエリの最適化](AuroraMySQL.BestPractices.Performance.md#Aurora.BestPractices.HashJoin.Optimizing)
  + [Amazon Aurora を使用した MySQL データベースの読み取りスケーリング](AuroraMySQL.BestPractices.Performance.md#AuroraMySQL.BestPractices.ReadScaling)
  + [タイムスタンプ操作の最適化](AuroraMySQL.BestPractices.Performance.md#AuroraMySQL.BestPractices.Performance.TimeZone)
  + [仮想インデックス ID オーバーフローエラー](AuroraMySQL.BestPractices.Performance.md#AuroraMySQL.BestPractices.Performance.VirtualIndexIDOverflow)
+ [Aurora MySQL の高可用性のベストプラクティス](AuroraMySQL.BestPractices.HA.md)
  + [Amazon Aurora を使用した MySQL データベースのディザスタリカバリ](AuroraMySQL.BestPractices.HA.md#AuroraMySQL.BestPractices.DisasterRecovery)
  + [ダウンタイムを短縮して MySQL から Amazon Aurora MySQL に移行する](AuroraMySQL.BestPractices.HA.md#AuroraMySQL.BestPractices.Migrating)
  + [Aurora MySQL DB インスタンスの低パフォーマンス、自動再起動、フェイルオーバーの回避](AuroraMySQL.BestPractices.HA.md#AuroraMySQL.BestPractices.Avoiding)
+ [Aurora MySQL の MySQL 機能の推奨事項](AuroraMySQL.BestPractices.FeatureRecommendations.md)
  + [Aurora MySQL でのマルチスレッドレプリケーションの使用](AuroraMySQL.BestPractices.FeatureRecommendations.md#AuroraMySQL.BestPractices.MTReplica)
  + [ネイティブ MySQL 関数を使用した AWS Lambda 関数の呼び出し](AuroraMySQL.BestPractices.FeatureRecommendations.md#AuroraMySQL.BestPractices.Lambda)
  + [Amazon Aurora MySQL での XA トランザクションの回避](AuroraMySQL.BestPractices.FeatureRecommendations.md#AuroraMySQL.BestPractices.XA)
  + [DML ステートメント中に外部キーを有効にしておく](AuroraMySQL.BestPractices.FeatureRecommendations.md#Aurora.BestPractices.ForeignKeys)
  + [ログバッファをフラッシュする頻度の設定](AuroraMySQL.BestPractices.FeatureRecommendations.md#AuroraMySQL.BestPractices.Flush)
  + [Aurora MySQL デッドロックの最小化とトラブルシューティング](AuroraMySQL.BestPractices.FeatureRecommendations.md#AuroraMySQL.BestPractices.deadlocks)
    + [InnoDB デッドロックの最小化](AuroraMySQL.BestPractices.FeatureRecommendations.md#AuroraMySQL.BestPractices.deadlocks-minimize)
    + [InnoDB デッドロックのモニタリング](AuroraMySQL.BestPractices.FeatureRecommendations.md#AuroraMySQL.BestPractices.deadlocks-monitor)
+ [Amazon CloudWatch メトリクスで Aurora MySQL インスタンスの使用量を評価する](AuroraMySQL.BestPractices.CW.md)

## 接続先の DB インスタンスの確認
<a name="AuroraMySQL.BestPractices.DeterminePrimaryInstanceConnection"></a>

Aurora MySQL DB クラスター内のどの DB インスタンスに接続しているかを確認するには、次の例に示すように、`innodb_read_only` グローバル可変をチェックします。

```
SHOW GLOBAL VARIABLES LIKE 'innodb_read_only'; 
```

リーダー DB インスタンスに接続している場合、`innodb_read_only` 可変が `ON` に設定されます。プロビジョニングされたクラスターのプライマリインスタンスなどのライター DB インスタンスに接続している場合、この設定は `OFF` です。

この方法は、ワークロードを分散させるロジックや、書き込みオペレーションで適切な接続が使用されているかを確認するロジックを、アプリケーションコードに追加する場合に便利です。