数据库服务器构建和部署最佳实践

前言

咱们可能常常安装和部署数据库服务器,可是可能忽然忘记了某个设置,为后来的运维形成隐患。下面是国外大牛整理的的检查列表。
其实也包含了不少咱们平时数据库配置的最佳实践。好比TEMPDB 文件的个数,好比数据库文件,日志文件如何存放,最大内存的设置等等。若是有补充的欢迎留言
 

正文

 
 1. 机架和电缆服务器
      确保每一个电源插入不一样的电源电路
      果可能,请确保网络电缆已插入不一样的网络交换机
  2.SQL Server服务和SQL Server代理服务的使用域账户。
      在SQL Server 2012安装期间,您将须要知道这些账户的用户名和密码
      让这些账户使用 永不过时的密码
  3.检查服务器上的主BIOS设置
      启用超线程和turbo-boost(是一种超频技术,提高最多10%的性能)
      电源管理应设置为操做系统控制
      禁用内存测试
  4.在服务器上安装Windows Server 2012 R2 Standard Edition
       使用集成RAID控制器在RAID 1中使用两个内部驱动器
          若有可能,请考虑使用SSD
          若是使用SSD,则不须要对其进行碎片整理
       为C:驱动器建立一个单独的分区
       将Windows页面文件大小更改成16GB,并防止C盘
       将Windows电源计划更改成“高性能”
           在服务器上运行CPU-Z以确认处理器全速运行
       将光盘驱动器的驱动器号更改成Z:
  5.将服务器上的NETBIOS名称更改成所需的服务器永久名称
  6.使用Windows Server 2012 R2自带功能安装.NET 3.51
  7.在服务器上安装Microsoft Update
    这是Windows Update的超集
  8.在服务器上安装全部Microsoft和Windows更新
       这可能须要几轮才能得到全部必需的更新
  9.对C盘进行碎片整理
       使用使用计划任务每周自动对C盘碎片整理
       不容许将新驱动器自动添加到计划中
  10.建立一个具备正确DNS和默认网关信息的静态IP地址
  11.将服务器加入到相应的Windows域
  12.在服务器上激活Windows
  13.在服务器上安装最新版本的Dell OMSA (这个东西我没用过)
  14.下载最新版本的Dell Server Update Utility(SUU)
       将.iso装入SUU,并运行SUU
       这将确保您具备服务器的最新固件和驱动程序
  15.使用Dell OMSA为LUN建立RAID阵列
           建立一个LUN,而后转到逻辑磁盘管理器建立/格式化驱动器
          II。按照下面显示的顺序建立阵列和LUN
        戴尔OMSA中的通常PERC设置
          对RAID 10阵列使用智能镜像
          II。没有预读高速缓存
          III。启用回写缓存
          IV。应启用缓存策略
          v。使用64K分配单元
  16.使用Windows逻辑磁盘管理器建立逻辑磁盘
       使用OMSA建立阵列后,打开磁盘管理器
       您将看到“初始化磁盘”对话框
        确保使用GPT分区样式
17.检查下,保证新的逻辑驱动器在Windows资源管理器中都可以看到
  18.在安装SQL Server 2012以前,把全部须要的逻辑驱动器都建立上
  19.使用CrystalDiskMark测试每一个逻辑驱动器的性能
  20.使用SQLIO测试每一个逻辑驱动器的性能
  21. 在每一个驱动器上,建立下面的文件夹
       数据驱动器:SQLData
      日志驱动器:SQLLogs
      TempDB驱动器:TempDB
       备份驱动器:SQLBackups
  22.使用组策略编辑器(GPEDIT.MSC)将这些Windows权限授予SQL Server服务账户
       执行卷维护任务
       锁定内存页面   
  23.安装SQL Server 2012企业版
       确保没有待处理的从新引导,不然SQL Server 2012将没法安装
       仅安装此实例所需的SQL Server 2012组件
      C。使用混合模式认证
           将sa密码设置为强密码
          II。将本身添加为SQL管理员
          III。添加任何须要成为管理员的其余DBA
       对于SQL Server服务账户使用域帐户
      使用对应的域帐户做为SQL Server代理账户
      F。将SQL Server代理服务设置为自动启动
      G。将默认目录设置为相应的驱动器号和路径
          I.用户数据库目录:P:\ SQLData
          II.用户数据库日志目录:L:\ SQLLogs
          III. Temp DB目录:T:\ TempDB
          IV。 Temp DB日志目录:T:\ TempDB
          v。备份目录:N:\ SQLBackups
  24.安装SQL Server 2012最新 Service Pack 
  25.安装SQL Server 2012 最新的累积更新6
       累积更新可今后位置得到:
           http://support.microsoft.com/kb/2874879/en-us
       安装后手动对C:驱动器进行碎片整理
          若是您使用的是SSD,则不须要这样作
26.更改SQL Server 2012实例级属性
        a. 启用optimize for ad hoc workloads
          这将容许SQL Server在第一次执行时使用较少的内存来存储临时查询计划
       b. 设置最大并行度设置为服务器上NUMA节点中的物理核心数
      c. 启用默认备份压缩
           这将为全部数据库备份默认使用SQL Server备份压缩
       d.在SQL Server配置管理器中添加 跟踪标志3226做为启动选项
           这将阻止在SQL Server错误日志中记录成功的数据库备份消息
      e .在SQL Server配置管理器中添加 跟踪标志1118做为启动选项
           这将有助于缓解tempdb中的配置争用
      f. 在实例上启用数据库邮件
           用于SQL Server代理警报和SQL Server代理做业失败时邮件通知
      G。 将Max Server Memory设置为适当的非默认值
           值取决于服务器中可用的物理内存量
              它还取决于安装的SQL Server组件
          II。如下是一些示例值:
              1.96GB总RAM:将最大服务器内存设置为87000
              2. 64GB总RAM:将最大服务器内存设置为56000
              3. 32GB总RAM:将最大服务器内存设置为27000
      H。在T:\ TempDB目录中额外再建立三个TempDB数据文件。 总共4个tempdb文件(不须要一开始就和CPU个数对齐)
            全部TempDB数据文件的大小应为4096MB
               将自动增加设置为1024MB
           II。 TempDB日志文件应为1024MB
  27.确认您能够从域上的其余计算机ping通 SQL Server计算机
  28.使用SQL Server 2012 Configuration Manager,确认实例启用了TCP / IP
  29.确认您可使用其余计算机上的SSMS远程链接到SQL Server实例
  30.在实例上建立一个SQL Server操做员
       使用DBAdmin与电子邮件地址dbadmin@yourcompany.com
  31.确认数据库邮件正常运行
       右键单击数据库邮件并发送测试消息
  32.配置SQL Server代理邮件以使用数据库邮件
  33.为如下错误建立SQL Server代理警报:
      a . YourServerName Alert - Sev 19错误:资源中的致命错误
      b. YourServerName Alert - Sev 20错误:当前进程中的致命错误
      C。 YourServerName Alert - Sev 21错误:数据库进程中的致命错误
      d。 YourServerName Alert - Sev 22错误致命错误:表完整性可疑
      e. YourServerName Alert - Sev 23错误:致命错误数据库完整性可疑
      f。 YourServerName Alert - Sev 24错误:致命的硬件错误
      g。 YourServerName Alert - Sev 25错误:致命错误
      h。 YourServerName Alert - Error 825:Read-Retry Required
      i。 YourServerName警报 - 错误832:常量页面已更改
      j.YourServerName警报 - 错误855:检测到不可纠正的硬件内存损坏
      k。 YourServerName警报 - 错误856:SQL Server已检测到硬件内存损坏,但已恢复该页面
  34.这里提供了建立这些SQL Server代理警报的通用脚本:
       确保每一个代理警报都有响应来通知DBAdmin操做员
  35.建立一个名为Nightly Free System Cache的SQL Server代理做业,运行此命令:
       DBCC FREESYSTEMCACHE ('SQL Plans');
       天天晚上在凌晨12:00运行
  36.下载最新版本的Ola Hallengren的SQL Server维护解决方案脚本:
       http://ola.hallengren.com/
       链接到实例时打开MaintenanceSolution.sql脚本
           将@BackupDirectory变量修改成N:\ SQLBackups
          II。运行脚本建立十一个新的SQL Server代理做业
          III。对于每一个做业,若是做业发生故障,请转到“通知”属性窗口,并将做业经过电子邮件发送给DBAdmin组
          IV。对于每一个做业,建立一个运行时间的计划。
          v。这是一个建议的工做时间表:
              CommandLogCleanup星期日上午12:00
              2. DatabaseBackup - SYSTEM_DATABASES - 完整的每日11:55 PM
              3. DatabaseBackup - USER_DATABASES - DIFF Daily at 12:00 PM
              4. DatabaseBackup - USER_DATABASES - 上午12:00时全天
              5. DatabaseBackup - USER_DATABASES - 每小时记录一次
              DatabaseIntegrityCheck - SYSTEM_DATABASES星期六上午7:55
              7. DatabaseIntegrityCheck - USER_DATABASES星期六上午8:00
              8. IndexOptimize - USER_DATABASES星期日下午8:00
              9. 文件清理 星期日上午12:00
              10.sp_delete_backuphistory星期日上午12:00
              11.sp_purge_jobhistory 星期日上午12:00。
 

总结

对于我的认为比较重要的最佳实践我都用红色的标注了。不过上面的sql

关于启用超线程和turbo-boost 数据库

我以为要根据客户的实际状况,若是 客户的系统可以用上这些多余的逻辑CPU,那么才应该开启超线程。根据经验一般OLTP系统开启超线程是比较有好处的。但对于某些报表查询,可能开启超线程反而会有不良影响。缓存

详细能够参考:https://blogs.msdn.microsoft.com/slavao/2005/11/12/be-aware-to-hyper-or-not-to-hyper/ 服务器

关于tempdb文件个数网络

咱们知道增长tempdb数据文件能够减小PAGELATCH争用 ,按照之前的最佳实践是和CPU内核数对齐。可是如今已经作了优化,不须要一来就设置那么多并发

关于其余选项没什么争议。应该尽可能遵照的。运维

相关文章
相关标签/搜索