當前位置:首頁 » 編程語言 » sql增量備份還原
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

sql增量備份還原

發布時間: 2022-05-12 12:44:54

1. 怎樣還備份和還原sql資料庫

首先,請問你使用的是什麼資料庫?(Oracle,SQL,MySQL,PostgreSQL or other DB),因為不同的DB備份的方式種類及命令可能有些不同。
基本來說大體可以分為2類:在線備份和離線備份:
離線備份:
1.可以直接 datafile and related files to your disk。
2.通過資料庫帶的備份工具或命令進行備份。
在線備份:
1.執行備份命令。
2.通過資料庫帶的備份工具進行備份。
像oracle還有一套資料庫管理系統,可以通過網頁瀏覽,然後進行對db的配置以及備份和恢復。

恢復:通過日誌進行恢復!

1、備份位置

在SQL Server上,有多種備份位置可以選擇,如本地磁碟,網路磁碟,遠程地址,磁帶等。

各種備份位置均有自己的優點和缺點。

2、邏輯備份設備

在SQL Server上,可以通過創建邏輯備份設備來完成備份。使用邏輯備份設備的好處是,當變更備份地址時,不需要更改備份腳本,只需要更改邏輯備份設備的定義即可。

創建邏輯備份設備的腳本如下:
SQL code
EXEC sp_addmpdevice @devtype=』disk』,@logicalname=』MYBackup』,@physicalname=』D:\backup\mydb.bak』

刪除備份設備的腳本:
SQL code
Sp_dropdevice @logicalname=』MYBackup』

上述腳本只是刪除邏輯備份設備的定義,下述腳本將同時刪除備份文件:
SQL code
Sp_dropdevice @logicalname=』MYBackup』,@devfile=』DELFILE』

使用邏輯備份設備的方法如下:
SQL code
Backup database mydb to MYBackup

當然,還可在邏輯備份設備上指定過期時間等備份屬性,如:

SQL code
Backup database mydb to MYBackup WITH EXPIREDATE=』13/01/2010』
或:
SQL code
BACKUP DATABASE mydb to MYBackup WITH RETAINDAYS=7

3、備份集與存儲

每一份備份包含於一個備份集,而一個備份集包含於一個存儲集。通過系統GUI進行備份時,SQL Server會自動指定備份集和存儲集,目的則是為了簡化管理。用T-SQL顯示指定則用如下語法:
SQL code
BACKUP DATABASE mydb to MYBackup WITH RETAINDAYS=7,

NAME=』FULL』,

MEDIANAME=』ALLBackups』

NAMEs是指備份集名稱,MEDIANAME是指存儲集名稱。

4、全備份
不管恢復模式是哪一個,所有的備份都必須要有一個全備份,特別是日誌備份和差異備份,如果沒有全備份的話,將無法進行恢復。

簡單的全備份腳本如下所示,也可以通過維護計劃來指定全備份:
SQL code
BACKUP DATABASE mydb to DISK=』D:\Backup\mydb.bak』

但需要注意的是,上述命令是將資料庫備份附加到當前的存在的文件上,如果不存在則創建它,並不會覆蓋原有文件。要覆蓋同名的備份文件,需要指定INIT參數。

SQL code
BACKUP DATABASE mydb to DISK=』D:\Backup\mydb.bak』 WITH INIT

5、日誌備份

在完全恢復模式或者大容量日誌恢復模式下,日誌備份不僅僅是恢復的需要,同時也是手工管理事務日誌文件的一種方式。如果從不進行備份的話,在完全恢復模式或者大容量恢復模式下,事務日誌將會持續增長,直至消耗完所在磁碟。

日誌備份的腳本如下:
SQL code
BACKUP LOG mydb_log TO DISK=』D:\backup\mydb.trn』

需要養成使用.trn為日誌備份的擴展名的習慣。

每個在資料庫上的動作都會被安排一個Log Sequence Number (LSN)。如果需要還原到指定的時間點,需要有持續的LSN記錄。也就是說,在完全恢復模式或者大容量日誌模式下,一個不被打斷的事務日誌備份鏈是恢復資料庫的基本要求。

6、差異備份
使用日誌備份來恢復時,無疑是一個很慢的過程,特別是上一個全備份的歷史比較悠久時。使用差異備份,便能縮短恢復時間。事實上,差異備份只是BACKUP DATABASE的一個選項,如下:

SQL code
BACKUP DATABASE mydb TO DISK=』D:\backup\mydb.dif』 WITH DIFFERENTIAL,INIT

進行資料庫恢復時,先恢復資料庫全備份,再恢復資料庫差異備份,最後才恢復日誌備份。

差 異備份是與上一次全備份緊密相連的,不管期間有多少次日誌備份和差異備份,差異備份還是會從上一次全備開始備份。因此,經常會遇到這樣的一種情況,在生產 庫上需要臨時使用資料庫時,便用BACKUP DATABASE … TO DISK=』..』進行了一個備份,下一次的差異備份便會以這回的全備為准,如果過後把這個臨時全備刪除掉後,後面的差異備份就沒用了。

差異備份並不意味著磁碟空間肯定會少,這取決於實際情況。當期間大量操作發生時,差異備份還是會變得很大。
7、錯誤檢測

在備份過程中,備份進程會同時驗證數據,或者校驗不完整頁(torn page),或者驗證校驗和(checksum)。要使用該功能,需要激活該選項。

不完整頁檢測(Torn-page dection)僅僅檢查每一個頁看是否已經寫完成。如果發現一個頁只有部分被寫入,那麼就將其標記為torn。

校驗和驗證(checksum validation)是一種新的頁驗證機制。它會為每個頁添加一個值來表明該頁實際的大小。雖然看起來是個代價很高影響性能的操作,但事實上,它的效率非常高,與torn-page差不多。

備份進程在備份資料庫時,會通過比較在資料庫里的和隨著備份頁寫入硬碟時這兩個之間的值來進行驗證。但是,這個驗證並不是自動完成的,需要顯示指定,在GUI頁面上是個選項。如果通過T-SQL來備份的話,語句如下:
SQL code
BACKUP DATABASE mydb TO DISK=』D:\data\mydb.bak』 WITH CHECKSUM

如果備份過程中,發現了錯誤,SQL Server會錯誤信息寫入MSDB上的SUSPECT_PAGE表裡面。同時,在默認情況下,備份行為會停止的(STOP_ON_ERROR),以便管理員排查錯誤。

但 備份過程中的校驗和驗證還有另外一個選項(CONTINUE_ON_ERROR),也就是說,如果發現錯誤,備份過程並不會中斷,而是將錯誤頁信息記錄在 MSDB..SUSPECT_PAGE上而已。需要注意的是,SUSPECT_PAGE表是有行限制的,最多隻能達到1000行,如果達到了的話,備份同 樣會失敗。

激活校驗和驗證的話,很明顯會影響備份的性能。但還是很有必要的。

8、安全備份

完全備份和日誌備份語句還支持使用密碼屬性,如:

SQL code
BACKUP DATABASE mydb TO DISK=』D:\mydb.bak』 WITH PASSWORD=』mydb』

所指定的密碼是很容易破解的。因此,如果確實需要對某些備份數據進行加密的話,可以將備份存放於加密的文件系統或者其它安全的存儲設備上。

同時,SQL Server還提供了對真實列進行加密的功能。該加密功能是工業標准。

9、條帶備份

有些情況下,單獨一個硬碟無法存儲一個完整的資料庫備份時,可以將資料庫備份分成多個部分存儲在不同的磁碟上,這種備份方式成為條帶備份。使用條帶備份的優點很明確,就是能很好的利用空間,但如果某部分備份丟失或者損壞,那整個備份將無效。

其語句如下:
SQL code
BACKUP DATABASE mydb TO DISK=』D:\mydb.bak』,

DISK=』E:\mydb.bak』 WITH INIT,CHECKSUM,

CONTINUE_ON_ERROR

上述D盤和E盤上的備份是不可分割的。

10、鏡像備份
與條帶備份在多個磁碟上保留同一份備份不同的是,鏡像備份是在不同磁碟上保留多份備份。其語句如下:
SQL code
BACKUP DATABASE mydb TO DISK=』D:\mydb.bak』

MIRROR TO DISK=』E:\mydb.bak』

WITH INIT,CHECKSUM,CONTINUE_ON_ERROR

在實際情況下,對日誌備份採取鏡像備份方式會比較合適。

11、COPY-ONLY 備份
在差異備份里曾提到過,差異備份是建立在上一個全備份的基礎上的。因此如果在一個事先安排好的備份計劃里,如果在全備份和差異備份之間再進行了一次全備份後,其差異備份會被打斷,如果把臨時全備份刪除掉後,就產生了數據丟失。

在SQL SERVER 2005以後,SQL SERVER提供了一個選項-only.使用-only選項進行的全備份便不會打算原先的備份計劃,語句如下:
SQL code
BACKUP DATABASE mydb TO DISK=』D:\mydb.bak』

WITH INIT,CHECKSUM,COPY_ONLY

三、文件和文件組備份

在SQL SERVER 7.0以後,SQL Server提供了filegroup的概念。文件組不僅僅提供了一個邏輯的存儲地址,還允許將不同的表和索引放在不同的文件組上來提高性能和減少備份時間。

在數據存儲概述上,提到了資料庫有三類數據文件,一般來說,資料庫至少需要兩個(.mdf和.ldf)或者更多的文件。SQL Server不僅允許有多個文件存在(.ldf),還允許多個文件組存在。

一個文件組可以有多個文件,每個文件需要仔細規劃好初始大小及增量。

1、默認文件組

在創建對象時,如果未明確指定文件組,那麼該對象將會存放在默認的文件組上。在默認情況下,默認的文件組是primary,但由於primary文件組不僅可以包含用戶數據,同時還存儲著資料庫結構等技術信息,因此一般建議添加額外的一個文件組,並將其指定為默認文件組。

SQL Server只能有一個默認的文件組。

修改默認文件組的語句如下:
SQL code
ALTER DATABASE mydb MODIFY FILEGROUP mydb DEFAULT;

2、為對象指定文件組
當創建表或者索引時,不管是用戶還是系統都需要將表或索引放在某個文件組上。如果在創建表或索引時指定文件組,那麼表或索引將會存儲在指定的文件組上,而不是默認的文件組。

其指定語句如下:
SQL code
CREATE TABLE test( [id] int,[notes] text) on mydbdata

也可以通過GUI創建表的頁面來指定文件組。

3、將對象遷移至指定文件組
如果需要變更對象的存儲位置,最簡單的方式則是通過GUI屬性頁面來進行修改通過該方法,可以直觀的看到對象的遷移過程。

同時也可以通過T-SQL來修改,例如:
SQL code
ALTER TABLE test drop constraint PK_test WITH (MOVE TO DATA)

4、備份數據文件
備份數據文件同樣可以通過BACKUP DATABASE語句來實現。如下:
SQL code
BACKUP DATABASE mydb FILE=』D:\Data\mydb.ndf』 TO DISK=』E:\Backup\mydbdata.bak』

上述語句相當於數據文件級別的全備份,與資料庫級別的備份類似,文件級別上的備份也有差異備份,當然前提是要有相對應的文件全備份。

差異備份的語句如下:
SQL code
BACKUP DATABASE mydb FILE=』D:\Data\mydb.ndf』

WITH DIFFERENTIAL

TO DISK=』E:\Backup\mydbdata_dif.bak』

5、備份文件組
與單獨備份文件類似,也可以對文件組進行類似的備份操作。備份文件組的方式也有兩種,一種是通過GUI界面指定,一種則是通過T-SQL。

T-SQL的語句如下:
SQL code
BACKUP DATABASE mydb FILEGROUP=』PRIMARY』 TO DISK=』E:\Backup\mydbpri.bak』

6、不完全備份(partial backup)
在文件組備份上,不完全備份其實相當於完全備份,可以通過指定關鍵字READ_WRITE_FILEGROUPS來實現不完全備份。

語句如下:
SQL code
BACKUP DATABASE mydb READ_WRITE_FILEGROUPS TO DISK=』D:\mydb.bak』

2. SqlServer2005怎樣備份,還原

常規的sqlserver2005的備份和還原教程非常多,這里不給您不詳細介紹了,只要單擊:開始→程序→Microsoft SQL Server 2005→「SQL Server Management Studio」;選擇要備份的資料庫,右擊—任務—備份 接下來一步步操作就可以了。
現在給您介紹的是一個自動增量備份的工具,不需要每次都手動去操作,恢復起來也超快。下載一個多備份客戶端,啟動進入如下圖:

1、本地備份:填寫實例名、用戶名和密碼就可以進行連接備份了
2、備份遠程mssql,這個功能把實例改寫為ip就行。
為什麼推薦這個工具?主要是備份完成後,你可以設置定期,按月/周/日/時的頻率進行自動增量備份,不需要手工繁瑣操作,要還原的時候,直接點擊恢復選擇備份日期進行回滾,你再也不擔心資料庫數據會丟失了

3. sqlserver增量備份的數據如果恢復不是上一次完全備份的版本,能恢復嗎

這是因為備份的數據文件是高版本的sql server,導入當前的資料庫比備份的版本還要低,容易出現數據不兼容的情況,所以為了保證數據的可靠性,系統提示無法恢復。
解決辦法:升級當前sql server資料庫的版本,保證跟備份資料庫是同一個版本或者更高就可以了。

4. sql server 資料庫怎麼進行增量備份做過完整備份。

增量就是差異。。。先做個完整的備份,然後以後每隔多長時間(自己定)做一個差異備份。需要還原時,在還原過程中勾選那個完整的備份和之後所有的差異備份,就相當於最後一個差異備份的時間點的完整備份。用差異備份節約硬碟空間。

5. SQL server中備份與還原中這四個是什麼意思啊謝謝

完全備份:
備份全部選中的文件夾,並不依賴文件的存檔屬性來確定備份那些文件。(在備份過程中,任何現有的標記都被清除,每個文件都被標記為已備份,換言之,清除存檔屬性)。完全備份也叫完整備份。
差異備份:
差異備份是針對完全備份:備份上一次的完全備份後發生變化的所有文件。(差異備份過程中,只備份有標記的那些選中的文件和文件夾。它不清除標記,即:備份後不標記為已備份文件,換言之,不清除存檔屬性)。
增量備份:
增量備份是針對於上一次備份(無論是哪種備份):備份上一次備份後,所有發生變化的文件。(增量備份過程中,只備份有標記的選中的文件和文件夾,它清除標記,即:備份後標記文件,換言之,清除存檔屬性。)
事務日誌備份:

特定事務日誌備份之前執行的完整資料庫備份和上次差異備份(如果有)。在完整資料庫備份之後執行的所有事務日誌備份或在特定事務日誌備份之前執行的差異備
份(如果您還原了差異備份)。如果你設置了恢復模式為【簡單】,你將無法使用【事務日誌】備份。SQL
Server
2000

SQL
Server
2005:
創建事務日誌備份,您必須使用完整恢復或大容量日誌記錄恢復模型。

6. 如何讓SQL資料庫進行增量備份

在SQL Server 2000中,假定我們擁有一個資料庫為:Test, 現在需要它每天19:00自動進行一次備份,並且以後一旦發生資料庫錯誤,我們都可以通過備份文件將資料庫恢復到任何一個備份過的時刻點。

備份步驟:
1. 在「SQL Server企業管理器」中注冊資料庫所在的伺服器,注意要使用sa用戶名和口令,否則以後執行備份調度的時候,會出現許可權不足,導致不能進行備份。
2. 確保該伺服器的SQL Server Agent服務是開啟的,因為所有的調度都是通過該代理進行執行的。
3. 在「SQL Server企業管理器」中選中Test資料庫,右鍵打開「備份資料庫」窗口,指定一個新的文件Test-daily.bak,選擇「完全」進行一次完全備份。
4. 再次打開「備份資料庫」窗口,這次使用「差異備份」,「重寫」選項設置為「追加到媒體」,目的文件仍然是前面步驟所指定的Test-daily.bak,並在「調度」選項中設置為每天的19:00,這樣,SQL Server會在每天的19:00將資料庫自上次備份以來發生的變化,以增量備份的方式追加到Test-daily.bak文件中。(測試的時候,可以設置為每天的每1分鍾進行一次備份,以便可以很快的看到備份結果)

在需要進行資料庫恢復的時候,可以按照如下還原步驟進行操作:
1. 新建一個資料庫,比如名為Back, 右鍵打開「還原資料庫」窗口,選擇「從設備」進行還原,然後在「選擇設備…」中選定備份所使用的Test-daily.bak文件,回到「還原資料庫」窗口,「備份號」默認為1(對應的就是備份步驟3中的初次完全備份),不必更改。在「選項」標簽頁中,選中「強制還原」,最關鍵的一步是,在「恢復完成狀態」中,選中第2或第3項,即保證「能還原其它事務日誌」,這樣還原之後,這個新的資料庫就回到了我們進行第一次完全備份時候的狀態,此時,該Back資料庫將處於「正在裝載」或「只讀」的狀態,沒有關系,這是正常的,因為我們接下來還需要通過事務日誌將該資料庫恢復到指定的某個狀態。
2. 再次打開「還原資料庫」窗口,同樣選擇「從設備」進行還原,然後在「選擇設備…」中選定備份所使用的Test-daily.bak文件,回到「還原資料庫」窗口,點擊「備份號」後面的「查看內容…」按鈕,在新的窗口中,可以看到裡面列出了每天19:00左右備份過的備份集(除了最頂上一個是我們初次的完全備份集,其它都是每天的增量備份集),選中想要恢復的某個備份集,單擊「確定」回到主窗口,可以看到「還原備份集」默認選中的是「差異」,再單擊確定,這樣,Back資料庫就恢復到了我們選定的某個備份集了。
上述還原步驟可以重復進行,直到我們找到確切需要的某個備份集。

另外,恢復後的資料庫名稱是Back,如果想將其改名為Test,可以執行
EXEC sp_renamedb 'Back', 'Test'
在重命名資料庫之前,應該確保沒有人使用該資料庫,而且資料庫設置為單用戶模式。

補充:需要在"備份資料庫"->"常規"選項卡里選中"重寫現有媒體",這樣在"選項"選項卡里才能設定"備份集到期時間",並且發現,這樣設定好"到期時間"之後,即使將"重寫現有媒體"改為"追加到媒體",所設定的"到期時間"還是有效的,這可以在調度里的"步驟"腳本中看出來,如:
BACKUP DATABASE [model] TO DISK = N'D:\test.bak' WITH NOINIT , NOUNLOAD , RETAINDAYS = 1, DIFFERENTIAL , NAME = N'model 備份', NOSKIP , STATS = 10, NOFORMAT,通過這種方式應該可以實現保留最近N天的備份,測試中....

7. sql2008每天的增量備份需要一個一個還原嗎

你好的
備份也有兩種方式
也就是你說的那兩種,一個是要逐天恢復
另一個是用一個全備加最後一天恢復
主要看你選擇的備份方式了

8. 如何通過備份文件恢復SQL Server資料庫

1. 下載2014-02-10 07:16的全量備份文件並解壓出要恢復的資料庫備份文件。

2. 以NORECOVERY的方式還原2014-02-10 07:16的全量備份,操作SQL語句如下:

還原成功後,資料庫處於Restoring狀態。

3. 繼續以NORECOVERY的方式還原2014-02-12
06:51的增量備份,操作SQL語句如下:

還原成功後,資料庫繼續處於Restoring狀態。

4. 日誌備份文件的下載

RDS 控制台 - 備份恢復 - 數據備份,選擇需要下載的備份集,點擊「下載」。

點擊「復制內網地址」 或 「復制外網地址」 來獲取備份的 內網 或 外網 下載地址。

日誌備份的地址在 RDS 控制台 - 備份恢復 - 日誌備份
獲取:

5. 解壓備份文件

解壓備份文件前,要先下載好解壓工具 rds_backup_extract

解壓備份文件:
bash rds_backup_extract -f /home/mysql/backup/hins575175_xtra_20150429091224.tar.gz -C /home/mysql/data

6. 以RECOVERY(默認方式)的方式還原日誌

日誌還原成功後,資料庫處於正常狀態,這時資料庫中的數據就還原到了要恢復的時間點。

9. plsqldev怎麼備份和還原資料庫

一、 導出/導入(Export/Import)
利用Export可將數據從資料庫中提取出來,利用Import則可將提取出來的數據送回到Oracle資料庫中去。

1、 簡單導出數據(Export)和導入數據(Import):

Oracle支持三種方式類型的輸出:

(1)、表方式(T方式),將指定表的數據導出。
(2)、用戶方式(U方式),將指定用戶的所有對象及數據導出。
(3)、全庫方式(Full方式),瘵資料庫中的所有對象導出。
數據導入(Import)的過程是數據導出(Export)的逆過程,分別將數據文件導入資料庫和將資料庫數據導出到數據文件。

2、 增量導出/導入:

增量導出是一種常用的數據備份方法,它只能對整個資料庫來實施,並且必須作為SYSTEM來導出。在進行此種導出時,系統不要求回答任何問題。導出文件名預設為export.dmp,如果不希望自己的輸出文件定名為export.dmp,必須在命令行中指出要用的文件名。

增量導出包括三種類型:

(1)、「完全」增量導出(Complete)即備份三個資料庫,比如:exp system/manager inctype=complete file=040731.dmp。
(2)、「增量型」增量導出備份上一次備份後改變的數據,比如:exp system/manager inctype=incremental file=040731.dmp。
(3)、「累積型」增量導出累計型導出方式是導出自上次「完全」導出之後資料庫中變化了的信息。比如:exp system/manager inctype=cumulative file=040731.dmp。
資料庫管理員可以排定一個備份日程表,用數據導出的三個不同方式合理高效的完成。

比如資料庫的被封任務可以做如下安排:

星期一:完全備份(A) 星期二:增量導出(B) 星期三:增量導出(C)

星期四:增量導出(D) 星期五:累計導出(E) 星期六:增量導出(F)

星期日:增量導出(G)。

如果在星期日,資料庫遭到意外破壞,資料庫管理員可按一下步驟來回復資料庫:

第一步:用命令CREATE DATABASE重新生成資料庫結構;

第二步:創建一個足夠大的附加回滾;

第三步:完全增量導入A:imp system/manager inctype=RESTORE FULL=y FILE=A

第四步:累計增量導入E:imp system/manager inctype=RESTORE FULL=Y FILE=E

第五步:最近增量導入F:imp system/manager inctype=RESTORE FULL=Y FILE=F

二、 冷備份

冷備份發生在資料庫已經正常關閉的情況下,當正常關閉時會提供給我們一個完整的資料庫。冷備份時將關鍵性文件拷貝到另外的位置的一種說法。對於備份Oracle信息而言,冷備份時最快和最安全的方法。冷備份的優點是:

1、 是非常快速的備份方法(只需拷文件);

2、 容易歸檔(簡單拷貝即可);

3、 容易恢復到某個時間點上(只需將文件再拷貝回去);

4、 能與歸檔方法相結合,做資料庫「最佳狀態」的恢復;

5、 低度維護,高度安全。

但冷備份也有如下不足:

1、 單獨使用時,只能提供到「某一時間點上」的恢復;

2、 再實施備份的全過程中,資料庫必須要作備份而不能作其他工作。也就是說,在冷備份過程中,資料庫必須是關閉狀態;

3、 若磁碟空間有限,只能拷貝到磁帶等其他外部存儲設備上,速度會很慢;

4、 不能按表或按用戶恢復

10. SQL SERVER 有增量備份嗎

有的.
1. 先做一個完整備份,然後再做差異備份,差異備份的文件還是使用完整備份的那個文件,這樣在完整備份集中就會存在兩個
備份文件。還原的時候,都選中這個差異文件,還原選項選擇「覆蓋現有資料庫」和「回滾未提交的事務......」這兩項即可.

2. 先做一個完整備份,然後再做一個差異備份,差異備份的文件不使用完整備份的那個文件,自己再新建一個差異備份文件。
這樣磁碟上針對這兩次備份就會存在兩個備份文件。還原這兩個備份文件時,先選擇完整備份的文件,還原選項里選擇
「覆蓋現有資料庫」和「不對資料庫執行任何操作....」 完成還原後,會發現被還原的資料庫名呈現「DBName(正在還原中...)」
針對這個資料庫再進行一次還原,選擇差異備份文件後,直接點確定即可。