复制事务日志备份 - Amazon Relational Database Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

复制事务日志备份

要将单个数据库的一组可用事务日志备份复制到您的 Amazon S3 桶,请调用 rds_tlog_backup_copy_to_S3 存储过程。rds_tlog_backup_copy_to_S3 存储过程将启动一项新任务以复制事务日志备份。

注意

rds_tlog_backup_copy_to_S3 存储过程将在不对 is_log_chain_broken 属性进行验证的情况下复制事务日志备份。因此,在运行 rds_tlog_backup_copy_to_S3 存储过程之前,您应该手动确认未断开的日志链。有关进一步的解释,请参阅验证事务日志备份日志链

rds_tlog_backup_copy_to_S3 存储过程的使用
exec msdb.dbo.rds_tlog_backup_copy_to_S3 @db_name='mydatabasename', [@kms_key_arn='arn:aws:kms:region:account-id:key/key-id'], [@backup_file_start_time='2022-09-01 01:00:15'], [@backup_file_end_time='2022-09-01 21:30:45'], [@starting_lsn=149000000112100001], [@ending_lsn=149000000120400001], [@rds_backup_starting_seq_id=5], [@rds_backup_ending_seq_id=10];

以下输入参数可用:

参数 描述

@db_name

要为其复制事务日志备份的数据库的名称

@kms_key_arn

客户托管的 KMS 密钥。如果您使用 Amazon 托管的 KMS 密钥加密数据库实例,则必须创建客户托管的密钥。如果您使用客户托管的密钥加密数据库实例,则可以使用相同的 KMS 密钥 ARN。

@backup_file_start_time

rds_fn_list_tlog_backup_metadata 函数的 [backup_file_time_utc] 列中提供的 UTC 时间戳。

@backup_file_end_time

rds_fn_list_tlog_backup_metadata 函数的 [backup_file_time_utc] 列中提供的 UTC 时间戳。

@starting_lsn

rds_fn_list_tlog_backup_metadata 函数的 [starting_lsn] 列中提供的日志序列号(LSN)

@ending_lsn

rds_fn_list_tlog_backup_metadata 函数的 [ending_lsn] 列中提供的日志序列号(LSN)。

@rds_backup_starting_seq_id

rds_fn_list_tlog_backup_metadata 函数的 [rds_backup_seq_id] 列中提供的序列 ID。

@rds_backup_ending_seq_id

rds_fn_list_tlog_backup_metadata 函数的 [rds_backup_seq_id] 列中提供的序列 ID。

您可以指定一组时间、LSN 或序列 ID 参数。只需要一组参数。

您也可以在任何参数集中仅指定一个参数。例如,通过仅为 backup_file_end_time 参数提供值,则该时间之前在七天限制内的所有可用事务日志备份文件都将复制到您的 Amazon S3 桶中。

以下是 rds_tlog_backup_copy_to_S3 存储过程的有效输入参数组合。

提供的参数 预期结果
exec msdb.dbo.rds_tlog_backup_copy_to_S3 @db_name = 'testdb1', @backup_file_start_time='2022-08-23 00:00:00', @backup_file_end_time='2022-08-30 00:00:00';

复制最近七天且在提供的 backup_file_start_timebackup_file_end_time 范围之间存在的事务日志备份。在此示例中,存储过程将复制在“2022-08-23 00:00:00”与“2022-08-30 00:00:00”之间生成的事务日志备份。

exec msdb.dbo.rds_tlog_backup_copy_to_S3 @db_name = 'testdb1', @backup_file_start_time='2022-08-23 00:00:00';

复制最近七天的事务日志备份,并从提供的 backup_file_start_time 开始。在此示例中,存储过程将复制从“2022-08-23 00:00:00”开始的事务日志备份,直到最新的事务日志备份。

exec msdb.dbo.rds_tlog_backup_copy_to_S3 @db_name = 'testdb1', @backup_file_end_time='2022-08-30 00:00:00';

复制最近七天的事务日志备份,直至提供的 backup_file_end_time。在此示例中,存储过程将复制从“2022-08-23 00:00:00”到“2022-08-30 00:00:00”的事务日志备份。

exec msdb.dbo.rds_tlog_backup_copy_to_S3 @db_name='testdb1', @starting_lsn =1490000000040007, @ending_lsn = 1490000000050009;

复制最近七天内可用且介于提供的 starting_lsnending_lsn 范围之间的事务日志备份。在此示例中,存储过程将复制最近七天且 LSN 范围介于 1490000000040007 到 1490000000050009 之间的事务日志备份。

exec msdb.dbo.rds_tlog_backup_copy_to_S3 @db_name='testdb1', @starting_lsn =1490000000040007;

复制最近七天内可用的事务日志备份,从提供的 starting_lsn 开始。在此示例中,存储过程将复制从 LSN 1490000000040007 开始的事务日志备份,直至最新的事务日志备份。

exec msdb.dbo.rds_tlog_backup_copy_to_S3 @db_name='testdb1', @ending_lsn =1490000000050009;

复制最近七天内可用的事务日志备份,直到提供的 ending_lsn。在本例中,存储过程将复制从最近七天开始直至 lsn 1490000000050009 的事务日志备份。

exec msdb.dbo.rds_tlog_backup_copy_to_S3 @db_name='testdb1', @rds_backup_starting_seq_id= 2000, @rds_backup_ending_seq_id= 5000;

复制最近七天内可用且在提供的范围 rds_backup_starting_seq_idrds_backup_ending_seq_id 之间存在的事务日志备份。在本例中,存储过程将复制从最近七天开始且介于提供的 rds 备份序列 id 范围(从 seq_id 2000 到 seq_id5000)内的事务日志备份。

exec msdb.dbo.rds_tlog_backup_copy_to_S3 @db_name='testdb1', @rds_backup_starting_seq_id= 2000;

复制最近七天内可用的事务日志备份,从提供的 rds_backup_starting_seq_id 开始。在此示例中,存储过程将复制从 seq_id 2000 开始的事务日志备份,直到最新的事务日志备份。

exec msdb.dbo.rds_tlog_backup_copy_to_S3 @db_name='testdb1', @rds_backup_ending_seq_id= 5000;

复制最近七天内可用的事务日志备份,直到提供的 rds_backup_ending_seq_id。在此示例中,存储过程将复制从最近七天开始的事务日志备份,直到 seq_id 5000。

exec msdb.dbo.rds_tlog_backup_copy_to_S3 @db_name='testdb1', @rds_backup_starting_seq_id= 2000; @rds_backup_ending_seq_id= 2000;

使用提供的 rds_backup_starting_seq_id 复制单个事务日志备份(如果在过去七天内可用)。在此示例中,存储过程将复制 seq_id 为 2000 的单个事务日志备份,前提是该备份在过去七天内存在。

验证事务日志备份日志链

为访问事务日志备份而配置的数据库必须启用自动备份保留。自动备份保留将数据库实例上的数据库设置为 FULL 恢复模式。要支持数据库的时间点还原,请避免更改数据库恢复模式,因为这可能会导致日志链断开。我们建议将数据库设置为 FULL 恢复模式。

要在复制事务日志备份之前手动验证日志链,请调用 rds_fn_list_tlog_backup_metadata 函数并查看 is_log_chain_broken 列中的值。值为“1”表示当前日志备份和前一个日志备份之间的日志链已断开。

以下示例显示了 rds_fn_list_tlog_backup_metadata 存储过程的输出中存在中断的日志链。

rds_fn_list_tlog_backup_metadata 中的输出显示断开的日志链。

在正常日志链中,给定 rds_sequence_id 的 first_lsn 的日志序列号(LSN)值应与前一个 rds_sequence_id 中的 last_lsn 值相匹配。在图中,rds_sequence_id 为 45 的 first_lsn 值为 90987,这与前一个 rds_seque_id 为 44 的 last_lsn 值 90985 不匹配。

有关 SQL Server 事务日志架构和日志序列号的更多信息,请参阅 Microsoft SQL Server 文档中的事务日志逻辑架构