AWS DynamoDB 的数据备份和恢复至关重要,能有效防止数据丢失。主要有以下几种方法:
备份 (On-Demand Backup):
恢复 (Restore):
操作步骤示例(AWS CLI):
创建备份:
aws dynamodb create-backup --table-name YourTableName --backup-name YourBackupName
恢复备份:
aws dynamodb restore-table-from-backup --backup-arn arn:aws:dynamodb:your-region:your-account-id:backup/YourBackupName --target-table-name YourNewTableName
自动备份:
恢复操作:
操作步骤示例(AWS CLI):
启用 PITR:
aws dynamodb update-table --table-name YourTableName --point-in-time-recovery-specification PointInTimeRecoveryEnabled=true
恢复到指定时间点:
aws dynamodb restore-table-to-point-in-time --source-table-name YourTableName --target-table-name YourNewTableName --restore-date-time "2024-01-01T12:00:00Z"
多区域同步:
适用场景:
操作步骤示例(AWS CLI):
创建 Global Table:
aws dynamodb create-global-table --global-table-name YourGlobalTableName --replication-group '[{"RegionName": "us-east-1"}, {"RegionName": "us-west-2"}]'
数据导出与导入:
适用场景:
操作步骤:
灵活控制:
适用场景:
示例代码(Python):
import boto3
import json
from datetime import datetime
def backup_dynamodb_table(table_name, bucket_name):
dynamodb = boto3.resource('dynamodb')
table = dynamodb.Table(table_name)
s3 = boto3.resource('s3')
bucket = s3.Bucket(bucket_name)
timestamp = datetime.now().strftime('%Y%m%d%H%M%S')
file_name = f'{table_name}_{timestamp}.json'
with open(file_name, 'w') as f:
items = []
response = table.scan()
items.extend(response['Items'])
while 'LastEvaluatedKey' in response:
response = table.scan(ExclusiveStartKey=response['LastEvaluatedKey'])
items.extend(response['Items'])
json.dump(items, f, indent=4)
bucket.upload_file(file_name, file_name)
print(f'Backup of {table_name} completed and stored in S3 bucket {bucket_name}')
# 示例用法
backup_dynamodb_table('YourTableName', 'your-s3-bucket-name')
希望这些信息能帮助您更好地备份和恢复 DynamoDB 数据!👍