【AICon】 如何构建高效的 RAG 系统?RAG 技术在实际应用中遇到的挑战及应对策略?>>> 了解详情
写点什么

使用 SQLServer 备份文件.bak 还原至 RDS

  • 2019-09-27
  • 本文字数:2861 字

    阅读完需:约 9 分钟

使用 SQLServer 备份文件.bak 还原至 RDS

任何形式的数据损坏都有可能导致数据的丢失,宕机。对于 DBA 来讲是一个不小的打击。云中托管的数据库无论从数据库的管理、高可用或灾难恢复上来讲都是 DBA 的一个很好的选择。如何利用传统的 SQL Server 的备份文件还原到 AWS 托管的 SQL Server 数据库是用户们普遍关心的问题。下面我将介绍:如何使用备份文件将 MS_SQL Server 还原数据库到 RDS SQL Server.


步骤:


1.创建一台管理主机


2.创建 RDS SQL Server


3.修改安全组和关联选项组


4.将已经备份的数据上传到 S3 上


5.创建并配置选项组


6.使用 SSMS 将 S3 上的.bak 还原到 RDS 上

步骤一:创建一台管理主机

创建 EC2 虚拟机做为管理主机,目的是出于安全角度考虑使用跳板机连接数据库,而不是将 SQL Server 的 Endpoint 暴露在公网上。


创建一台 EC2 虚拟机并安装 SQL Server Management Studio,不再赘述。


SSMS 工具下载地址:[https://docs.microsoft.com/zh-tw/sql/ssms/download-sql-server-management-studio-ssms?view=sql-server-2017](

步骤二:创建 RDS SQL Server

创建一台 SQL Server Standard Edition,


可以选择生产(Production)或开发/测试(Dev/Test)


生产环境也就是多可用区部署:


多可用区部署为数据库实例提供了更高的可用性、数据持久性和容错能力。在进行计划的数据维护或发生未计划的服务中断时,Amazon RDS 会自动故障转移到最新的辅助数据库实例。


开发和测试环境就是单实例,会有单点故障。


步骤三:修改安全组和关联选项组

修改 RDS 安全组,目的是让刚创建的管理主机与 RDS 建立连接,如下图:



在 RDS 的安全组中的 Source 修改成 EC2 的安全组 ID:



返回到管理主机上,使用 SSMS 测试连通性



连接成功


步骤四:将已经备份的数据上传到 S3 上

一般而言,如果你的文件大小达到 100MB,你应该考虑使用分段上传。使用 AWS 的 s3 cp 命令和 s3 sync 等命令可以自动对要上传的大文件分片,然后上传。如果你对命令不熟悉可以参考这篇 blog 中的 5. 使用 AWS CLI 的自动分段上传https://aws.amazon.com/cn/blogs/china/uploading-using-s3/

步骤五:创建并配置选项组

下面就是要创建和配置选项组,目的是添加 S3 的路径将 S3 上的.bak 文件还原到 RDS 上。


在创建选项组之前要确认一下 RDS 的 Engine 版本号,先记下来。



创建 Option Group



这里可能会问到,我的 RDS SQL server 对应 Engine 是什么?如下图:



我的 RDS 用的是 SQL Server Standard Edition 所用选择 sqlserver-se


根据前面 RDS instance 的截图,Major engine version 就是 14.00。



Add Option:



选择 Add option,选项如下图:



修改 RDS 实例并关联选项组



Change Option Group 为我们创建的 Option Group




modifying 这个状态大概会持续 30-60 秒,刷新一下


步骤六:使用 SSMS 将 S3 上的 bak 还原到 RDS 上

回到 SSMS 工具的 EC2 管理主机上执行还原脚本:


例 未加密


exec msdb.dbo.rds_restore_database
@restore_db_name='database_name',
@s3_arn_to_restore_from='arn:aws:s3:::bucket_name/file_name_and_extension';
复制代码


例 带加密


exec msdb.dbo.rds_restore_database
@restore_db_name='database_name',
@s3_arn_to_restore_from='arn:aws:s3:::bucket_name/file_name_and_extension',
@kms_master_key_arn='arn:aws:kms:region:account-id:key/key-id';
复制代码


这里执行未加密的脚本:


exec msdb.dbo.rds_restore_database
@restore_db_name='adventurerestore',
@s3_arn_to_restore_from='arn:aws:s3:::sqlbakfilestest/AdventureWorks2017.bak';
复制代码


执行脚本,开始还原。



执行 exec msdb.dbo.rds_task_status;查看任务状态 complete 100 代表完成。



刷新数据库 还原的 adventurestore 已经建立好。


验证数据:


Trouble Shooting:

以下是使用本地备份和还原时可能会遇到的问题。


问题问题排查建议
Access Denied备份或恢复流程无法访问备份文件。这通常由类似于以下的问题导致: 1. 引用不正确存储桶。使用不正确的格式引用存储桶。引用文件名但未使用 ARN。 2. 存储桶文件的权限不正确。例如,如果文件由正在尝试访问它的其他账户创建,请添加正确的权限。3. IAM 策略不正确或不完整。您的 IAM 角色必须包含所有的必要元素,例如,包括正确的版本。导入和导出 SQL Server 数据库中重点介绍了这些内容。
BACKUP DATABASE WITH COMPRESSION is not supported on <edition_name> Edition仅 Microsoft SQL Server Enterprise Edition 和 Standard Edition 支持压缩备份文件。有关更多信息,请参阅 压缩备份文件
Database <database_name> cannot be restored because there is already an existing database with the same family_guid on the instance您无法将一个备份文件还原到已用于创建该备份文件的同一数据库实例。而是应将该备份文件还原到新的数据库实例。您也无法将同一备份文件多次还原到一个数据库实例。也就是说,您无法将备份文件还原到已包含您正在还原的数据库的数据库实例。而是应将该备份文件还原到新的数据库实例。
Keydoes not exist您已尝试还原一个加密备份,但未提供有效的加密密钥。检查您的加密密钥并重试。有关更多信息,请参阅 还原数据库
Please specify a bucket that is in the same region as RDS instance您无法备份到与您的 Amazon RDS 数据库实例不同的 AWS 区域中的 Amazon S3 存储桶或从中进行还原。您可以使用 Amazon S3 复制将备份文件复制到正确的区域。有关更多信息,请参阅 Amazon S3 文档中的跨区域复制
The specified bucket does not exist验证您使用正确格式为存储桶和文件提供了正确的 ARN。有关更多信息,请参阅 使用本机备份和还原

总结:

我们在迁移和还原的过程中就可以发现,AWS 对于服务的访问,数据库的连接,网络端口等等都会有非常详细的安全准则。数据库的安全是云中数据安全的非常重要的一部分。另外,对于数据库的高可用和安全,我们都可以通过这个博客了解。除此之外,Amazon Relational Database Service (Amazon RDS) 让用户能够在云中更轻松地设置、操作和扩展关系数据库。支持您已熟悉的数据库产品:MySQL、MariaDB、PostgreSQL、Oracle 和 Microsoft SQL Server。最后,打个广告,具有高性能并且与 MySQL 和 PostgreSQL 兼容的完全托管的关系数据库引擎——Aurora 不仅具有商用数据库的速度和可靠性,同时还具有开源数据库的简单性和成本效益。您可以通过 DMS 工具来进行同构或异构数据库的迁移。https://docs.aws.amazon.com/zh_cn/AmazonRDS/latest/AuroraUserGuide/CHAP_AuroraOverview.html


作者介绍:


李强


AWS 解决方案架构师,负责基于 AWS 的云计算方案架构的咨询和设计,同时致力于 AWS 云服务在国内的应用和推广,在物联网和微软的技术栈有着广泛的设计和实践经验。在加入 AWS 之前,曾在东芝中国负责系统开发和运维工作,在微软中国负责中小企业的技术咨询和方案设计工作。


本文转载自 AWS 技术博客。


原文链接:


https://amazonaws-china.com/cn/blogs/china/use-sql-server-copyfile-bak-rds/


2019-09-27 14:361011
用户头像

发布了 1804 篇内容, 共 87.6 次阅读, 收获喜欢 73 次。

关注

评论

发布
暂无评论
发现更多内容

Google官方关闭binary后,Android工程师怎么办?

Changing Lin

5月日更

太简单了!这套Java异常处理的总结,80%的人都没看过

牛哄哄的java大师

Java

自研消息队列架构设计文档

菠萝吹雪—Code

架构实战营

展开说说,Spring Bean IOC、AOP 循环依赖

小傅哥

Java spring 小傅哥 ioc 循环依赖

一次过透气浆、印一次透气浆

C13713145387

透气胶浆 一次过透气浆

牛仔底色保护浆(喷砂工艺)

C13713145387

牛仔底色保护浆

Golang实现文件复制的技巧

liuzhen007

Go 语言 5月日更

模块三作业:消息队列详细设计文档

薛定谔的指南针

架构实战营

采取有效云网络安全策略的5个基本步骤

浪潮云

云计算

进击的速溶咖啡:当中国AI开始玩工业化

脑极体

网络攻防学习笔记 Day5

穿过生命散发芬芳

5月日更 网络攻防

postgresql数据库 timescaledb 时序库 超级表 块的压缩(compress_chunk()的应用)

Yang

数据库 postgresql

OAuth 2.0 与 OIDC

Zhang

OAuth 2.0 OIDC

Java中用户线程和守护线程区别这么大?

王磊

Java 并发编程 多线程 5月日更

MySQL数据迁移那些事儿

Simon

MySQL 数据迁移

区块链与物联网融合发展都会有哪些机遇与挑战

CECBC

区块链

入门到精通!阿里码农熬了2晚整理的Java工具,真香

飞飞JAva

Java java工具类

Spring-技术专题-设计模式和研究分析

洛神灬殇

spring 设计模式 原理分析 5月日更

打破思维定式(二)

Changing Lin

5月日更

4.2 Go语言从入门到精通:延迟函数 defer

xcbeyond

defer Go 语言 5月日更

爽面弹力胶浆、哑面弹力胶浆

C13713145387

爽面弹力胶浆

NumPy之:结构化数组详解

程序那些事

Python 数据分析 Numpy 程序那些事

融云亮相 CDEC2021 上海站 全场景通信能力赋能企业数字升级

融云 RongCloud

哑面爽滑肤感胶浆

C13713145387

哑面爽滑肤感胶浆

算法训练营 - 学习笔记 - 第五周

心在飞

Vue Router 10 条高级技巧

Thrash

技巧

架构实战营 模块二 作业

Pitt

架构实战营

建筑行业全周期区块链产融平台

CECBC

建筑行业

超级全面的测试用例设计,你确定不来看一看?

程序员阿沐

软件测试 测试用例 测试工程师

数字资产的发行是全球都无法阻挡的大趋势!

CECBC

数字资产

哑面防水尼龙胶浆Nylon printing paste

C13713145387

哑面防水尼龙胶浆

使用 SQLServer 备份文件.bak 还原至 RDS_语言 & 开发_亚马逊云科技 (Amazon Web Services)_InfoQ精选文章