我對大型多模式數據庫有一個有趣的問題和要求。在大型數據庫中歸檔/備份表和更改的最佳方法
- 數據庫大小約爲130Gb。
- 它是一個多模式數據庫,每個客戶都有一個模式。
- 我們目前在系統中有102247個表格。
- 微軟的SQL Server 2K8 R2
這是由於客戶的定製要求,所有使用單一定義前端。 我們遇到的問題是我們的數據庫備份成爲天文數據並且爲恢復丟失/丟失/不正確的數據而執行數據庫恢復是一場噩夢。最初的產品沒有定義審計跟蹤,我們沒有對存儲數據進行「更改」,我們只有1個版本的數據。
丟失數據返回基本上意味着恢復完整的130GB備份並加載差異/事務文件以獲取數據。
我們想爲每個模式中的每個重要表格引入一個'Changeset'。基本上保存一組數據,然後保存任何修改/不同的數據 - 每X分鐘數。這將最初是一個SQL工作,但我想知道什麼是最好的方法。
本質上,我會運行一個腳本,將'備份'表插入到我們希望保留備份的表的每個模式中。
然後每X分鐘運行一次作業以遍歷每個模式並插入當前數據 - 然後插入新數據/更改後的數據,因爲它會發現更改。 (基於該行的修改日期)然後它將在自我覆蓋之前保留這個更新日誌大約一個月。
我們仍然有我們較大的備份,但我們不需要保留較長的保留期。我的觀點是,檢查更改的數據並執行插入操作的最好和最有效的方法是什麼?
我的直覺是:
INSERT INTO BACKUP_table (UNIQUE ID, col1,col2,col3)
select col1,col2,col3 from table where and ModifiedDate < DATEADD(mi,+90,Current_TimeStamp)
*粗糙SQL
這必須是在一個循環要經過所有模式並運行此。許多表格不會改變數據。
這是一個很好的方法嗎?
SO想什麼?