在虚拟环境中运行SQLServer数据库
小职 2018-07-02 来源 : 阅读 1929 评论 0

摘要:本文主要向大家介绍了在虚拟环境中运行SQLServer数据库,通过具体的内容向大家展示,希望能对大家学习SQLServer数据库有所帮助。

本文主要向大家介绍了在虚拟环境中运行SQLServer数据库,通过具体的内容向大家展示,希望能对大家学习SQLServer数据库有所帮助。

虚拟化数据库服务器设计

内存

对于数据库服务器,你通常要确保分配给虚拟服务器每GB内存,主机就要有1GB无竞争性的物理内存。如果管理程序(hypervisor)允许,如同VMware所做,应该设置预留内存以确保虚拟服务器总能保留分配给它的内存。然而,Windows Server 2008 R2 SP1及以上的版本中的Hyper-V技术提供了动态内存(Dynamic Memory),当探测到低内存的虚拟机时,它能把主机不用的物理内存分配给该虚拟机。通过Hyper-V,虚拟机能够配置启动内存16GB,但上限是32GB。运行过程中虚拟机使用的内存接近初始的16GB时,如果有足够的可用物理内存,Hyper-V管理程序就会增加内存分配给虚拟机。

存储

给虚拟机分配存储是通过附加虚拟硬盘驱动实现的。虚拟驱动仅仅是一个平面文件,由管理程序存放和管理。作为最佳实践,对于活跃且繁忙的服务器,推荐如下存储设计准则:

· 如果你能把每块硬盘都放置在独立的物理SAN分区中(被称为是LUN),确保Windows OS内的每个逻辑驱动都是独立的虚拟硬盘

· 在你部署之前,测试在管理程序(hypervisor)和存储层中的任何自动精简配置(Thin Provisioning)的使用

· 考虑存储基础结构的网络竞争。

CPU

配置虚拟机的虚拟CPU,也称为vCPU,是最容易的任务。 vCPU和物理CPU内核之间没有一对一的对应关系。相反,当vCPU要执行任务时,一个vCPU就是放置在物理CPU内核队列中的一个逻辑线程。队列中的请求越多,执行线程就越久。由于CPU访问延迟,通常推荐配置虚拟机时,vCPU要比实际所需少一点。虚拟机自身完全察觉不到延迟,因此这仅能从虚拟机外部去监控。例如,高CPU延迟不会引发SQL Server里SOS_SCHEDULER_YIELD高等待统计信息。最新一代的管理程序目前支持每台虚拟机可以配置大量vCPU。Windows Server 2012支持32个vCPU。尽量确保每个物理CPU内核不超过2个vCPU。

网络

如果你知道数据库服务器需要通过网络转移大量数据,或对网络延迟很敏感,那么要确保主机有足够的网卡。同样,主机SAN存储所需的总线适配器也会变得争夺,所以网卡也会争夺。

高可用性

在运行SQL Server的虚拟机上部署AlwaysOn Failover Clustering Instances和AlwaysOn Availability Groups,建议:

· 为虚拟机配置“server affinity”,以致于管理程序确保属于群集或AlwaysOn可用性组的虚拟机从来不会同时运行在相同的物理主机上。这是为了防止主机故障,因此你想移除任何故障的单个节点

· 如果你部署任何同步数据库镜像,那么要确保所有运行虚拟SQL Server实例的主机上都有足够的网络带宽

· 同样,对于任何涉及同步镜像的服务,要确保有足够的物理CPU资源,以便延迟最小化

· 如果要部署SAN级别的复制,来把存储系统复制到另一个SAN基础设施中,用于灾难恢复,那么就应该考虑是否使用同步或异步镜像,及SQL Server有什么性能及数据连续性影响。维持存储级别事务连续性至关重要。

OS增强

当Windows实例部署到虚拟机时,除了确保正确的硬件设备驱动器,OS里没有其他特殊的要配置虚拟化,除了确定管理程序的工具。

SQL Server内存配置

就像Windows,SQL Server也能安装到虚拟机,并能成功运行,没有任何特定的调校或配置。然而,你或许想考虑配置SQL Server的Max Server Memory,尽管你可能在调校好的物理机上做这件事情。在SQL Server 2012中,这项设置现在把工作极限放在SQL Server使用的全部内存上,然而之前的版本中,这仅仅影响缓冲池的大小。在标准或企业版的SQL Server 2012或企业版之前版本上,Hyper-V配置中,Max Server Memory要比Maximum RAM值低大约2GB,以便SQL Server能够增加比分配的内存更多的内存使用。

通常的虚拟化设计误区

下面罗列了一些常见的对SQL Server有负面影响的设计:

· 过多的vCPU----越多vCPU,等待物理CPU内核就越久。实际有2个vCPU比较恰当。

· 非托管(unmanaged)的内存配置----给一个虚拟机分配所有的内存,有时会严重影响其它虚拟机的正常运行。

· 只有一个大分区的大LUN(逻辑单元号)----SQL Server受益于不同类型的文件使用多个非竞争的驱动。

· 饱和的主机总线适配器----常常看到一个主机仅有一个HBA,运行几个I/O敏感的虚拟机。不仅容易出现单点故障,HBA还容易饱和,引起I/O需求排队并导致存延迟。

 监控虚拟化的数据库服务器

如果你使用Hyper-V,可以通过Dynamic Memory功能来查询SQL Server的内存使用。下面的查询返回虚拟机内存使用的百分比。

[sql] view plain copy

1. select (m.total_physical_memory_kb /1024)  

2. as 'Physical Memory (MB)',  

3. convert(decimal(3,1),(convert(decimal(10,1),m.available_physical_memory_kb / 1024)  

4. / convert(decimal(10,1),m.total_physical_memory_kb / 1024)) * 100)  

5. as 'Available Memory as % of Physical Memory'  

6. from sys.dm_os_sys_memory m,sys.dm_os_sys_info i  

7. select convert(decimal(10,1),(convert(decimal(10,1),i.committed_target_kb / 1024)  

8. /convert(decimal(10,1),m.total_physical_memory_kb / 1024))  

9. * 100) as 'Committed Target as % of Physical Memory',  

10. convert(decimal(3,1),(convert(decimal(10,1),i.committed_kb / 1024)  

11. /convert(decimal(10,1),m.total_physical_memory_kb / 1024))  

12. * 100) as 'Total Committed as % of Physical Memory'  

13. From sys.dm_os_sys_memory m, sys.dm_os_sys_info i  

推荐的性能监控计数器
推荐监视下面的3类Performance Monitor计数器来追踪虚拟数据库服务器的健康:

主机(Host Server):

➤ Percentage of physical CPU utilization
➤ Percentage of physical memory utilization
➤ Any CPU latency experienced by the hypervisor (VMware calls this CPU Ready Time)
➤ Total amount of memory currently allocated to the host’s virtual servers
➤ Physical storage MB/s and IOPS that the hypervisor is using
➤ Physical storage read and write latency times
➤ Percentage of HBA bandwidth utilization
➤ Percentage of NIC bandwidth utilization

虚拟机(Virtual Server):

➤ % logical CPU utilization
➤ Total physical memory (MB)
➤ Available memory (MB)
➤ Logical storage MB/s and IOPS that the operating system is using
➤ Logical storage read and write latency times

 SQL Server实例:

➤ SQL Server fi le I/O latencies from sys.dm_io_virtual_file_stats
➤ Committed and Target Committed Memory values from sys.dm_os_sys_info
➤ Batch requests/sec as a benchmark of server activity levels

以上就介绍了SQL Server的相关知识,希望对SQL Server有兴趣的朋友有所帮助。了解更多内容,请关注职坐标数据库SQL Server频道!

本文由 @小职 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程