如何备份Amazon RDS MS SQL Server数据库实例并在本地还原

时间:2014-06-25 20:10:24

标签: sql-server amazon-web-services amazon-rds

可以创建在Amazon RDS实例上运行的数据库的备份,并使用标准任务 - >在本地计算机上恢复它。备份和任务 - >还原Microsoft SQL Server Management Studio中的功能?如果是这样,你怎么做呢?

请注意,此问题与您是否可以批量复制数据或生成脚本无关,但是您是否可以创建可以使用SSMS还原功能还原的真正的.BAK数据库备份。

4 个答案:

答案 0 :(得分:9)

您目前无法使用amazon rds创建.bak文件。我处理这个问题的方法是使用天蓝色的迁移向导,它恰好也适用于amazon rds。

我使用SQL Server启动EC2实例并安装了迁移向导。然后,我使用迁移工具将RDS数据库复制到ec2实例。

完成后,您可以从EC2实例上运行的SQL Server创建.bak文件。它很痛,但它很有效。如果您有带宽或数据库很小,您可以直接在目标计算机上使用迁移工具。

http://sqlazuremw.codeplex.com

答案 1 :(得分:6)

您现在可以在S3中获取bak文件。以下是说明:http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/SQLServer.Procedural.Importing.html

这是一个生成备份的快速代码段:

exec msdb.dbo.rds_backup_database 
    @source_db_name='database_name', 
    @s3_arn_to_backup_to='arn:aws:s3:::bucket_name/file_name_and_extension',
    @overwrite_S3_backup_file=1;

在此功能出现之前,我可以得到一个bacpac,在我的情况下效果很好。在SSMS中,右键单击数据库>任务>导出数据层应用程序。

我能够将其导入我的服务器而不会出现任何问题。

答案 2 :(得分:2)

您可以从AWS RDS本地创建备份。 使用SQL Management Studio,右键单击数据库>任务>导出数据

您只需选择正确的"数据源",例如" SQL Server Native 11"两者,来源和目的地。

AWS文档页面中对此进行了详细描述: http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/SQLServer.Procedural.Importing.html#SQLServer.Procedural.Exporting.SSIEW

部分:" SQL Server导入和导出向导"

答案 3 :(得分:0)

您不仅可以使用本机SQL Server备份,还可以使用任何其他SQL Server功能进行数据迁移。我将重点介绍以下解决您案件的方法。

SQL Server本机备份

1。本地sql服务器备份\还原

RDS Sql Server不支持T-SQL CREATE DATABASE命令。但是,您可以使用存储过程在S3上进行本机备份

EXEC [msdb].[dbo].[rds_backup_database]
@source_db_name = '<database name>',
@S3_arn_to_backup_to = N'arn:aws:s3:::<bucket name>/sample.backup'

为使此存储过程正常工作,您需要进行一些预配置。更多详细信息,请参见here

从速度的角度来看-创建本机备份将是最佳选择,但是这种方法使用起来不是很方便。启动后,存储过程不会直接创建备份,而是会创建需要监视的“任务”。只有成功完成此任务后,您才能将备份从S3复制到本地服务器。

要将备份文件还原到本地服务器,请使用SSMS:数据库->右键单击->还原数据库

2。导出\导入数据层应用程序

导出\导入bacpac是一种用于将数据库从一台服务器迁移到另一台服务器的机制。您可以使用SSMS或sqlpackage实用程序来导出\导入数据库。

  • 通过SSMS

    1. 打开SSMS
    2. 右键单击数据库
    3. 任务->导出数据层应用程序
  • 通过sqlpackage.exe

    sqlpackage.exe / action:导出/ SourceServerName:/ SourceDatabaseName:/ SourceUser:admin / SourcePassword:/ TargetFile:<目标.bacpac的补丁> / p:ExtractAllTableData = True

导出数据层应用程序不保证交易数据的一致性。为了使导出的文件在事务上保持一致,您需要确保在数据导出期间没有写操作。

要将.bacpac文件还原到本地服务器,请使用SSMS:数据库->右键单击->导入数据层应用程序

有关这两个选项的更多详细信息,请参见here

3。生成T-SQL脚本

如果数据库不是很大,则可以创建一个T-SQL脚本,其中包含有关还原数据库的说明。

  1. 打开SSMS
  2. 右键单击数据库
  3. 任务->生成脚本
  4. 在“设置脚本选项”步骤中,转到“高级”
  5. 将要编写脚本的数据类型设置为“架构和数据”值

创建t-sql脚本是复制数据库的最慢但也是最灵活的方法。在高级设置中,您可以选择许多用于脚本创建的选项。

与导出数据层应用程序一样,有必要确保在导出过程中没有对数据库的写操作。

要还原到本地服务器,请将文件拖到SSMS中,然后按F5。但是,如果文件太大,请使用sqlcmd实用程序