Amazon Aurora
Aurora 用户指南 (API 版本 2014-10-31)
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 Amazon AWS 入门

使用 Aurora 只读副本将数据从 MySQL 数据库实例迁移到 Amazon Aurora MySQL 数据库集群

Amazon RDS 使用 MySQL 数据库引擎的二进制日志复制功能从源 MySQL 数据库实例创建一个特殊类型的数据库集群,称为 Aurora 只读副本。对源 MySQL 数据库实例的更新将异步复制到 Aurora 只读副本。

我们建议您创建源 MySQL 数据库实例的 Aurora 只读副本,以使用该功能从 MySQL 数据库实例迁移到 Aurora MySQL 数据库集群。如果 MySQL 数据库实例和 Aurora 只读副本之间的副本滞后为 0,您可以将客户端应用程序引导到 Aurora 只读副本,然后停止复制以使 Aurora 只读副本成为单独的 Aurora MySQL 数据库集群。准备迁移需要花费一段时间,每 TiB 数据大约需要几小时。

有关可以使用 Aurora 的区域列表,请参阅Amazon Aurora MySQL 的可用性

在创建 MySQL 数据库实例的 Aurora 只读副本时,Amazon RDS 为源 MySQL 数据库实例创建数据库快照(Amazon RDS 私有,不产生费用)。然后,Amazon RDS 将数据从数据库快照迁移到 Aurora 只读副本。在将数据从数据库快照迁移到新的 Aurora MySQL 数据库集群后,Amazon RDS 开始在 MySQL 数据库实例和 Aurora MySQL 数据库集群之间进行复制。如果 MySQL 数据库实例中包含的表使用 InnoDB 之外的存储引擎,或者使用压缩行格式,您可以在创建 Aurora 只读副本之前修改这些表以使用 InnoDB 存储引擎和动态行格式,从而加快 Aurora 只读副本的创建过程。有关将 MySQL 数据库快照复制到 Aurora MySQL 数据库集群的过程的更多信息,请参阅使用数据库快照将数据从 MySQL 数据库实例迁移到 Amazon Aurora MySQL 数据库集群

一个 MySQL 数据库实例只能有一个 Aurora 只读副本。

注意

由于 Amazon Aurora MySQL 和作为复制主实例的 RDS MySQL 数据库实例的 MySQL 数据库引擎版本之间的功能不同,可能导致复制问题。如果遇到错误,您可以在 Amazon RDS 社区论坛或联系 AWS Support 以获得帮助。

有关 MySQL 只读副本的更多信息,请参阅使用 MariaDB、MySQL 和 PostgreSQL 数据库实例的只读副本

创建 Aurora 只读副本

您可以使用控制台或 AWS CLI 为 MySQL 数据库实例创建 Aurora 只读副本。

AWS 管理控制台

从源 MySQL 数据库实例创建 Aurora 只读副本

  1. 登录 AWS 管理控制台 并通过以下网址打开 Amazon RDS 控制台:https://console.amazonaws.cn/rds/

  2. 在导航窗格中,选择 Instances

  3. 选择要作为 Aurora 只读副本来源的 MySQL 数据库实例,然后从实例操作中选择创建 Aurora 只读副本

  4. 按照下表所述,选择 Aurora 只读副本要使用的数据库集群规格。

    选项 说明

    数据库实例类

    选择定义数据库集群中主实例的处理和内存要求的数据库实例类。有关数据库实例类选项的更多信息,请参阅选择数据库实例类

    多可用区部署

    选择在不同区域创建副本以在目标 AWS 区域的另一个可用区中创建新数据库集群的备用副本,从而提供故障转移支持。有关多可用区的详细信息,请参阅选择区域和可用区

    数据库实例标识符

    键入 Aurora 只读副本数据库集群中主实例的名称。此标识符在新数据库集群主实例的终端节点地址中使用。

    数据库实例标识符具有以下限制:

    • 它必须包含 1 到 63 个字母数字字符或连字符。

    • 它的第一个字符必须是字母。

    • 它不能以连字符结束或包含两个连续连字符。

    • 它对于每个 AWS 区域每个 AWS 账户的所有数据库实例必须是唯一的。

    由于 Aurora 只读副本数据库集群是从源数据库实例快照创建的,因此,Aurora 只读副本的主用户名和主密码与源数据库实例的主用户名和主密码相同。

    Virtual Private Cloud (VPC)

    选择要托管数据库集群的 VPC。选择新建 VPC 以让 Amazon RDS 为您创建 VPC。有关更多信息,请参阅数据库集群先决条件

    子网组

    选择要用于数据库集群的数据库子网组。选择创建新的数据库子网组以让 Amazon RDS 为您创建数据库子网组。有关更多信息,请参阅数据库集群先决条件

    公开可用性

    选择 Yes 可向数据库集群提供公有 IP 地址;否则,请选择 No。数据库集群可以混合使用公有和私有数据库实例。有关隐藏实例以防止公开访问的更多信息,请参阅从 Internet 隐藏 VPC 中的数据库实例

    可用区

    确定您是否希望指定特定的可用区。有关可用区的更多信息,请参阅选择区域和可用区

    VPC 安全组

    选择新建 VPC 安全组以让 Amazon RDS 为您创建 VPC 安全组。选择选择现有的 VPC 安全组,然后指定一个或多个 VPC 安全组以保护对数据库集群的网络访问。有关更多信息,请参阅数据库集群先决条件

    数据库端口

    指定应用程序和实用程序用来访问数据库的端口。Aurora MySQL 数据库集群默认为使用默认 MySQL 端口 3306。有些公司的防火墙不允许连接到此端口。如果您的公司防火墙阻止使用默认端口,请为新数据库集群选择其他端口。

    数据库参数组

    为 Aurora MySQL 数据库集群选择数据库参数组。Aurora 具有一个可使用的默认数据库参数组,您也可以创建自己的数据库参数组。有关数据库参数组的更多信息,请参阅 使用数据库参数组和数据库集群参数组

    数据库集群参数组

    为 Aurora MySQL 数据库集群选择数据库集群参数组。Aurora 具有一个可使用的默认数据库集群参数组,您也可以创建自己的数据库集群参数组。有关数据库集群参数组的更多信息,请参阅 使用数据库参数组和数据库集群参数组

    加密

    如果您不希望对新的 Aurora 数据库集群进行加密,请选择禁用加密。为要静态加密的新 Aurora 数据库集群选择启用加密。如果选择启用加密,您必须选择一个 AWS KMS 加密密钥以作为主密钥值。

    如果 MySQL 数据库实例未加密,请指定一个加密密钥来对数据库集群进行静态加密。

    如果 MySQL 数据库实例已加密,请指定一个加密密钥,以便使用指定的加密密钥对您的数据库集群进行静态加密。您可以指定 MySQL 数据库快照使用的加密密钥或其他密钥。您无法从已加密的 MySQL 数据库实例创建未加密的数据库集群。

    优先级

    选择数据库集群的故障转移优先级。如果您未选择值,则默认值为 tier-1。此优先级决定从主实例故障恢复时提升 Aurora 副本的顺序。有关更多信息,请参阅Aurora 数据库集群的容错能力

    备份保留期

    选择 Aurora 保留数据库的备份副本的时间长度 (1 到 35 天)。可使用备份副本对数据库执行时间点还原 (PITR),以还原到第二个时间点。

    增强监测

    选择启用增强监测可启用您的数据库集群在其上运行的操作系统的实时指标收集。有关更多信息,请参阅增强监测

    监控角色

    仅当增强监测设置为启用增强监测时可用。选择您创建的 IAM 角色以允许 Amazon RDS 与 Amazon CloudWatch Logs 通信,或选择默认以让 RDS 为您创建一个名为 rds-monitoring-role 的角色。有关更多信息,请参阅增强监测

    粒度

    仅当增强监测设置为启用增强监测时可用。设置为数据库集群收集指标的时间间隔(以秒为单位)。

    自动次要版本升级

    该设置不适用于 Aurora MySQL 数据库集群。

    有关 Aurora MySQL 引擎更新的更多信息,请参阅Amazon Aurora MySQL 数据库引擎更新

    维护时段

    选择选择时段并指定可以进行系统维护的每周时间范围。或者,为 Amazon RDS 选择无首选项以随机分配一个时段。

  5. 选择创建只读副本

CLI

要从源 MySQL 数据库实例中创建 Aurora 只读副本,请使用 create-db-cluster create-db-instance AWS CLI 命令创建新的 Aurora MySQL 数据库集群。当您调用 create-db-cluster 命令时,请加入 --replication-source-identifier 参数,识别源 MySQL 数据库实例的 Amazon 资源名称 (ARN)。有关 Amazon RDS ARN 的更多信息,请参阅 Amazon Relational Database Service (Amazon RDS)

不要指定主用户名、主密码或数据库名称,因为 Aurora 只读副本使用和源 MySQL 数据库实例相同的主用户名、主密码和数据库名称。

针对 Linux、OS X 或 Unix:

aws rds create-db-cluster --db-cluster-identifier sample-replica-cluster --engine aurora \ --db-subnet-group-name mysubnetgroup --vpc-security-group-ids sg-c7e5b0d2 \ --replication-source-identifier arn:aws-cn:rds:us-west-2:123456789012:db:master-mysql-instance

对于 Windows:

aws rds create-db-cluster --db-cluster-identifier sample-replica-cluster --engine aurora ^ --db-subnet-group-name mysubnetgroup --vpc-security-group-ids sg-c7e5b0d2 ^ --replication-source-identifier arn:aws-cn:rds:us-west-2:123456789012:db:master-mysql-instance

如果您使用控制台创建 Aurora 只读副本,Amazon RDS 将自动为您的数据库集群 Aurora 只读副本创建主实例。如果您使用 AWS CLI 创建 Aurora 只读副本,则必须明确为数据库集群创建主实例。主实例是在数据库集群中创建的第一个实例。

您可以使用带以下参数的 create-db-instance AWS CLI 命令为数据库集群创建主实例。

  • --db-cluster-identifier

    数据库集群的名称。

  • --db-instance-class

    要用于主实例的数据库实例类的名称。

  • --db-instance-identifier

    主实例的名称。

  • --engine aurora

在该示例中,您将使用 myinstanceclass 中指定的数据库实例类为名为 myreadreplicacluster 的数据库集群创建一个名为 myreadreplicainstance 的主实例。

针对 Linux、OS X 或 Unix:

aws rds create-db-instance \ --db-cluster-identifier myreadreplicacluster \ --db-instance-class myinstanceclass --db-instance-identifier myreadreplicainstance \ --engine aurora

对于 Windows:

aws rds create-db-instance \ --db-cluster-identifier myreadreplicacluster \ --db-instance-class myinstanceclass --db-instance-identifier myreadreplicainstance \ --engine aurora

API

要从源 MySQL 数据库实例中创建 Aurora 只读副本,请使用 CreateDBClusterCreateDBInstance Amazon RDS API 命令创建新的 Aurora 数据库集群和主实例。不要指定主用户名、主密码或数据库名称,因为 Aurora 只读副本使用和源 MySQL 数据库实例相同的主用户名、主密码和数据库名称。

您可以使用带以下参数的 CreateDBCluster Amazon RDS API 命令从源 MySQL 数据库实例为 Aurora 只读副本创建新的 Aurora 数据库集群:

  • DBClusterIdentifier

    要创建的数据库集群的名称。

  • DBSubnetGroupName

    要与该数据库集群关联的数据库子网组的名称。

  • Engine=aurora

  • KmsKeyId

    用于选择性加密数据库集群的 AWS Key Management Service (AWS KMS) 加密密钥,具体取决于是否加密了 MySQL 数据库实例。

    • 如果 MySQL 数据库实例未加密,请指定一个加密密钥来对数据库集群进行静态加密。否则,将使用您的账户的默认加密密钥对数据库集群进行静态加密。

    • 如果 MySQL 数据库实例已加密,请指定一个加密密钥,以便使用指定的加密密钥对您的数据库集群进行静态加密。否则,将使用 MySQL 数据库实例的加密密钥对您的数据库集群进行静态加密。

      注意

      您无法从已加密的 MySQL 数据库实例创建未加密的数据库集群。

  • ReplicationSourceIdentifier

    源 MySQL 数据库实例的 Amazon 资源名称 (ARN)。有关 Amazon RDS ARN 的更多信息,请参阅 Amazon Relational Database Service (Amazon RDS)

  • VpcSecurityGroupIds

    要与该数据库集群关联的 EC2 VPC 安全组列表。

在该示例中,您将从 ARN 设置为 mysqlmasterARN、与名为 mysubnetgroup 的数据库子网组和名为 mysecuritygroup 的 VPC 安全组关联的源 MySQL 数据库实例创建一个名为 myreadreplicacluster 的数据库集群。

https://rds.us-east-1.amazonaws.com/ ?Action=CreateDBCluster &DBClusterIdentifier=myreadreplicacluster &DBSubnetGroupName=mysubnetgroup &Engine=aurora &ReplicationSourceIdentifier=mysqlmasterARN &SignatureMethod=HmacSHA256 &SignatureVersion=4 &Version=2014-10-31 &VpcSecurityGroupIds=mysecuritygroup &X-Amz-Algorithm=AWS4-HMAC-SHA256 &X-Amz-Credential=AKIADQKE4SARGYLE/20150927/us-east-1/rds/aws4_request &X-Amz-Date=20150927T164851Z &X-Amz-SignedHeaders=content-type;host;user-agent;x-amz-content-sha256;x-amz-date &X-Amz-Signature=6a8f4bd6a98f649c75ea04a6b3929ecc75ac09739588391cd7250f5280e716db

如果您使用控制台创建 Aurora 只读副本,Amazon RDS 将自动为您的数据库集群 Aurora 只读副本创建主实例。如果您使用 AWS CLI 创建 Aurora 只读副本,则必须明确为数据库集群创建主实例。主实例是在数据库集群中创建的第一个实例。

您可以使用带以下参数的 CreateDBInstance Amazon RDS API 命令为数据库集群创建主实例:

  • DBClusterIdentifier

    数据库集群的名称。

  • DBInstanceClass

    要用于主实例的数据库实例类的名称。

  • DBInstanceIdentifier

    主实例的名称。

  • Engine=aurora

在该示例中,您将使用 myinstanceclass 中指定的数据库实例类为名为 myreadreplicacluster 的数据库集群创建一个名为 myreadreplicainstance 的主实例。

https://rds.us-east-1.amazonaws.com/ ?Action=CreateDBInstance &DBClusterIdentifier=myreadreplicacluster &DBInstanceClass=myinstanceclass &DBInstanceIdentifier=myreadreplicainstance &Engine=aurora &SignatureMethod=HmacSHA256 &SignatureVersion=4 &Version=2014-09-01 &X-Amz-Algorithm=AWS4-HMAC-SHA256 &X-Amz-Credential=AKIADQKE4SARGYLE/20140424/us-east-1/rds/aws4_request &X-Amz-Date=20140424T194844Z &X-Amz-SignedHeaders=content-type;host;user-agent;x-amz-content-sha256;x-amz-date &X-Amz-Signature=bee4aabc750bf7dad0cd9e22b952bd6089d91e2a16592c2293e532eeaab8bc77

查看 Aurora 只读副本

您可以使用 AWS 管理控制台或 AWS CLI 查看 Aurora 数据库集群的 MySQL 与 Aurora MySQL 的复制关系。

AWS 管理控制台

要查看 Aurora 只读副本的主 MySQL 数据库实例

  1. 登录 AWS 管理控制台 并通过以下网址打开 Amazon RDS 控制台:https://console.amazonaws.cn/rds/

  2. 在导航窗格中,选择 Clusters

  3. 选择 Aurora 只读副本的数据库集群以显示其详细信息。主 MySQL 数据库实例信息位于复制源字段中。

    
                                    查看 MySQL 主实例

CLI

要使用 AWS CLI 针对您的 Aurora MySQL 数据库群集查看 MySQL 与 Aurora MySQL 的复制关系,请使用 describe-db-clustersdescribe-db-instances 命令。

要确定哪个 MySQL 数据库实例是主实例,请使用 describe-db-clusters 并在 --db-cluster-identifier 选项中指定 Aurora 只读副本的群集标识符。请参阅作为复制主实例的数据库实例的 ARN 输出中的 ReplicationSourceIdentifier 元素。

要确定哪个数据库集群是 Aurora 只读副本,请使用 describe-db-instances 并在 --db-instance-identifier 选项中指定 MySQL 数据库实例的实例标识符。请参阅 Aurora 只读副本的数据库集群标识符输出中的 ReadReplicaDBClusterIdentifiers 元素。

针对 Linux、OS X 或 Unix:

aws rds describe-db-clusters \ --db-cluster-identifier myreadreplicacluster
aws rds describe-db-instances \ --db-instance-identifier mysqlmaster

对于 Windows:

aws rds describe-db-clusters ^ --db-cluster-identifier myreadreplicacluster
aws rds describe-db-instances ^ --db-instance-identifier mysqlmaster

提升 Aurora 只读副本

在迁移完成后,您可以将 Aurora 只读副本提升为单独数据库集群,并将客户端应用程序引导到 Aurora 只读副本的终端节点。有关 Aurora 终端节点的更多信息,请参阅Amazon Aurora 终端节点。提升会很快完成,您可以在提升过程中读取和写入 Aurora 只读副本。但是在此期间您无法删除 MySQL 主数据库实例,或取消数据库实例和 Aurora 只读副本之间的链接。

在提升 Aurora 只读副本之前,终止写入到源 MySQL 数据库实例的所有事务,然后等待 Aurora 只读副本的副本滞后达到 0。您可以在 Aurora 只读副本上调用 SHOW SLAVE STATUS 命令,然后读取 Seconds behind master 值以查看 Aurora 只读副本的副本滞后。

写入主实例的事务已终止,且副本滞后为 0 时,可以开始写入 Aurora 只读副本。如果在此之前写入到 Aurora 只读副本,并修改了在 MySQL 主实例上也进行修改的表,则可能会中断复制到 Aurora 的过程。如果发生此情况,您必须删除并重新创建 Aurora 只读副本。

在提升后,通过以下方法确认提升已完成:在导航窗格中选择实例,并确认 Aurora 只读副本具有一个已将只读副本集群提升为单独数据库集群事件。提升完成后,MySQL 主数据库实例和 Aurora 只读副本之间的链接会取消,如果您愿意,可以安全删除数据库实例。

AWS 管理控制台

将 Aurora 只读副本提升为 Aurora 数据库集群

  1. 登录 AWS 管理控制台 并通过以下网址打开 Amazon RDS 控制台:https://console.amazonaws.cn/rds/

  2. 在导航窗格中,选择 Instances

  3. 为 Aurora 只读副本选择数据库实例,然后从实例操作中选择提升只读副本

  4. 选择 Promote Read Replica

CLI

要将 Aurora 只读副本提升为独立数据库群集,请使用 promote-read-replica-db-cluster AWS CLI 命令。

针对 Linux、OS X 或 Unix:

aws rds promote-read-replica-db-cluster \ --db-cluster-identifier myreadreplicacluster

对于 Windows:

aws rds promote-read-replica-db-cluster ^ --db-cluster-identifier myreadreplicacluster