2015年1月12日 星期一

MVA學習筆記:SQL Server管理入門(二)

MVA連結

SQL交易記錄概觀:

交易流程:


  • 應用程式輸入資料變更=>在buffer cache找到或載入資料頁修改資料=>變更被記錄在交易記錄(ldf)=>checkpoint將dirty pages更新到資料檔

復原模式應用:


  • 簡單

  • 無法使用交易記錄備份
  • 自動清除交易記錄讓空間需求量最小

  • 完整

  • 管理資料庫需要交易記錄備份
  • 減少資料檔損毀造成的損失
  • 可以回復到特定時間點

  • 大量記錄

  • 管理資料庫需要交易記錄備份
  • 一般可提升bulk copy的行為效能
  • 針對一些bulk操作可因最小記錄而減少交易記錄使用的空間

備份策略:


  • 可容納的資料損失?
  • 使用何種備份類型?
  • 誰來執行?
  • 誰來規劃?
  • 頻率為何?
  • 多久做一次還原測試?
  • 是否搭配協助廠商工具?
  • 使用何種備份媒體? 

SQL SERVER備份類型:

  • 完整-所有檔案和部份交易記錄
  • 備份完整的資料庫
  • 備份交易記錄檔作用中(active)的部份,以回復資料庫
  • SQL2008之後提供了備份壓縮功能,不過針對沒有壓縮率的資料就不需要特別使用

  • 差異-上次完整之後有變更的資料庫資料

  • 備份前一次完整資料備份之後有變更的extents
  • 備份交易記錄檔作用中(active)的部份,以回復資料庫
  • 差異備份間彼此無關

  • 部份-primary檔案群組,每個讀/寫檔案群組,以及特定的唯讀檔案群組

  • 交易記錄-在ldf內記錄的任何資料庫變更

  • 僅備份交易記錄
  • 備份從最後一次成功的交易記錄備份到當下的記錄結尾

  • 備份交易記錄結尾-在還原之前備份交易記錄的結尾記錄

  • 如果mdf、ndf都已損毀,但ldf沒有損壞,可以利用此備份,在做還原之後再將所有交易記錄還原。 
  •  在循序還原之前用來擷取交易記錄的結尾,等同執行一次一般的記錄備份。
  • 當接下來就要開始還原,可使用norecovery(將資料庫狀態改為recovering)
  • 當資料檔遺失或損毀,但交易記錄檔仍完整,可使用continue_after_error 

  • 檔案/檔案群組-指定特定的檔案和檔案群組

  • 只複製備份-資料庫或交易記錄

  • 在兩個資料庫之後搬移資料從A拿去B,又不想破壞原來的備份還原順序使用
  • 只複製交易記錄備份不會清掉交易記錄
  • 只複製完整備份不會影響差異備份

確認備份完整性的選項:

  • 鏡像備份裝置
  • 備份集最多可以四份(企業版支援)
  • 總和檢查碼(checksum)備份選項
  • 驗證備份(restore verifyonly),搭配checksum選項較為有用

檢視備份資料:

  • SQLSERVER透過msdb資料庫一組資料表追縱所有的備份作業
  • 還原的時候SQLSERVER UI會根據你的備份來建議你做最佳還原方式
  • 可以從備份媒體取得資訊
  • RESTORE LABELONLY傳回含有給定備份裝置所識別的備份媒體之相關資訊的結果集
  • RESTORE HEADERONLY傳回含有特定備份裝置上的所有備份組之所有備份標題資訊的結果集
  • RESTORE FILELISTONLY傳回含有資料庫清單的結果集及備份組所包含的記錄檔

備份考量:

  • 備份是線上同時進行,不限制使用者存取,可能因為I/O負係低其它作業效能
  • 一般備份時使用CPU約10%以內的資源,但有啟用壓縮時會拉高使用率
  • 一般備份作業時,資料庫需處理上線狀態
  • 當資料庫損毀時仍可以執行交易記錄備份
  • 交易記錄檔必需是完整的

還原類型:


  • 簡單模式
  • 完整模式
  • 還原系統資料庫
  • 僅還原受損檔案
  • 進階的還原選項,包含online、piecemeal、page還原

準備還原備份:


  • 可能需要執行結尾記錄備份(只適用大量記錄和完整)
  • 確認要還原的備份內容

還原流程的階段:

  • SQLSERVER資料庫的回復流程分三階段
  • 分析與資料複製:建立檔案並複製資料到檔案內,分REDO和UNDO
  • REDO:從還原的記錄將交易結果更新到資料檔
  • UNDO:在還原的當下,將未完成的交易回復
  • REDO和UNDO稱為RECOVERY

WITH RECOVERY選項:

  • 資料庫必須要完成還原才能上線使用
  • WITH NORECOVERY還原選項保持資料庫正在還原狀態,允許對資料庫執行額外的還原作業。

WITH STANDBY選項:

  • 可以唯讀的方式查詢未還原的資料庫,透過待命資料庫檔案存放UNDO階段的細節資料。
  • 建立待命伺服器提供資料的唯讀查詢
  • 在多個交易記錄回復之間查閱資料庫
  • 在人為災難時非常好用

回復到特定時間點:

  • 讓資料庫可以回到特定的時間點,相關記錄都存在交易記錄備份中
  • 定義特定時間點的方式,透過交易名稱標記
  • 資料庫最好是完整復原
  • 交易記錄若包含大量記錄,回復的特定時間點剛好落在大量記錄復原模式的最小記錄行為區段,將導致回復失敗。
  • restore log xx from disk='xx' with standby='xx' ,stopat='時間點'

資料的移轉:

  • ETL:EXTRACT TRANSFORM LOAD
  • 在伺服器間複製或搬移資料
  • 將查詢的資料輸出成檔案
  • 從檔案將資料載入資料表
  • 從檢視讀取或輸入資料
  • 轉換定序或BIG5轉UNICODE

資料轉換可用的工具:

  • BULK COPY PROGRAM(BCP)
  • BULK INSERT
  • OPENROWSET(BULK)
  • IMPORT/EXPORT WIZARD(SSIS)
  • XML BULK LOAD

強化資料轉換效能:

  • 停用條件約束、索引和觸發
  • 減少鎖定,考慮使用TABLOCK以加速載入
  • 在目的端透過SELECT INTO會比從來源端做來的有效率
  • 減少交易記錄,採BULK MODE或是SIMPLE MODE
  • 減少資料轉換,採用NATIVE格式
  • 來源跟目的皆為SQLSERVER的話採NATIVE模式效率好
  • LOCK量會從ROWLOCK到PAGELOCK再到TABLOCK
  • SQL SERVER INTEGRATION SERVICES 概觀(SSIS):
  • 提供開發ETL解決方案豐富的架構

SSIS封裝包含:

  • 資料來源和目的
  • 控制和資料流程
  • 各種不同的轉換
  • 可執行SSIS封裝的方式
  • DTEXECUI和DETEXC命令列工具
  • SQLSERVER AGENT作業
  • 開發SSIS封裝的方式
  • SSDT
  • 匯入/匯出精靈

BCP:

  • 直接在CMD處執行命令
  • 中介的通常是一個檔案
  • 產生格式檔
  • bcp Northwind.dbo.customers format nul -T -c -x -f Cust.xml
  • 匯出
  • bcp Northwind.dbo.customers out "e:\temp\Cust.dat" -T -c
  • 匯入
  • bcp tempdb.dbo.customers in Cust.dat -T -f Cust.xml

BULK INSERT語法:

  • 提供與BCP近似的選項
  • 執行在SQLSERVER應用程式內
  • 有CHECK_CONSTRAINTS和FIRE_TRIGGERS選項

沒有留言:

張貼留言