Amazon Relational Database Service
用户指南 (API Version 2014-10-31)
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。请点击 Amazon AWS 入门,可查看中国地区的具体差异

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

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

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

有关 Aurora 可用区域的列表,请参阅 可用性

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

您可以将未加密或已加密的 MySQL 数据库实例迁移到已加密的 Aurora 数据库群集,也可以将未加密的 MySQL 数据库实例迁移到未加密的 Aurora 数据库群集。您无法将已加密的 MySQL 数据库实例迁移到未加密的 Aurora 数据库群集。

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

注意

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

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

创建 Aurora 只读副本

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

AWS 管理控制台

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

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

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

  3. 选择要用作 Aurora 只读副本源的 MySQL 数据库实例,然后从 Instance Actions 中选择 Create Aurora Read Replica

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

    选项 描述

    数据库实例类

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

    Multi-AZ Deployment

    选择 Create Replica in Different Zone 可在目标区域的另一个可用区中创建新数据库群集的备用副本以支持故障转移。有关多可用区的详细信息,请参阅区域和可用区

    DB Instance Identifier

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

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

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

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

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

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

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

    VPC

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

    子网组

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

    公开访问

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

    可用区

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

    VPC 安全组

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

    DB Cluster Identifier

    键入 Aurora 只读副本数据库群集的名称,它对于副本的目标 AWS 区域中的账户是唯一的。此标识符将在数据库群集的群集终端节点地址中使用。有关群集终端节点的信息,请参阅 Aurora 终端节点

    数据库群集标识符具有以下限制:

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

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

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

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

    Database Port

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

    DB Parameter Group

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

    数据库群集参数组

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

    启用加密

    对于要进行静态加密的新 Aurora 数据库群集,选择 Yes。如果选择 Yes,则您需要选择一个 AWS KMS 加密密钥作为 Master Key 值。

    优先级

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

    备份保留期

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

    Enable Enhanced Monitoring

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

    Monitoring Role

    用于增强监控的 IAM 角色。有关更多信息,请参阅 设置和启用增强监控

    粒度

    仅当 Enable Enhanced Monitoring 设置为 Yes 时可用。设置为数据库群集收集指标的时间之间的间隔 (以秒为单位)。

    Auto Minor Version Upgrade

    如果您希望在次要 MySQL 数据库引擎版本升级可用时,让 Aurora 数据库群集自动接收这些升级,请选择 Yes

    Auto Minor Version Upgrade 选项仅适用于升级到 Amazon Aurora 数据库群集的 MySQL 次要引擎版本。它不适用于应用于维持系统稳定性的常规修补程序。

    Maintenance Window

    选择可以进行系统维护的每周时间范围。

  5. 选择 Create Read Replica

AWS CLI

要从源 MySQL 数据库实例创建 Aurora 只读副本,请使用 create-db-clustercreate-db-instance AWS CLI 命令创建新的 Aurora 数据库群集和主实例。不要指定主用户名、主密码或数据库名称,因为 Aurora 只读副本使用和源 MySQL 数据库实例相同的主用户名、主密码和数据库名称。

您可以使用带以下参数的 create-db-cluster 命令从源 MySQL 数据库实例为 Aurora 只读副本创建新的 Aurora 数据库群集:

  • --db-cluster-identifier

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

  • --db-subnet-group-name

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

  • --engine aurora

  • --kms-key-id

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

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

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

      注意

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

  • --replication-source-identifier

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

  • --vpc-security-group-ids

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

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

针对 Linux、OS X 或 Unix:

aws rds create-db-cluster \ --db-cluster-identifier myreadreplicacluster \ --db-subnet-group-name mysubnetgroup \ --engine aurora \ --replication-source-identifier mysqlmasterARN \ --vpc-security-group-ids mysecuritygroup

对于 Windows:

aws rds create-db-cluster ^ --db-cluster-identifier myreadreplicacluster ^ --db-subnet-group-name mysubnetgroup ^ --engine aurora ^ --replication-source-identifier mysqlmasterARN ^ --vpc-security-group-ids mysecuritygroup

如果您使用控制台创建 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

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

    • 如果 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 CLI 针对您的 Aurora 数据库群集查看 MySQL 与 Aurora 的复制关系。

AWS 管理控制台

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

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

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

  3. 展开 MySQL 数据库实例,并选择 Replication 选项卡。在角色为 replica 的行中,Aurora 只读副本信息在 Deployment DB Clusters 表中显示。

    查看 Aurora 只读副本

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

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

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

  3. 展开 Aurora 只读副本的数据库群集,并选择 Replication 选项卡。主 MySQL 数据库实例信息位于 Replication Source 字段中。

    查看 MySQL 主实例

AWS CLI

要使用 AWS CLI,针对您的 Aurora 数据库群集查看 MySQL 与 Aurora 的复制关系,请使用 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 终端节点的更多信息,请参阅 Aurora 终端节点。提升会很快完成,您可以在提升过程中读取和写入 Aurora 只读副本。但是在此期间您无法删除 MySQL 主数据库实例,或取消数据库实例和 Aurora 只读副本之间的链接。

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

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

提升完成后,在导航窗格中选择 Instances 并确认该 Aurora 只读副本有一个 Promoted Read Replica cluster to stand-alone database cluster 事件,从而确认提升已完成。提升完成后,MySQL 主数据库实例和 Aurora 只读副本之间的链接会取消,如果您愿意,可以安全删除数据库实例。

AWS 管理控制台

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

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

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

  3. 为 Aurora 只读副本选择数据库实例,并从 Instance Actions 中选择 Promote Read Replica

    创建 Aurora 只读副本
  4. 选择 Promote Read Replica

AWS 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

相关主题