數據庫服務器構建和部署最佳實踐

前言

咱們可能常常安裝和部署數據庫服務器,可是可能忽然忘記了某個設置,爲後來的運維形成隱患。下面是國外大牛整理的的檢查列表。
其實也包含了不少咱們平時數據庫配置的最佳實踐。好比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內核數對齊。可是如今已經作了優化,不須要一來就設置那麼多併發

關於其餘選項沒什麼爭議。應該儘可能遵照的。運維

相關文章
相關標籤/搜索