管理自动备份
本节介绍如何管理数据库实例和多可用区数据库集群的自动备份。
主题
备份时段
自动备份在每天的首选备份时段中进行。如果备份所需的时间超过了分配给备份时段的时间,则备份将在该时段结束后继续,直至完成。备份时段不能与数据库实例或多可用区数据库集群的每周维护时段重叠。
在自动备份时段期间,启动备份进程时可能会短时间暂停存储 I/O (通常不到几秒)。在备份多可用区部署时,可能需要等待几分钟。对于 MariaDB、MySQL、Oracle 和 PostgreSQL,多可用区部署的备份期间不会暂停主数据库上的 I/O 活动,因为备份获取自备用数据库。对于 SQL Server,在单可用区和多可用区部署的备份期间,I/O 活动会短暂挂起,因为备份是从主实例进行的。对于 Db2,在备份期间,I/O 活动会短暂挂起,即使备份是从备用数据库进行的。
启动备份时,如果数据库实例或集群具有繁重的工作负载,则有时会跳过自动备份。如果跳过备份,您仍然可以执行时间点恢复(PITR),并仍在下一个备份时段尝试备份。有关 PITR 的更多信息,请参阅将数据库实例还原到指定时间。
如果创建数据库实例或多可用区数据库集群时未指定首选备份时段,Amazon RDS 将分配 30 分钟的原定设置备份时段。此时段是从每个 AWS 区域的 8 小时时间段中随机选择出来的。下表列出了已分配默认备份时段的各个 AWS 区域的时间块。
区域名称 | 区域 | 时间段 |
---|---|---|
美国东部(俄亥俄州) | us-east-2 | 03:00–11:00 UTC |
美国东部(弗吉尼亚北部) | us-east-1 | 03:00–11:00 UTC |
美国西部(加利福尼亚北部) | us-west-1 | 06:00–14:00 UTC |
美国西部(俄勒冈州) | us-west-2 | 06:00–14:00 UTC |
非洲(开普敦) | af-south-1 | 03:00–11:00 UTC |
亚太地区(香港) | ap-east-1 | 06:00–14:00 UTC |
亚太地区(海得拉巴) | ap-south-2 | 06:30–14:30 UTC |
亚太地区(雅加达) | ap-southeast-3 | 08:00–16:00 UTC |
亚太地区(墨尔本) | ap-southeast-4 | 11:00–19:00 UTC |
亚太地区(孟买) | ap-south-1 | 16:30–00:30 UTC |
Asia Pacific (Osaka) | ap-northeast-3 | 00:00–08:00 UTC |
Asia Pacific (Seoul) | ap-northeast-2 | 13:00–21:00 UTC |
亚太地区(新加坡) | ap-southeast-1 | 14:00–22:00 UTC |
亚太地区(悉尼) | ap-southeast-2 | 12:00–20:00 UTC |
亚太地区(东京) | ap-northeast-1 | 13:00–21:00 UTC |
加拿大(中部) | ca-central-1 | 03:00–11:00 UTC |
加拿大西部(卡尔加里) | ca-west-1 | 18:00–02:00 UTC |
中国(北京) | cn-north-1 | 06:00–14:00 UTC |
中国(宁夏) | cn-northwest-1 | 06:00–14:00 UTC |
Europe (Frankfurt) | eu-central-1 | 20:00–04:00 UTC |
欧洲(爱尔兰) | eu-west-1 | 22:00–06:00 UTC |
欧洲地区(伦敦) | eu-west-2 | 22:00–06:00 UTC |
欧洲(米兰) | eu-south-1 | 02:00–10:00 UTC |
欧洲(巴黎) | eu-west-3 | 07:29–14:29 UTC |
欧洲(西班牙) | eu-south-2 | 02:00–10:00 UTC |
Europe (Stockholm) | eu-north-1 | 23:00–07:00 UTC |
欧洲(苏黎世) | eu-central-2 | 02:00–10:00 UTC |
以色列(特拉维夫) | il-central-1 | 03:00–11:00 UTC |
中东(巴林) | me-south-1 | 06:00–14:00 UTC |
中东(阿联酋) | me-central-1 | 05:00–13:00 UTC |
南美洲(圣保罗) | sa-east-1 | 23:00–07:00 UTC |
AWS GovCloud(美国东部) | us-gov-east-1 | 17:00–01:00 UTC |
AWS GovCloud(美国西部) | us-gov-west-1 | 06:00–14:00 UTC |
备份保留期
您可以在创建数据库实例或多可用区数据库集群时设置备份保留期。如果您使用 Amazon RDS API 或 AWS CLI 创建数据库实例,并且未设置备份保留期,则默认备份保留期为一天。如果您使用控制台创建数据库实例,则默认备份保留期为七天。
创建数据库实例或集群后,您可以修改备份保留期。您可以将数据库实例的备份保留期设置为在 0 到 35 天之间。要禁用自动备份,请将备份保留期设置为 0。对于多可用区数据库集群,可以将备份保留期设置为在 1 到 35 天之间。手动快照限制(每个区域 100 个)不适用于自动备份。
重要
如果将数据库实例的备份保留期从 0 更改为非零值或从非零值更改为 0,则会发生中断。
RDS 不包括计算备份保留期时处于 stopped
状态的时间。数据库实例或集群停止后,无法创建自动备份。如果数据库实例已停止,备份的保留时间可能会超过备份保留期。
启用自动备份
如果数据库实例尚未启用自动备份,您可以随时启用。您可以将备份保留期设置为非零正值来启用自动备份。在开启自动备份后,您的数据库实例将脱机并立即创建备份。
注意
如果在 AWS Backup 中管理备份,将无法启用自动备份。有关更多信息,请参阅 使用 AWS Backup 管理自动备份。
立即启用自动备份
登录 AWS Management Console 并通过以下网址打开 Amazon RDS 控制台:https://console.aws.amazon.com/rds/
。 -
在导航窗格中,选择数据库,然后选择要修改的数据库实例或多可用区数据库集群。
-
选择修改。
-
对于 Backup retention period (备份保留期),请选择正非零值,例如 3 天。
-
选择 Continue (继续)。
-
选择立即应用。
-
选择修改数据库实例或修改集群以保存更改并启用自动备份。
要启用自动备份,请使用 AWS CLI modify-db-instance
或 modify-db-cluster
命令。
包括以下参数:
-
--db-instance-identifier
(或--db-cluster-identifier
用于可用区数据库集群) -
--backup-retention-period
-
--apply-immediately
或者--no-apply-immediately
在以下示例中,启用了自动备份并将备份保留期设置为三天。更改将立即应用。
对于 Linux、macOS 或 Unix:
aws rds modify-db-instance \ --db-instance-identifier
mydbinstance
\ --backup-retention-period3
\--apply-immediately
对于 Windows:
aws rds modify-db-instance ^ --db-instance-identifier
mydbinstance
^ --backup-retention-period3
^--apply-immediately
要启用自动备份,请使用 RDS API ModifyDBInstance
或 ModifyDBCluster
操作以及以下必需参数:
-
DBInstanceIdentifier
或DBClusterIdentifier
-
BackupRetentionPeriod
查看自动备份
要查看自动备份,请在导航窗格中选择 Automated backups(自动备份)。要查看与自动备份关联的单个快照,请在导航窗格中选择 Snapshots(快照)。或者,您可以描述与自动备份关联的各个快照。然后,您可以直接从这些快照之一还原数据库实例。
要使用 AWS CLI 对现有的数据库实例的自动备份进行描述,请使用以下命令之一:
aws rds describe-db-instance-automated-backups --db-instance-identifier
DBInstanceIdentifier
或者
aws rds describe-db-instance-automated-backups --dbi-resource-id
DbiResourceId
要使用 RDS API 对现有的数据库实例的保留的自动备份进行描述,请使用以下参数之一调用 DescribeDBInstanceAutomatedBackups
操作:
-
DBInstanceIdentifier
-
DbiResourceId
保留自动备份
注意
您只能保留数据库实例而不是多可用区数据库集群的自动备份。
删除数据库实例时,可以选择保留自动备份。自动备份可以保留的天数等于删除数据库实例时为该实例配置的备份保留期。
保留的自动备份包含系统快照和来自数据库实例的事务日志。还包括您的数据库实例属性,如分配的存储空间和数据库实例类,这些是将其还原到活动实例所必需的属性。
保留的自动备份和手动快照在被删除之前会产生账单费用。有关更多信息,请参阅 保留成本。
您可以为运行 Db2、MariaDB、MySQL、PostgreSQL、Oracle 和 Microsoft SQL Server 引擎的 RDS 实例保留自动备份。
您可以使用 AWS Management Console、RDS API 和 AWS CLI 还原或移除保留的自动备份。
保留期
保留的自动备份中的系统快照和事务日志与源数据库实例的系统快照和事务日志以同样的方式过期。因为没有为此实例创建任何新的快照或日志,所以保留的自动备份最终将完全过期。事实上,它们的寿命与最后一个系统快照一样长,取决于源实例被删除时所具有的保留周期设置。保留的自动备份将在最后一个系统快照过期时由系统删除。
您可以通过删除数据库实例的相同方式移除保留的自动备份。您可以使用控制台或 RDS API 操作 DeleteDBInstanceAutomatedBackup
移除保留的自动备份。
最终快照独立于保留的自动备份。我们强烈建议您制作最终快照,即使您保留自动备份也是如此,因为保留的自动备份最终将过期。最终快照不会过期。
查看保留的备份
要查看保留的自动备份,请在导航窗格中选择 Automated backups (自动备份),然后选择 Retained (保留)。要查看与保留的自动备份关联的单个快照,请在导航窗格中选择 Snapshots (快照)。或者,您可以通过描述来查看与保留的自动备份关联的各个快照。然后,您可以直接从这些快照之一还原数据库实例。
要使用 AWS CLI 对保留的自动备份进行描述,请使用以下命令:
aws rds describe-db-instance-automated-backups --dbi-resource-id
DbiResourceId
要使用 RDS API 对保留的自动备份进行描述,请使用 DbiResourceId
参数调用 DescribeDBInstanceAutomatedBackups
操作。
还原
有关从自动备份还原数据库实例的信息,请参阅 将数据库实例还原到指定时间。
保留成本
保留的自动备份的成本是与之关联的系统快照的总存储空间的成本。事务日志或实例元数据没有额外费用。备份的所有其他定价规则适用于可还原的实例。
例如,假设正在运行的实例的总分配存储空间为 100 GB。此外,假设您具有 50 GB 的手动快照,另加 75 GB 与保留的自动备份关联的系统快照。在这种情况下,您将仅为额外的 25 GB 的备份存储空间付费,如下所示:(50 GB + 75 GB) – 100 GB = 25 GB。
限制
以下限制适用于保留的自动备份:
-
一个 AWS 区域中保留的自动备份的最大数量为 40。这不包含在数据库实例限额中。您可以同时具有 40 个运行的数据库实例和额外的 40 个保留的自动备份。
-
保留的自动备份不包含有关参数或选项组的信息。
-
您可以将已删除的实例还原到删除时保留周期内的某个时间点。
-
您无法修改保留的自动备份。这是因为它包含在您删除源实例时已存在的系统备份、事务日志和数据库实例属性。
删除保留的自动备份
当不再需要保留的自动备份时,可以删除它们。
删除保留的自动备份
登录 AWS Management Console 并通过以下网址打开 Amazon RDS 控制台:https://console.aws.amazon.com/rds/
。 -
在导航窗格中,选择 Automated backups (自动备份)。
-
在保留选项卡中,选择要删除的保留自动备份。
-
对于 Actions,选择 Delete。
-
在确认页面上,输入
delete me
并选择 Delete (删除)。
可以通过使用 AWS CLI 命令 delete-db-instance-automated-backup 及以下选项删除保留的自动备份:
-
--dbi-resource-id
– 源数据库实例的资源标识符。可以通过运行 AWS CLI 命令 describe-db-instance-automated-backups 查找保留自动备份的源数据库实例的资源标识符。
以下示例删除具有源数据库实例资源标识符 db-123ABCEXAMPLE
的保留自动备份。
对于 Linux、macOS 或 Unix:
aws rds delete-db-instance-automated-backup \ --dbi-resource-id
db-123ABCEXAMPLE
对于 Windows:
aws rds delete-db-instance-automated-backup ^ --dbi-resource-id
db-123ABCEXAMPLE
可以通过使用 Amazon RDS API 操作 DeleteDBInstanceAutomatedBackup 及以下参数删除保留的自动备份。
-
DbiResourceId
– 源数据库实例的资源标识符。可以通过使用 Amazon RDS API 操作 DescribeDBInstanceAutomatedBackups 查找保留自动备份的源数据库实例的资源标识符。
禁用自动备份
在某些情况下(例如,加载大量数据时),您可能希望临时禁用自动备份。
重要
我们强烈建议不要禁用自动备份,因为该操作会禁用时间点恢复。禁用数据库实例或多可用区数据库集群的自动备份将删除此数据库的所有现有自动备份。如果在禁用后又重新启用自动备份,则只能从重新启用自动备份的时间开始进行还原。
立即禁用自动备份
登录 AWS Management Console 并通过以下网址打开 Amazon RDS 控制台:https://console.aws.amazon.com/rds/
。 -
在导航窗格中,选择数据库,然后选择要修改的数据库实例或多可用区数据库集群。
-
选择修改。
-
对于 Backup retention period (备份保留期),选择 0 days (0 天)。
-
选择 Continue (继续)。
-
选择立即应用。
-
选择修改数据库实例或修改集群以保存更改并禁用自动备份。
要立即禁用自动备份,请使用 modify-db-instance 或 modify-db-cluster 命令并使用 --apply-immediately
将备份保留期设置为 0。
以下示例立即禁用多可用区数据库集群上的自动备份。
对于 Linux、macOS 或 Unix:
aws rds modify-db-cluster \ --db-cluster-identifier
mydbcluster
\ --backup-retention-period 0 \--apply-immediately
对于 Windows:
aws rds modify-db-cluster ^ --db-cluster-identifier
mydbcluster
^ --backup-retention-period 0 ^--apply-immediately
要了解修改的生效时间,请对于数据库实例调用 describe-db-instances
(或对于多可用区数据库集群调用 describe-db-clusters
),直至备份保留期的值为 0 且 mydbcluster
状态可用。
aws rds describe-db-clusters --db-cluster-identifier
mydcluster
要立即禁用自动备份,请使用以下参数调用 ModifyDBInstance 或 ModifyDBCluster 操作:
-
DBInstanceIdentifier = mydbinstance
– 、 或DBClusterIdentifier = mydbcluster
-
BackupRetentionPeriod = 0
https://rds.amazonaws.com/ ?Action=ModifyDBInstance &DBInstanceIdentifier=mydbinstance &BackupRetentionPeriod=0 &SignatureVersion=2 &SignatureMethod=HmacSHA256 &Timestamp=2009-10-14T17%3A48%3A21.746Z &AWSAccessKeyId=<&AWS; Access Key ID> &Signature=<Signature>
使用不支持的 MySQL 存储引擎进行自动备份
对于 MySQL 数据库引擎,仅支持将自动备份用于 InnoDB 存储引擎。将这些功能与 MyISAM 等其他 MySQL 存储引擎配合使用,可能会导致在从备份还原时出现性能不可靠问题。具体而言,由于类似 MyISAM 的存储引擎不支持可靠的崩溃恢复,因此如果发生崩溃,就可能会损坏您的表。为此,我们建议您使用 InnoDB 存储引擎。
-
要将现有的 MyISAM 表转换为 InnoDB 表,您可以使用
ALTER TABLE
命令,例如:ALTER TABLE
table_name
ENGINE=innodb, ALGORITHM=COPY; -
如果选择使用 MyISAM,您可以尝试使用
REPAIR
命令手动修复崩溃后损坏的表。有关更多信息,请参阅 MySQL 文档中的 REPAIR TABLE 语句。然而,正如 MySQL 文档所指出,您可能再也不能恢复所有数据。 -
如果要在还原前拍摄 MyISAM 表的快照,请执行以下步骤:
-
停止 MyISAM 表的所有活动(即关闭所有会话)。
可以通过为从
SHOW FULL PROCESSLIST
命令返回的每个进程调用 mysql.rds_kill 命令来关闭所有会话。 -
锁定并刷新每个 MyISAM 表。例如,以下命令锁定并刷新两个名为
myisam_table1
和myisam_table2
的表:mysql> FLUSH TABLES myisam_table, myisam_table2 WITH READ LOCK;
-
创建数据库实例或多可用区数据库集群的快照。完成快照后,释放 MyISAM 表上的锁定和恢复活动。可以使用以下命令为表解锁:
mysql> UNLOCK TABLES;
这些步骤强制 MyISAM 将存储在内存中的数据刷新到磁盘上,这可确保从数据库快照还原后,以清空状态开始下一操作。有关创建数据库快照的更多信息,请参阅为单可用区数据库实例创建数据库快照。
-
使用不支持的 MariaDB 存储引擎进行自动备份
对于 MariaDB 数据库引擎,仅支持将自动备份与 InnoDB 存储引擎配合使用。将这些功能与 Aria 等其他 MariaDB 存储引擎配合使用,可能会导致在从备份还原时出现性能不可靠问题。即使 Aria 是用来防止崩溃的 MyISAM 的替代品,您的表仍可能在崩溃时损坏。为此,我们建议您使用 InnoDB 存储引擎。
-
要将现有的 Aria 表转换为 InnoDB 表,您可以使用
ALTER TABLE
命令。例如:ALTER TABLE
table_name
ENGINE=innodb, ALGORITHM=COPY; -
如果选择使用 Aria,您可以尝试使用
REPAIR TABLE
命令手动修复崩溃后损坏的表。有关更多信息,请参阅 http://mariadb.com/kb/en/mariadb/repair-table/。 -
如果要在还原前拍摄 Aria 表的快照,请执行以下步骤:
-
停止 Aria 表的所有活动 (即关闭所有会话)。
-
锁定并刷新每个 Aria 表。
-
创建数据库实例或多可用区数据库集群的快照。完成快照后,释放 Aria 表上的锁定和恢复活动。这些步骤强制 Aria 将存储在内存中的数据刷新到磁盘上,从而确保从数据库快照还原后,以清空状态开始下一操作。
-