backup1:開始資料庫備份

来源:http://www.cnblogs.com/ljhdo/archive/2016/11/12/5658476.html
-Advertisement-
Play Games

資料庫備份分為數據文件備份和日誌文件備份,數據文件的備份分為:完整備份和差異備份。在SQL Server 2012中,能夠將數據分散式備份到不同的存儲設備上,一般情況,只將數據備份到一個備份文件(.bak)中,只有在備份超大的資料庫時,才需要分散式備份。 資料庫備份的策略一般是:一周一次完整備份,一 ...


資料庫備份分為數據文件備份和日誌文件備份,數據文件的備份分為:完整備份和差異備份。在SQL Server 2012中,能夠將數據分散式備份到不同的存儲設備上,一般情況,只將數據備份到一個備份文件(.bak)中,只有在備份超大的資料庫時,才需要分散式備份。

資料庫備份的策略一般是:一周一次完整備份,一天一次差異備份,一小時一次事務日誌備份,根據數據容災的要求,適當增減備份的時間間隔。

為了便於管理數據備份文件,推薦的做法是:

  • 數據/日誌的每次備份都使用一個單獨的備份文件,數據備份的擴展名是 .bak,日誌備份的擴展名是.trn;
  • 合理命名每個備份文件,建議使用:database_name+date+time+(.bak/.trn),該命名方式,很容易識別備份的資料庫和開始備份的時間;
  • 創建schedule,定時清理備份文件,避免備份文件耗盡磁碟空間;

一,創建資料庫的完整備份和差異備份

使用backup database命令創建資料庫的數據文件的備份,backup database 命令語法(簡化):

BACKUP DATABASE database_name 
TO DISK  =  'physical_device_name'
[ WITH { DIFFERENTIAL
|  COPY_ONLY 
| { COMPRESSION | NO_COMPRESSION } 
| { NOINIT | INIT } 
| { NOSKIP | SKIP } 
| { NOFORMAT | FORMAT } 
| STATS [ = percentage ] }]

1,完整備份和差異備份

差異備份由DIFFERENTIAL 關鍵字指定,只備份從上一次完整備份之後發生更新的數據,而不是備份整個資料庫,通常情況下,差異備份比完整備份占用的空間更少。差異備份的參考基準是上一次完整備份,而,事務日誌,只備份是從上一次差異備份之後產生的事務日誌。因此,備份是有順序的,如果存在以下備份序列:

  1. FullBackup1.bak
  2. DifferentialBackup2.bak
  3. LogBackup3.trn
  4. DifferentialBackup4.bak
  5. LogBackup5.trn
  6. 出現錯誤

還原的策略是:備份尾日誌,使資料庫處於Restoring狀態,依次還原FullBackup1.bak,DifferentialBackup4.bak,LogBackup5.trn,尾日誌,就能將資料庫還原到一個合適的有效時間點。

在執行完整備份和差異備份時,SQL Server會備份足夠的事務日誌,用於將資料庫還原到一致性的狀態。對於master資料庫,只能執行完整備份。

  • During a full or differential database backup, SQL Server backs up enough of the transaction log to produce a consistent database when the backup is restored.
  • Only a full database backup can be performed on the master database.

2,只複製(COPY_ONLY )備份

備份是有順序的,使用COPY_ONLY選項不會影響備份的正常順序,僅僅創建一個資料庫的副本。

差異備份的基準是上一次完整備份,即差異是指從上一次full backup之後,對數據文件執行的更新操作。如果執行一次Copy-Only的完整資料庫備份,不會影響差異備份的base(基準),該base是上一次full backup,而非本次 Copy-only full backup。

3,壓縮數據{ COMPRESSION | NO_COMPRESSION }

在備份時,將數據壓縮,由於壓縮的備份較小,能夠減少Disk Sapce和Disk IO消耗,提高數據備份的速度,但是,備份文件的壓縮和解壓縮十分消耗CPU資源。

4,建議:每一次數據備份,都存儲在單個備份文件上

由於硬碟空間有限,不可能保留過多的備份文件,將數據的每一次備份都存儲在單個文件上,便於對備份文件進行管理(刪除或歸檔)。

每次備份都存儲在新的備份上,搭配選項 Init、Skip、Format,將數據備份存儲在新的備份文件上,這三個選項的含義是:

  • Format 選項:將備份文件格式化,預設選項是 NoFormat;
  • Init 選項:初始化備份文件,Init選項不會初始化Media Header,只將backup set初始化,預設選項是NoInit,將備份存儲到備份文件的末尾;
  • SKIP 選項:不做任何檢查,不會檢查Media Header是否有效,也不會檢查backup set的有效期,預設選項是NoSkip;

5,備份進度(stats)

使用stats選項,每當備份進行到一定的百分比時,SQL Server顯式進度消息,預設值是10,即,每完成10%,SQL Server顯式完成的進度消息,例如,設置stats=10,當備份進程完成30%時,SQL Server會列印消息:30 percent processed.

The STATS option reports the percentage complete as of the threshold for reporting the next interval. This is at approximately the specified percentage; for example, with STATS=10, if the amount completed is 40 percent, the option might display 43 percent. For large backup sets, this is not a problem, because the percentage complete moves very slowly between completed I/O calls.

二,數據備份操作

建議:每一次數據備份,都存儲在單個備份文件上

1,資料庫完整備份,沒有指定Differential選項

backup database [TestSite]
to disk = 'D:\TestDBBackupFolder\Sitedb_bak1.bak' --specify new backup file
with
compression,
format,
init,
skip,
stats=5

2,資料庫差異備份,指定Differential選項

backup database [TestSite]
to disk = 'D:\TestDBBackupFolder\Sitedb_bak2.bak' --specify new backup file
with 
differential,
compression, 
format, 
init, 
skip, 
stats=5

三,事務日誌備份

要執行事務日誌的備份,資料庫的恢復模式(Recovery Mode)必須是FULL,並且資料庫必須執行過一次資料庫的完整備份操作,否則,事務日誌將處於自動截斷(Auto-Truncate)狀態,無法進行事務日誌備份。

使用backup log命令對事務日誌進行備份,跟backup database命令的差異是,不能使用differential選項,多了NoRecovery 和 NO_Truncate選項;

BACKUP LOG database_name 
TO DISK  =  'physical_device_name'
[ WITH { 
  COPY_ONLY
| { COMPRESSION | NO_COMPRESSION } 
| { NOINIT | INIT } 
| { NOSKIP | SKIP } 
| { NOFORMAT | FORMAT } 
| STATS [ = percentage ] 
| { NORECOVERY | STANDBY = undo_file_name }
| NO_TRUNCATE }]

1,尾日誌備份

NORECOVERY 選項,指定備份事務日誌的尾部,並使資料庫處於RESTORING狀態

Backs up the tail of the log and leaves the database in the RESTORING state. NORECOVERY is useful when failing over to a secondary database or when saving the tail of the log before a RESTORE operation. To perform a best-effort log backup that skips log truncation and then take the database into the RESTORING state atomically, use the NO_TRUNCATE and NORECOVERY options together.

2,日誌截斷

正常情況下,資料庫處於Online狀態,在進行事務日誌備份時,如果不指定 NO_TRUNCATE 選項,那麼資料庫將已備份的事務日誌文件截斷,避免事務日誌過大,耗盡disk空間;如果指定 NO_TRUNCATE 選項,表示日誌備份不會將事務日誌文件截斷,該選項一般在資料庫處於異常狀態時使用。

Specifies that the log not be truncated and causes the Database Engine to attempt the backup regardless of the state of the database. Consequently, a backup taken with NO_TRUNCATE might have incomplete metadata. This option allows backing up the log in situations where the database is damaged.
The NO_TRUNCATE option of BACKUP LOG is equivalent to specifying both COPY_ONLY and CONTINUE_AFTER_ERROR.
Without the NO_TRUNCATE option, the database must be in the ONLINE state. If the database is in the SUSPENDED state, you might be able to create a backup by specifying NO_TRUNCATE. But if the database is in the OFFLINE or EMERGENCY state, BACKUP is not allowed even with NO_TRUNCATE. 

四,事務日誌備份

1,正常情況下的事務日誌備份

backup log [TestSite]
to disk = 'D:\TestDBBackupFolder\Sitedb_bak3.trn'
with
compression,
format,
init,
skip,
stats=5

2,備份尾日誌,進而還原資料庫

backup log [TestSite]
to disk = 'D:\TestDBBackupFolder\Sitedb_bak4.trn'
with
compression,
format,
init,
skip,
stats=5norecovery

 

參考doc:

BACKUP (Transact-SQL)


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • ACID,指資料庫事務正確執行的四個基本要素的縮寫。包含:原子性(Atomicity)、一致性(Consistency)、隔離性(Isolation)、持久性(Durability)。 ...
  • 在Ubuntu 16.10系統中,安裝mysql workbench時候,提示未安裝軟體包 libpng12-0錯誤,使用sudo apt-get -f install後還是報錯,後來找到一個下載安裝libpng12-0包的方法來解決。 ...
  • 在SQL Server 中,master 資料庫記錄系統級別的元數據,例如,logon accounts, endpoints, linked servers, and system configuration settings,同時,master 資料庫記錄其他資料庫及其文件的位置,因此,在啟動S ...
  • 資料庫還原的操作,分兩步進行:第一步,驗證(verify)備份文件;第二步,根據備份策略還原資料庫; 參考《backup1:開始資料庫備份》,備份策略是: 一周一次完整備份,一天一次差異備份,一小時一次事務日誌備份 數據/日誌的每次備份都使用一個單獨的備份文件,數據備份的擴展名是 .bak,日誌備份 ...
  • 根據上一篇《MySql下載》下載的程式進行安裝 如果系統已經安裝了MySql產品,將會有彈窗告訴你將要更新信息 如果系統已經安裝了MySql產品,將會有彈窗告訴你將要更新信息 可以選擇更新,也可以Cancel然後到安裝的主界面 點擊上圖右方的Add... 然後選載Available Products ...
  • No1. Mysql 安裝 sudo apt-get install mysql-server mysql-client 記得root密碼別忘了。 No2. 驗證Mysql安裝 sudo service mysql restart No3. 設置Mysql遠程IP訪問 /etc/MySQL/my.c... ...
  • 舉例進行說明,我們現在有兩個表,即商品表(products)與sales_detail(銷售記錄表)。我們主要是通過這兩個表來對MySQL關聯left join 條件on與where 條件的不同之處進行講述。 1、數據準備 創建products表並插入數據 創建sales_detail表並插入數據 ...
  • 【SQL查詢】集合查詢之INTERSECT 1 BLOG文檔結構圖 2 前言部分 2.1 導讀和註意事項 各位技術愛好者,看完本文後,你可以掌握如下的技能,也可以學到一些其它你所不知道的知識,~O(∩_∩)O~: ① 集合查詢之INTERSECT的使用 Tips: ① 本文在itpub(http:/ ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...