RDS SQL Server迁移至本地SQL Server

本文介绍如何将阿里云RDS SQL Server的数据迁移到本地自建SQL Server数据库。您需要先在RDS控制台下载全量和增量的物理备份文件,再上传至自建SQL Server数据库后解压并恢复即可。

前提条件

RDS SQL Server实例中已存在备份完成的物理备份文件

说明

您也可通过数据传输工具DTS将云上物理备份文件或快照备份文件迁移至自建SQL Server(源端配置RDS SQL Server、目标端配置自建SQL Server)。

操作步骤

  1. 下载RDS SQL Server的全量和增量物理备份文件

    如果目标服务器可以访问源实例,您也可以使用wget "URL"下载备份文件。其中URL备份文件下载地址

  2. 将下载的备份文件自行上传至自建SQL Server所在的服务器,并解压全量物理备份文件和增量物理备份文件。

    说明

    由于解压后的全量和增量文件名相同,建议按数据库名+备份方式+日期的规则进行重命名,方便后续维护,例如:

    • testdb_datafull_201901071320.bakdatafull表示全量备份。

    • testdb_datadiff_201901071330.bakdatadiff表示增量备份。

  3. 获取解压后的全量备份文件和增量备份文件,本例以如下路径为例:

    • 全量备份文件存放路径:/tmp/testdb_datafull_201901071320.bak

    • 增量备份文件存放路径:/tmp/testdb_datadiff_201901071330.bak

  4. 登录本地自建SQL Server数据库,执行以下命令查询备份文件中的逻辑文件名:

    RESTORE FILELISTONLY FROM DISK='/tmp/testdb_datafull_201901071320.bak';
    GO

    系统显示如下,红框中为数据文件逻辑名testdb和日志文件逻辑名testdb_log。

    image.png

  5. 从全量备份文件中恢复数据库,并指定数据文件和日志文件的存储位置。

    重要

    如果只需恢复全量备份数据,执行完本步骤后请直接跳至步骤7。如果还需要恢复增量备份数据,请执行步骤6。

    RESTORE DATABASE testdb FROM DISK = '/tmp/testdb_datafull_201901071320.bak' WITH REPLACE, NORECOVERY, STATS = 10, 
    MOVE 'testdb' TO '/var/opt/mssql/data/testdb.mdf', 
    MOVE 'testdb_log' TO '/var/opt/mssql/data/testdb_log.ldf';
    GO

    执行完成后,数据库testdb将显示正在还原状态。

    说明
    • /var/opt/mssql/data/testdb.mdf为数据文件地址,testdb.mdf为数据文件逻辑名。

    • /var/opt/mssql/data/testdb_log.ldf为日志文件地址,testdb_log.ldf为日志文件逻辑名。

    您可在目标数据库的属性 > 文件中可以查看到数据文件和日志文件的地址。目的数据库文件路径

  6. (可选)从增量备份文件中恢复数据库,并指定数据文件和日志文件的存储位置。

    RESTORE DATABASE testdb FROM DISK = '/tmp/testdb_datadiff_201901071330.bak' WITH REPLACE, NORECOVERY, STATS = 10, 
    MOVE 'testdb' TO '/var/opt/mssql/data/testdb.mdf', 
    MOVE 'testdb_log' TO '/var/opt/mssql/data/testdb_log.ldf';
    GO

    执行完成后,数据库testdb将显示正在还原状态。

  7. 执行以下命令,将数据库恢复为可用状态。

    RESTORE DATABASE testdb WITH RECOVERY;
    GO