【技术教学】如何高效迁移SQL Server全量+增量迁移

2023-03-17 16:00

SQL Server 是一个值得信赖的老牌数据库系统,作为当代数据业务系统中最重要的基础软件之一,数据库的安全可控及风险抵抗能力显得尤为重要。本文着眼于数据库迁移中的全量数据复制,与大家一起进行深入探索。

全量数据复制一般是数据迁移重要的一环,简言之,它所实现的功能就是从源库中导出全部需要的数据,然后再导入到目标库中。下面可以跟着我们的技术步骤一起操作!

创建S3桶

在S3控制台点击创建存储桶

保证名称不重复,选择与数据库同区域的位置,其他选项保持默认即可。


创建访问S3桶的IAM角色

创建如下策略,将bucket_name替换为我们上一步创建的桶名称

  • {

        "Version": "2012-10-17",

        "Statement":

        [

            {

            "Effect": "Allow",

            "Action":

                [

                    "s3:ListBucket",

                    "s3:GetBucketLocation"

                ],

            "Resource": "arn:aws:s3:::bucket_name"

            },

            {

            "Effect": "Allow",

            "Action":

                [

                    "s3:GetObjectMetaData",

                    "s3:GetObject",

                    "s3:PutObject",

                    "s3:ListMultipartUploadParts",

                    "s3:AbortMultipartUpload"

                ],

            "Resource": "arn:aws:s3:::bucket_name/*"

            }

        ]

    }

    创建IAM角色,选择自定义信任策略,将下面策略粘贴进去

    {

        "Version": "2012-10-17",

        "Statement": [

            {

                "Effect": "Allow",

                "Principal": {

                    "Service": "rds.amazonaws.com"

                },

                "Action": "sts:AssumeRole"

            }

        ]

    }

向上滑动阅览

添加我们上一步创建的策略

点击下一步,取个名称即可


开启SQL Server的备份还原功能

找到数据库当前使用的选项组,点击添加选项,选项名称选择SQLSERVER_BACKUP_RESTORE,角色选择我们上一步创建的,点击立即应用


数据同步

1

当前数据展示

2

拍摄快照 / 备份数据之前,先做快照!

3

全量备份

用法:

exec msdb.dbo.rds_backup_database

@source_db_name='database_name',

@s3_arn_to_backup_to='arn:aws:s3:::bucket_name/file_name.extension',

[@kms_master_key_arn='arn:aws:kms:region:account-id:key/key-id'],

[@overwrite_s3_backup_file=0|1],

[@type='DIFFERENTIAL|FULL'],

[@number_of_files=n];

参数介绍:

https://docs.aws.amazon.com/zh_cn/AmazonRDS/latest/UserGuide/SQLServer.Procedural.Importing.html#SQLServer.Procedural.Importing.Native.Using.Backup

4

将全量的数据导入到新的库里

数据展示:

命令:

exec msdb.dbo.rds_restore_database

@restore_db_name='database_name',

@s3_arn_to_restore_from='arn:aws:s3:::bucket_name/file_name.extension',

@with_norecovery=0|1,

[@kms_master_key_arn='arn:aws:kms:region:account-id:key/key-id'],

[@type='DIFFERENTIAL|FULL'];

参数介绍:

https://docs.aws.amazon.com/zh_cn/AmazonRDS/latest/UserGuide/SQLServer.Procedural.Importing.html#SQLServer.Procedural.Importing.Native.Using

注意with_norecovery要设置为1,否则无法进行下面的增量同步状态!!!

记住task_id,运行以下命令可查看还原状态:

exec msdb.dbo.rds_task_status

[@db_name='database_name'],

[@task_id=ID_number];

@db_name– 要显示其任务状态的数据库的名称。

@task_id– 要显示其任务状态的任务的 ID。

此时处于正在还原状态,为正常情况。

5

模拟增量

6

将增量数据导出来

前提:此时需将数据库的所有连接断开,可通过修改安全组关闭端口来实现

exec msdb.dbo.rds_backup_database

@source_db_name='mydatabase',

@s3_arn_to_backup_to='arn:aws:s3:::mybucket/backup1.bak',

@overwrite_s3_backup_file=1,

@type='DIFFERENTIAL';

同样可根据task_id查看任务状态

7

将增量数据导入到新库

exec msdb.dbo.rds_restore_database

@restore_db_name='mydatabase',

@s3_arn_to_restore_from='arn:aws:s3:::mybucket/backup1.bak',

@type='DIFFERENTIAL',

@with_norecovery=1;

查看任务状态

8

完成数据库还原

exec msdb.dbo.rds_finish_restore

@db_name='database_name';

查看任务状态

此时数据库的状态已变为正常


9

检查数据


云与应用现代化
——
扫描关注微信公众号
获取更多云端资讯
联系我们
——

模板表单-2(1)

  • 姓名*

  • 电话*

  • 邮箱*

  • 公司*

  • 职称*

  • 地址*

  • 需求*