• Dynamodb 备份策略


    ㅤㅤㅤ
    ㅤㅤㅤ
    ㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤ(成功的唯一秘诀——坚持最终一分钟。——柏拉图)
    ㅤㅤㅤ
    ㅤㅤㅤ
    ㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤ在这里插入图片描述

    备份的作用
    • 保证数据安全与完整
      • 为了保证数据在被人为失误、操作不当、蓄意等情况下删除或损坏后,能及时、有效的进行恢复并不会很大程度上影响到业务运行。
    • 为业务提供不间断服务
      ○ 实际生产环境对数据库的要求,首先就是具备7×24×365不间断服务的能力,这也是一定要备份数据库的其中原因之一
    备份的应用场景
    • 数据丢失应用场景:
      • 人为操作失误造成某些数据被误操作
      • 软件 BUG 造成部分数据或全部数据丢失
      • 硬件故障造成数据库部分数据或全部数据丢失
      • 软件漏洞造成数据被恶意篡改
      • 数据库或者数据迁移异常
      • 自然灾害造成数据库硬件故障
    dynamodb和aws备份区别
    • dynamodb备份跨区,复制,标签,冷存储选项
    • api和cli除了以上不支持外,还不支持备份库,保留期
    AWS云控制台备份
    • 按需备份(一次性备份)
      • 备份机制
      • 备份设置选项
        • 默认设置
          • 开启后在一小时内开始备份
        • 自定义设置
          • 自定义勾选开始备份的时间,备份开始的时间单位为小时,可以设置数据迁移到冷存储的策略,也可以指定数据的保留期限
      • 该备份机制只能够备份一次,无法持续备份
      • 备份执行期间不能暂停,取消备份操作,不能删除备份,禁用备份源
      • aws dynamodb热存储和冷存储的区别以及应用场景
        • 热存储
          • 默认所有的数据都存储在热存储区中,它用于索引和更新,同时提供对数据的快速访问。如果想要低延迟和快速访问数据,热存储是最佳的选择
        • 冷存储
          • 随着业务的发展,数据库中有很多访问频率较低的数据,或者可以容忍更高的延迟,那么这些数据放在冷存储中的收益更高,能够大幅度降低存储成本
    • 备份复制
      • 在aws中点击备份复制,默认继承备份源的配置,需要注意的是过期时间也会继承,所以如果需要永不过期,那么备份源的配置也必须是永不过期的
    • 还原方案
      • 选择一个已备份好的表进行还原,还原的表名不能和原表明相同且必须是唯一值,否则还原失败
    • 删除备份
      • 在控制台中删除,删除后不可恢复
    • 计划备份
      • 备份机制
        • 包含了备份要求,备份时间,备份保留规则和生命周期规则
        • 备份设置选项
        • 从aws中提供的模板进行选择,这些模板有已经配置好的规则,比如
        • 每日备份一次,保留35天
        • 每日,每月备份一次,保留一年
        • 每日,每周,每月备份一次,保留五年
        • 每日,每周,每月备份一次,保留七年
        • 其中期限和冷存储可以自由选择时间,也可以选择永久保存
      • 创建新计划,不使用模板
        • 自定义配置计划策略
          • 备份频率
            • 小时,日,周,月,自定义表达式等
          • 连续备份
            • 使用连续备份,可以通过选择还原时间(精确到秒)来执行时间点还原 (PITR)。最多可以将连续备份存储 35 天。
            • 结合备份频率,可以选择每天制作一个连续备份并设置保留期
          • 备份时间段 时间单位为UTC,北京时间需要加8小时
            • 包含备份的开始和持续时间,默认是从凌晨5点开始,持续8个小时,也可以自由选择备份时段
          • 冷存储
            • 只有保留期超过90天的才可以设置冷存储策略,冷存储适合存储访问频率低,对性能无要求的数据。存储的费用也更低
          • 保留期
            • 备份存储时长,到期后,aws会自动删除备份,最少保留一天,最多保留100年。备份周期以日,周,月,年为单位,也可以选择永久保存
      • 使用JSON配置备份计划
        • 使用json配置文件的形式生成备份计划,备份机制和上面的相同
          • 目前json的数据格式没找到文档,但aws提供了从其他备份计划中生成JSON的入口
    // ruleName 规则名称
    // scheduleExpression 计划表达式 cron(0 5/1 ? * * *) 在每小时的第 0 分钟, 每隔 1 小时, 在上午 05:00 UTC开始
    // startWindowMinutes 开始备份时间 8小时后
    // completionWindowMinutes 完成备份时间 7小时
    // lifecycle 生命周期
    // toDeletedAfterDays 多少天后删除
    {
      "templateRules": [
        {
          "ruleName": "test_backup_no_schedule_rule_1",
          "scheduleExpression": "cron(0 5/1 ? * * *)",
          "startWindowMinutes": 480,
          "completionWindowMinutes": 10080,
          "lifecycle": {
            "toDeletedAfterDays": 1
            }
          }
      ]
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    Dynamodb备份
    Dynamodb-cli备份
    • 备份机制
      • 和按需备份机制相同,只不过是使用aws的cli脚本来完成备份操作

      • aws本地环境依赖~/.aws/credentials路径的配置文件,默认为default

        aws dynamodb create-backup --table-name Music \
         --backup-name MusicBackup
        
        • 1
        • 2
    按时间点备份
    • 备份机制
      • 时间点恢复以每秒的精细度自动备份表数据,它有助于保护 DynamoDB 表免遭意外写入或删除操作。使用时间点恢复,您不必担心创建、维护或计划按需备份。例如,假设测试脚本意外写入生产 DynamoDB 表中。使用时间点恢复,您可以将该表还原到最近 35 天中的任何时间点
      • 需要在aws所属表-备份-时间点恢复-编辑-开启
      • 还原的时间点最早为开启的时间节点。如果禁用了表再重新启动,则会重置这个表的启动时间
    Dynamodb api备份
    • 备份机制
    • dynamodb api不支持冷存储,备份时长的设置
      • 默认不进行冷存储,备份时长为永久
    • 使用aws提供的npm工具包来完成对dynamodb的备份操作
      • 示例代码

        // aws 时间表达式文档 https://docs.aws.amazon.com/zh_cn/AmazonCloudWatch/latest/events/ScheduledEvents.html
        // serverless 定时器配置文档 https://www.serverless.com/framework/docs/providers/aws/events/schedule
        // 初始化aws云连接
        const AWS = require('aws-sdk');
        const dynamodb = new AWS.DynamoDB({
            accessKeyId: 'xxx',
            secretAccessKey: 'xxxx',
        });
        
        const method = async () => {
            // 创建备份
            const { BackupArn } = await dynamodb.createBackup({
                BackupName: 'shadow-status-table-local-202210141214',
                TableName: 'shadow-status-table-local'
            }).promise();
            // 删除备份
            await dynamodb.deleteBackup({
                BackupArn
            }).promise();
            // 备份还原
            await dynamodb.restoreTableFromBackup({
                TargetTableName: 'shadow-status-table-local-code',
                BackupArn
            }).promise();
            // 开启/禁用表时间点备份
            const enableTimeBackup = false;
            await dynamodb.updateContinuousBackups({
                PointInTimeRecoverySpecification: {
                    PointInTimeRecoveryEnabled: enableTimeBackup
                },
                TableName: 'shadow-status-table-local-code'
            }).promise();
        };
        method();
        
        • 1
        • 2
        • 3
        • 4
        • 5
        • 6
        • 7
        • 8
        • 9
        • 10
        • 11
        • 12
        • 13
        • 14
        • 15
        • 16
        • 17
        • 18
        • 19
        • 20
        • 21
        • 22
        • 23
        • 24
        • 25
        • 26
        • 27
        • 28
        • 29
        • 30
        • 31
        • 32
        • 33
        • 34
    AWS 备份的最佳实践
  • 相关阅读:
    Google Earth Engine(GEE)——不同决策树数量分类精度对比分析(随机森林分类为例)
    java-net-php-python-jspm大学生作业管理系统计算机毕业设计程序
    量变引起质变:安卓改多了,就是自己的OS
    讲解一下docker和docker常用命令
    JetLinks设备接入的认识与理解【woodwhales.cn】
    c++后端开发书籍推荐
    node+pm2安装部署
    【MySql】12- 实践篇(十)
    docker安装(Elasticsearch、kibana、IK分词器)8.4.3
    并发编程篇
  • 原文地址:https://blog.csdn.net/qq_42427109/article/details/127793689