

# Amazon Aurora MySQL 的最佳实践
<a name="AuroraMySQL.BestPractices"></a><a name="best_practices"></a>

本主题提供使用 Amazon Aurora MySQL 数据库集群或向其迁移数据的最佳实践和选项信息。本主题中的信息总结并重申了一些准则和过程，您可以在 [管理 Amazon Aurora 数据库集群](CHAP_Aurora.md) 中找到这些信息。

**Contents**
+ [确定您连接到的数据库实例](#AuroraMySQL.BestPractices.DeterminePrimaryInstanceConnection)
+ [Aurora MySQL 性能和扩展的最佳实践](AuroraMySQL.BestPractices.Performance.md)
  + [使用 T 实例类进行开发和测试](AuroraMySQL.BestPractices.Performance.md#AuroraMySQL.BestPractices.T2Medium)
  + [使用异步键预取优化 Aurora MySQL 索引的联接查询](AuroraMySQL.BestPractices.Performance.md#Aurora.BestPractices.AKP)
    + [启用异步键预取](AuroraMySQL.BestPractices.Performance.md#Aurora.BestPractices.AKP.Enabling)
    + [优化异步键预取的查询](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 数据库实例性能降低、自动重启和故障转移](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)
  + [避免将 XA 事务与 Amazon Aurora MySQL 结合使用](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)

## 确定您连接到的数据库实例
<a name="AuroraMySQL.BestPractices.DeterminePrimaryInstanceConnection"></a>

要确定连接到 Aurora MySQL 数据库集群中的哪个数据库实例，请检查 `innodb_read_only` 全局变量，如以下示例中所示。

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

`innodb_read_only` 变量设置为 `ON` (如果您已连接到读取器数据库实例)。此设置为 `OFF` (如果您已连接到写入器数据库实例，例如预置集群中的主实例)。

如果要在应用程序代码中添加逻辑以平衡工作负载或确保写入操作使用正确的连接，该方法可能是非常有用的。