iT邦幫忙

1

SQL SERVER 2008資料庫交易記錄檔清除問題

最近公司ERP資料庫主機,放置資料庫的D槽容量即將用盡,
於考量換主機前先檢視是否還有可增加可用空間之可能。
發現主要使用的資料庫中,除MDF不可去動外,
LDF檔案竟然有24G的大小。
自己查閱相關書本也上網查詢了處理方式。
得到如下兩種方法。

方法一:

BACKUP LOG DBName WITH TRUNCATE_ONLY
DBCC SHRINKFILE(DBName_LOG,2)

方法二:

USE DBName;
GO
-- Truncate the log by changing the database recovery model to SIMPLE.
ALTER DATABASE DBName
SET RECOVERY SIMPLE;
GO
-- Shrink the truncated log file to 1 MB.
DBCC SHRINKFILE (DBName_Log, 1);
GO
-- Reset the database recovery model.
ALTER DATABASE DBName
SET RECOVERY FULL;
GO

小弟我實在是門外漢,實在無法瞭解這兩種有何區別?
而此資料庫有作主要備份、差異配合與交易備分三種組合維護計畫,
不知道下這些指令是否有何影響。
還煩請各位前輩不吝懇請賜教。

此外,想請教前輩們資料庫的備份檔都會存放於何處?
NAS、隨身硬碟或本機等。
備份檔案會存放多久的天數?
一周、二周還是一個月等。
我公司是存放從去年年初到現在每日的備份檔,
以致備份裝置容量也快用盡了,
所以也要規畫後續的做法。
非常感恩各位前輩。

Kert iT邦研究生 5 級 ‧ 2017-02-12 12:14:31 檢舉
備份 如果是台灣上市櫃 有規定 美國有沙賓法案 都有規定 你得翻出來照做 其他...

就看你想做到多安全 一般來說 我是 1各月內每天增量 月結後資料備份兩年
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 個回答

3
Ray
iT邦大神 1 級 ‧ 2017-02-12 01:32:21

你要先了解 SQL 復原模式中, Simple 和 Full mode 之間的差異:
復原模式 (SQL Server)

在 Full mode 底下你不能手動直接砍掉 ldf log 檔, 為了安全, SQL 只允許你在執行完「交易備份」之後, 才能由 SQL 自行砍檔.

所以你要做兩件事:

  1. 先評估你的作業是否需要 Full recovery mode? 如果不需要的話, 直接選 Simple mode 就沒有這些困擾. 缺點是: 你沒有辦法使用 Full mode 的那些功能.
  2. 如果必須跑 Full mode, 那就要詳細設計備份計畫, 除了資料庫的備份之外, 也要定期執行「交易備份」(不見得一天一次, 看資料成長速度, 你也可以每小時來一次), 每次交易備份完畢之後, SQL 就會自動縮減 log 的大小.
看更多先前的回應...收起先前的回應...
kuosheng iT邦新手 4 級 ‧ 2017-02-12 08:38:03 檢舉

你講的都對, 不過詢問的人能領悟幾分 ?? 還是得靠他自己去K書

感恩raytracy大的回應,小弟我有認真去翻書了,
只是領悟力不夠,還是無法確實理解。
目前已對完整復原模式(三種備份方式皆可做),
與簡單復原模式(僅能做完整與差異備份方式)。

只是我的疑問是,
目前公司的主資料庫是用完整復原模式,
備份方式是三種備份方式搭配使用。
但為何主資料庫的ldf檔案還會有24G的大小,
不是做完已確定的交易記錄備份就會清除嗎?

而網上很多文章都會提及,
要刪除過大交易記錄檔只要切換到簡單復原模式,
原本是用完整復原模式,
這樣切換到簡單復原模式再刪除交易記錄檔不會有備份上的問題嗎?

感恩各位前輩的不吝指教。

Ray iT邦大神 1 級 ‧ 2017-02-12 15:19:28 檢舉

那要看你的備份軟體是否有甚麼選項沒勾到? 例如: BackupExec 在設定交易備份的時候, 可以勾選「要不要刪除交易檔?」的選項, 如果沒勾的話, SQL 不會幫你刪. 這部分請朝向備份軟體的支援說明去研究.

另外, 還有一些狀況也可能會阻止交易檔被刪除, 例如有 AlwaysOn AG, Mirror 等等, 要看你實際的環境組態才知道.

Ray iT邦大神 1 級 ‧ 2017-02-12 15:21:51 檢舉

切換到 Simple mode 當然一定可以刪掉交易檔, 但你的損失就是: 無法將資料庫復原到刪除之前的任何一個時間點, 只能一股腦還原到最後一次的完整/差異備份. 如果你們的環境可以忍受這樣損失的話, 那也可以這樣做.

昨日試了完整、差異與交易紀錄備份三種組合方式,
執行了一天,都有正常運作,而交易紀錄檔案格式為trn,
大小確實為排程時段區間使用者的操作頻繁度而視。

但有個問題是交易紀錄檔備份完後,
照理說不是應該會自動清空ldf檔案嗎?
但我檢視大小還是一樣,還是ldf都要手動刪除?

另外,壓縮資料庫或檔案這動作執行後是否會影響效能?
因為系統有提到,執行此動作會影響效能。

感恩各位前輩的不吝指教。

Ray iT邦大神 1 級 ‧ 2017-02-14 10:11:25 檢舉

前面提過, 這個問題要看你的備份軟體如何運作的? 請洽備份軟體的原廠支援部門協助解決.

執行壓縮過程會自動觸發 database lock, 如果你的應用系統對 lock 敏感的話, 就會有影響.

感恩raytracy大的回覆。

小弟我實際測試過兩天,
交易紀錄備份完後,目前配置空間(亦即ldf檔案)不會變小,但可用空間會增大。(可從資料庫壓縮中的檔案去檢視)

以上,感恩各位前輩的回覆。

0
做工仔人!
iT邦大師 1 級 ‧ 2017-02-13 10:22:47

基本上樓主有二個問題要處理:
1.LDF過大:請改用"簡單"復原模式應該就可以變小.(設定中的"自動壓縮"也要勾選).
2.備份問題:這個要樓主自行評估
要先搞清楚備份的目的是為了=>"復原",所以要先決定好:公司可以接受的復原時間.(也就是ERP服務的中斷時間及USER補KEY資料的時間)才可以決定備份計劃.
在備份計劃要包括到:
A.備份時程:多久備份一次?這個要依前述的目的內容來決定.
B.何時備份:每天在什麼時間備份?這個時間點的決定要看"做一次備份的時間要多久"而定.這也會是當不幸事件發生時,USER單位補資料的時間起點.
C.備份方式:多久做一次FULL BACKUP.其他時間做差異備份.(建議:每週至少要做一次FULL BACKUP)
D.備在那裡:備份除了預防誤刪資料外,也是要預防設備故障或其他的天災人禍.-外接式硬碟/磁帶/異地備份...
E.復原演練:避免備了半天, 真的出事時,資料卻救不回來的"窘境".

感恩做工仔人!前輩的回覆。
想再請問,

2.1.LDF過大:請改用"簡單"復原模式應該就可以變小.(設定中的"自動壓縮"也要勾選).
這是否將資料庫屬性中,選項中的自動壓縮的值改為TRUE即可。

YES

感恩做工仔人!前輩。

我要發表回答

立即登入回答