我們可能經常安裝和部署資料庫伺服器,但是可能突然忘記了某個設置,為後來的運維造成隱患。下麵是國外大牛整理的的檢查列表。 其實也包含了很多我們平時資料庫配置的最佳實踐。比如TEMPDB 文件的個數,比如資料庫文件,日誌文件如何存放,最大記憶體的設置等等。如果有補充的歡迎留言 ...
前言
我們可能經常安裝和部署資料庫伺服器,但是可能突然忘記了某個設置,為後來的運維造成隱患。下麵是國外大牛整理的的檢查列表。 其實也包含了很多我們平時資料庫配置的最佳實踐。比如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與電子郵件地址[email protected] 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。總結
對於個人認為比較重要的最佳實踐我都用紅色的標註了。不過上面的
關於啟用超線程和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內核數對齊。但是現在已經做了優化,不需要一來就設置那麼多
關於其他選項沒什麼爭議。應該儘量遵守的。