阿里云RDS for SQL Server使用的一些最佳实践
了解RDS的概念
这也是第一条,也是最重要的一条,在使用某项产品和服务之前,首先要了解该产品或服务的功能与限制,就像你买一个冰箱或洗衣机,通常也只有在阅读完说明书之后才能利用起来它们的所以功能,以及使用时的注意事项,RDS for SQL Server也是如此。
RDS for SQL Server与传统的自建机房提供SQL Server的主要不同就是用户所需负责数据库的模块多与少的问题,自建SQL Server与阿里云RDS for SQL Server所需负责的部分图1所示:
当然,便捷的代价除了成本之外,另外就是限制,这就类似于用一些基础的工具可以做各类工作,但专用的工具可以高效完成特定工作一样,RDS更类似于专用的工具,
限制带来的优势
限制的目的是由于这部分工作由阿里云统一去做了,数据库作为服务提供给使用者,因此使用者就没有数据库以下(操作系统、存储等)部分的权限,数据库作为服务提供有以下几点优势:
简单
最大的好处自然是简单,无需再关注SQL Server的安装、配置、监控、报警、备份、高可用等工作,这些工作往往是需要比较专业的人士进行长时间的付出才能建立一个完整的体系,由于数据库往往是整个系统的核心部分,这些工作如果运维人员的水平问题或误操作往往还会带来比较严重的后果。 而在阿里云下面,有一套完整的云体系负责所有这些工作,以简单直观的界面就能够将这些信息展示出来。如图2,图3所示。
标准化&最佳实践化
由阿里云负责数据库基础配置的运维可以使得数据库运维标准化,通常在SQL Server安装后都需要进行一些诸如:最大并行度、文件增长、tempdb个数、操作系统权限、磁盘IO分布等等很多参数的配置,这些参数在很多情况下会对SQL Server的性能与可用性产生影响,而很多企业并没有DBA或专业的数据库运维人员,因此往往不能正确配置这些参数。 而阿里云则可以通过标准化将这些参数在实例生成时就进行配置,这这些配置都是经过大量实践符合99%数据库的最佳实践,因此可以避免很多由于配置不当而产生的数据库问题。
高可用
目前为止,从高可用性角度来看,阿里云RDS For SQL Server分为两个版本,一个是双机版,该版本底层使用SQL Server镜像(Mirror)实现高可用,因此可以实现极高的可用性,即使出现硬件层面的故障,也能实现秒级的切换。 而对于单机版的SQL Server,高可用技术更像是虚拟化层面的漂移,当发生故障时,SQL Server从一台宿主机到另外的宿主机,因此这种情况下是分钟级。 可以根据业务类型的重要程度与成本的预算进行选择。但推荐尽量使用双机版。
利用阿里云提供的工具
RDS的一个优势是已经对一些常用的操作进行了封装,而这些操作如果手工完成通常会费时费力,而且容易出错。比如在数据库出现问题时将数据库还原到某一个时间点,如果是DBA手工操作则需要完整的备份体系存在的情况下,按照备份顺序进行还原,而在阿里云上都是一键操作,关于常用流程的使用可以看本篇文章的后半段。
善用弹性扩展
云数据库的一个很大的优势是弹性扩展,意味着可以按需进行扩展,一般以下几种情况比较适宜考虑弹性方面的功能:
- 业务增长:随着业务增长动态扩容数据库
- 业务高峰:比如双十一等大促临时提升服务器规格,在业务低峰期再进行服务器规格降级
- 临时使用:比如申请一台服务器进行测试,这个过程使用云数据库不但避免了麻烦的数据库安装部署成本,还能在测试完成后关闭服务器以节约成本。
了解权限体系
上面说了,由于RDS是PAAS层的服务,所以需要让渡一部分权限,但其实绝大多数常用权限还是可以使用的,可以使用命令fnmypermission函数了解当前登录账号所拥有的权限,如图:
设置可维护时间段
实际上RDS底层是有一些运维操作的,在运维操作时可能有闪断出现,现在可以选择接受的运维时间段,这可以根据业务来,默认是2:00am-6:00 am,这个时间适用于绝大多数场景,但某些场景比如海外业务,或者游戏业务晚上可能反而是高峰期,因此应该根据业务正确设置该值。
利用临时实例
RDS有一个非常好的功能是临时实例,在控制台如图所示:
图 .创建临时实例功能图 .指定从某个时间点创建临时实例。
该功能可以从指定时间点的备份完全克隆出来一个实例,可以使用该实例进行下面的工作:
- 测试:可以完全克隆出来一个数据副本,用于测试,而不影响线上生产环境的数据以及压力
- 数据找回:如果有误操作等,可以利用线上生产环境克隆出一份数据,然后手动找回数据
开发环境:可以通过临时实例作为软件开发环境,从而不再需要手动创建测试数据,开发过程中有数据支持也可以更容易及时发现BUG
最牛逼的还是这个功能是完全免费的。
利用内置的系统存储过程完成一些undocument操作
rds在限制权限之外还通过一套内部存储过程可以完成一些“非标准”操作,这些存储过程在master数据库下,下面是当前版本所支持的存储过程
- [dbo].[sprdsaddlinkedserver](添加链接服务器)
- [dbo].[sprdsconfigure](配置服务器级别的参数)
- [dbo].[sprdscopy_database](复制数据库)
- [dbo].[sprdsdbcc_trace](启用跟踪标记)
- [dbo].[sprdsreaderrorlogs](读取SQL Server错误日志)
[dbo].[sprdssetdbonline](将数据库状态改为Online)
比如,我们可以通过下面命令将服务器的“并行开销阈值”改为50。
[dbo].[sp_rds_configure] 'cost threshold for parallelism',''
考虑RDS底层架构的影响
由于RDS for Server双机版底层使用的是SQL Server 镜像,且为高安全模式,意味着所有的数据更新(插入、删除、更新)全部需要同步到镜像端,因此如果短时间内有大量的数据更新操作时,考虑降低每次事务的大小,比如一次删除100W条数据的SQL可以写为循环删除,在每次循环中加入等待时间。
DELETE
FROM 表
where 日期<'2015-1-1'
可以替换为:
DECLARE @r INT; SET @r=1; WHILE @r>0
BEGIN DELETE TOP(5000)
FROM 表
where 日期<'2015-1-1' SET @r=@@ROWCOUNT; wait for dealy '00:00:00:01'
小结
在使用阿里云RDS for SQL Server时,要考虑PAAS层的结构与限制 ,RDS提供大量功能的同时,也需要让渡一些权限,了解底层原理最大化利用RDS提供的功能并避免限制才是使用的最佳实践。
阿里云RDS for SQL Server使用的一些最佳实践的更多相关文章
- 阿里云RDS for SQL Server测试吐槽
最近测试了一下阿里云RDS for SQL Server,有些设计简直就是反人类,让人不得不吐槽一番. 1:控制台创建数据库时,数据库名不能包含大小字母. 如上截图所示,数据库名称不能包含大写字母,好 ...
- 强强联合 阿里云 RDS for SQL Server 与 金蝶 K/3 WISE 产品实现兼容适配
强强联合 阿里云 RDS for SQL Server 与 金蝶 K/3 WISE 产品实现兼容适配,原K/3 WISE用户通过简单配置就可以无缝搭配RDS SQL Server使用,不需再费时费力自 ...
- 使用阿里云RDS for SQL Server性能洞察优化数据库负载-初识性能洞察
简介 数据库性能调优通常需要较高数据库水平,并伴随较多的前期准备工作,比如收集各种性能基线.不同种类的性能指标.慢SQL日志等,这通常费时费力且效果一般,当面对多个数据库时总体拥有成本会大幅增加.今天 ...
- 阿里云RDS数据库sql server 导入数据并添加作业小结
在阿里云购买ECS服务器和RDS数据库时,要注意网络类型要一致,最好都是VPC,否则ECS不能在内网访问RDS,只能从外网访问:在RDS控制台左侧,数据库安全性的IP白名单中添加ECS外网IP:在数据 ...
- 阿里云RDS for SQL Serrver关于权限的一个严重Bug
阿里云RDS for SQL Server的账号管理有不少小Bug,而且有一个很严重的Bug:任何普通账号,都能创建数据库.注意,我这里是说任意普通账号,任意任意普通账号!任意任意普通账号!重要的事情 ...
- SQL Server系统数据库备份最佳实践
原文:SQL Server系统数据库备份最佳实践 首先了解主要的系统数据库: 系统数据库 master 包含登录信息和其他数据库的核心信息 msdb 存储作业.操作员.警报.备份还原历史.数据库邮件信 ...
- Navicat Premium 12 如何连接阿里云虚拟主机SQL Server 数据库
这个是一台 阿里云购买云虚拟主机!密码已经重置完毕,现在我们 需要知道 数据连接的地址,数据库名,帐号以及密码. 根据不同的运营商 选择 这里我们选择阿里云 云数据库 SQL Server版本 填写 ...
- 亿级SQL Server运维的最佳实践PPT分享
这次分享是我在微软的一次分享,关于SQL Server运维最佳实践的部分,由于受众来自不同背景,因此我让分享在一个更加抽象的角度进行,PPT分享如下: 点击这里进行下载
- SQL Server Integration Services SSIS最佳实践
SQL Server Integration Services Best Practices Tips https://www.mssqltips.com/sql-server-tip-categor ...
随机推荐
- js-location应用
1 location.search ?xxx=sss&yyy=ddd 获取地址中查询的值 /** * 解析url参数 * @example ?id=123456&a=b * @retu ...
- Java面向对象 线程技术 -- 下篇
Java面向对象 线程技术 -- 下篇 知识概要: (1)线程间的通信 生产者 - 消费者 (2)生产者消费者案例优化 (3)守护线程 (4)停止线 ...
- springboot scheduled并发配置
本文介绍如何使用springboot的sheduled实现任务的定时调度,并将调度的任务实现为并发的方式. 1.定时调度配置scheduled 1)注册定时任务 package com.xiaoju. ...
- DevOps之虚拟专用网络VPN
唠叨话 关于德语噢屁事的知识点,仅提供专业性的精华汇总,具体知识点细节,参考教程网址,如需帮助,请留言. <虚拟专用网络VPN(Virtual Private Network)> 关于虚拟 ...
- pycharm快捷键(转载)
1.编辑(Editing) Ctrl + Space 基本的代码完成(类.方法.属性)Ctrl + Alt + Space 快速导入任意类Ctrl + Shift + Enter 语句完成Ctrl + ...
- java中 n-- 和 --n的区别
n--和--n的最终结果都是将n本身减一,区别是现在的值: 比如说: n=10 a=n;此时a=10 b=n--;此时b=10,n=9减号放后面是指先赋值,再自减1 c=--n;此时c=8,n=8减号 ...
- .Net Web开发技术栈
有很多朋友有的因为兴趣,有的因为生计而走向了.Net中,有很多朋友想学,但是又不知道怎么学,学什么,怎么系统的学,为此我以我微薄之力总结归纳写了一篇.Net web开发技术栈,以此帮助那些想学,却不知 ...
- LINUX 笔记-VIM常用命令整理
1.进入insert模式 o:当前行后 O:当前行前 r:替换当前字符 R:替换当前字符直到ESC 2.删除命令 #dw:删除#个word d^:删除至行尾 d$:删除至行首 3. u:撤消 ctrl ...
- Spark: Job in detail
1.sc.runJob -> dagScheduler.runJob -> submitJob 2.DAGSchedueler::submitJob 会创建 JobSubmitted 的 ...
- 为什么国外的 App 很少会有开屏广告?
前言: 笔者在知乎看到这个问题,觉得这的确是一个值得关注和回答的现象,遂写了回答并整理成本文发布在此抛砖引玉,欢迎讨论. 正文: 古话说得好,先问是不是,再问为什么. 对于「国外的 App 很少有开屏 ...