資料庫增量備份
1. 如何實現資料庫增量備份
1)建立增量備份RMAN>BACKUP INCREMENTAL LEVEL 0 FORMAT='/u01/backup/rmanbk/%d_%s.dbf' tablespace users;RMAN>BACKUP INCREMENTAL LEVEL 1 FORMAT='/u01/backup/rmanbk/%d_%s.dbf' tablespace users;RMAN>BACKUP INCREMENTAL LEVEL 2 FORMAT='/u01/backup/rmanbk/%d_%s.dbf' tablespace users;(2)建立累積備份RMAN>BACKUP INCREMENTAL LEVEL 0 FORMAT='/u01/backup/rmanbk/%d_%s.dbf' tablespace users;RMAN>BACKUP INCREMENTAL LEVEL 2 FORMAT='/u01/backup/rmanbk/%d_%s.dbf' tablespace users;RMAN>BACKUP INCREMENTAL LEVEL 2 cumulative FORMAT='/u01/backup/rmanbk/%d_%s.dbf' tablespace users;RMAN>BACKUP INCREMENTAL LEVEL 1 FORMAT='/u01/backup/rmanbk/%d_%s.dbf' tablespace users;
2. 如何讓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天的備份,測試中....
3. 什麼叫「資料庫的增量備份」謝謝
比如說 資料庫裡面已有數據是集合A,然後今天因為一些業務又發生了一些數據,假設為B,那麼做備份的時候,只是針對增加了的這一部分進行備份,即 B而不是 (A+B)。
大型企業中涉及業務的資料庫基本上都是採用這種方法每天將發生的業務數據進行備份,而不需要從資料庫初始備份到現在,即速度上會快很多!
4. 資料庫備份有幾種方式以及各自有什麼特點
第一種是手動備份。直接進入到資料庫管理頁面,將資料庫手動導出到本地即可實現資料庫備份。
第二種是適用於虛擬主機的方案。首先進入『多備份』,然後登陸,進入控制面板。首次進入會有備份環境提示,選擇保護伺服器
進入頁面後,選擇web模式,然後選擇資料庫。如果非首次訪問,直接點擊添加,然後選擇資料庫
填入資料庫信息,然後設定備份頻率,創建任務即可實現備份。
第三種是適用伺服器或者VPS。首先進入『多備份』,如果是首次登錄,就如上圖選擇保護伺服器,然後下載客戶端。如果非首次登錄,直接點擊左下角下載客戶端
下載好客戶端以後打開dbfen.exe,然後登陸『多備份』賬號,選擇資料庫,填入資料庫信息,設定備份頻率,即可開始備份
5. 資料庫增量備份原理
1.全備份:這是增量備份的基礎,必須先有一個全備份
2.增量備份:當你備份的時候它會檢索上個增量備份跟現在庫相比哪些塊使用過了,也就是只備份自上次備份以來已使用過的塊(上次是全備份就從全備份里檢索,上次是增量的話就從增量裡面檢索),這樣的文件比以前的要小很多。
ORACLE裡面可以使用塊跟蹤進程,它會記錄哪些塊改變過了並保存到一個單獨的文件中,然後增量備份的時候就不必從庫中檢索,直接檢索這個文件就行了,這樣的效率很高
6. oracle資料庫備份exp命令
oracle資料庫備份exp命令:
第一個,表模式,備份某個用戶模式下指定的對象(表)。業務資料庫通常採用這種備份方式。若備份到本地文件,使用如下命令:
exp icdmain/icd rows=y indexes=n compress=n buffer=65536
feedback=100000 volsize=0
file=exp_icdmain_csd_yyyymmdd.dmp
log=exp_icdmain_csd_yyyymmdd.log
tables=icdmain.commoninformation,icdmain.serviceinfo,icdmain.dealinfo
若直接備份到磁帶設備,使用如下命令:
exp icdmain/icd rows=y indexes=n compress=n buffer=65536
feedback=100000 volsize=0
file=/dev/rmt0
log=exp_icdmain_csd_yyyymmdd.log
tables=icdmain.commoninformation,icdmain.serviceinfo,icdmain.dealinfo
註:在磁碟空間允許的情況下,應先備份到本地伺服器,然後再拷貝到磁帶。出於速度方面的考慮,盡量不要直接備份到磁帶設備。
第二個,用戶模式,備份某個用戶模式下的所有對象。業務資料庫通常採用這種備份方式。若備份到本地文件,使用如下命令:
exp icdmain/icd owner=icdmain rows=y indexes=n compress=n buffer=65536
feedback=100000 volsize=0
file=exp_icdmain_yyyymmdd.dmp
log=exp_icdmain_yyyymmdd.log
若直接備份到磁帶設備,使用如下命令:
exp icdmain/icd owner=icdmain rows=y indexes=n compress=n buffer=65536
feedback=100000 volsize=0
file=/dev/rmt0
log=exp_icdmain_yyyymmdd.log
註:如果磁碟有空間,建議備份到磁碟,然後再拷貝到磁帶。如果資料庫數據量較小,可採用這種辦法備份。
第三個,完全模式,備份完整的資料庫。業務資料庫不採用這種備份方式。備份命令為:
exp icdmain/icd rows=y indexes=n compress=n buffer=65536
feedback=100000 volsize=0 full=y
file=exp_fulldb_yyyymmdd.dmp(磁帶設備則為/dev/rmt0)
log=exp_fulldb_yyyymmdd.log
對於資料庫備份,建議採用增量備份,即只備份上一次備份以來更改的數據。增量備份命令:
exp icdmain/icd rows=y indexes=n compress=n buffer=65536
feedback=100000 volsize=0 full=y inctype=incremental
file=exp_fulldb_yyyymmdd.dmp(磁帶設備則為/dev/rmt0)
log=exp_fulldb_yyyymmdd.log
(6)資料庫增量備份擴展閱讀:
關於增量備份必須滿足下列條件:
1、只對完整資料庫備份有效,且第一次需要full=y參數,以後需要inctype=incremental參數
2、用戶必須有EXP_FULL_DATABASE的系統角色。
3.、話務量較小時方可採用資料庫備份。
4、 如果磁碟有空間,建議備份到磁碟,然後再備份到磁碟。
版權聲明:本文為CSDN博主「kalogen」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
7. 資料庫如何進行增量備份
增量備份,
增量備份,可以節省很多時間、空間資源,多備份就可以實現增量備份。我自己的VPS就是用的多備份,除了第一次備份時間費時之外,之後都比較快了,也節省了不少流量。
8. 在SYBASE中如何實現增量備份
首先: 在建庫的時候,必須把資料庫設備與日誌設備進行單獨的處理,不能把資料庫和日誌建立在同樣的設備上.這樣不符合增量備份的要求.因為增量備份就是對資料庫事務日誌的備份.當然如果能夠把索引設備單獨分出會更好.
其次: 在進行增量備份以前,最好做一次資料庫的完全備份.這樣以備資料庫故障的發生導致資料庫無法恢復.而其後可以進行數據的增量備份.
第三:在進行資料庫載入的時候: 特別是對資料庫進行全部載入後,先不要對資料庫進行online database操作,要把資料庫和日誌一並載入後再執行online操作.
這樣就不會提示 "mp device" is out of sequence 錯誤了.
9. 如何實現Mysql資料庫的差異性備份和增量備份
Ø首先,我們需要開啟MySQL伺服器的二進制日誌功能,其實現方法有很多種,最常用的是在MySQL的配置文件的mysqld項中加入log-bin=[filepath]項;也可以使用mysqld –log-bin=[filepath]重新啟動MySQL伺服器。
Ø其次,使用mysqlmp對資料庫進行完全備份,它可以實現對數據據的聯機,非阻塞的熱備份,不會影響其他進程對資料庫的讀寫操作。(參考指令:mysqlmp -uroot --password=123 --single-transaction --flush-logs --master-data=2 --all-databases --delete-master-logs > d:/mysql5.0/full_%date:~0,10%_1500_PM.sql)
Ø第三,使用flush logs指令刷新創建新的二進制日誌。可以通過mysqladmin flush logs或者flush logs語句實現。最方便有效的方法是將它做成批處理文件,然後讓操作系統定期執行。
Ø使用mysql < *.sql進行完全備份的恢復。
Ø使用mysqlbinlog logs-bin.[0-9]* | mysql進行增量備份的恢復。一般的,假設我們周日下午三點進行了完全備份並生成備份文件full_backup_20100415_3_PM.sql,周一周二中午一點進行了兩次增量備份,分別生成增量備份文件inc_backup_1_PM.0007和inc_backup_1_PM.0008,周三上午10:00資料庫發生崩潰,需要進行資料庫恢復,此時正在記錄的二進制日誌為inc_backup_1_PM.0009,我們還需要恢復其中記錄的操作。具體的恢復操作為:
mysql < full_backup_20100415_3_PM.sql
mysqlbinlog inc_backup_1_PM.0007 inc_backup_1_PM.0008 inc_backup_1_PM.0009
u具體應用(結合T8項目)
根據上述分析,我們在T8項目使用MySQL增量備份,也需要三個步驟:
Ø首選修改MySQL啟動配置文件my.cnf,在其中的mysqld項中增加log-bin選項,重新啟動MySQL伺服器以開啟二進制日誌功能,在生成文件/usr/data/mysql/ t8server-bin.index和t8server-bin..000001。如圖所示:
u總結
MySQL提供了很方便的完全+增量備份實現方法,我們只需調用系統內置的方法或者作出一些細微的配置就可以對MySQL資料庫進行備份和恢復。對於MyISAM資料庫和InnoDB資料庫,都可以通過mysqlmp實現資料庫的完全邏輯備份,通過啟動二進制日誌(binary logs),可以記錄一個時間段內對資料庫的所有可能更新的操作,從而通過flush logs創建新的日誌而實現增量備份。
10. MySQL的備份與還原,非常規備份,全量備份,增量備份
1:官方百萬級別的測試資料庫:
官方測試資料庫github網址:https://github.com/datacharmer/test_db
下載到目錄,解壓即可,運行命令:
2:自己創建簡單測試資料庫:
快速隨機生成測試語言的網站:https://generatedata.com/
選擇sql和想生成的欄位,點擊生成Generate!生成即可。
在MySQL輸入生成的語句即可。
3:測試備份還原時用到的命令
刪庫跑路測試(先備份好)
還原後查詢庫的表數據是否完整。
採用復制整個數據存放目錄
1:查看資料庫數據存放位置
有兩種方法:
1):在資料庫中用命令 show variables like 'datadir' 查看
2):在配置文件中查看,配置了 datadir 目錄的可查看。沒有配置的默認為 /var/lib/mysql/ 位置
Linux中查看配置文件
2:復制目錄或者目錄下某個資料庫名
3:還原時直接復制文件夾到資料庫目錄即可
mysqlmp又可叫做全量備份。
參數 --databases 同 -B ,單獨一個庫,也可省略。
1、備份命令mysqlmp格式
格式:mysqlmp -h主機名 -P埠 -u用戶名 -p密碼 database 資料庫名 > 文件名.sql
備份testDatabase資料庫
2、備份MySQL資料庫為帶刪除表的格式
備份MySQL資料庫為帶刪除表的格式,能夠讓該備份覆蓋已有資料庫而不需要手動刪除原有資料庫。
3、直接將MySQL資料庫壓縮備份
備份並壓縮
4、備份MySQL資料庫某個(些)表
備份testDatabase中的myTable表,不需要用參數 --databases 或者 -B
5、同時備份多個MySQL資料庫
同時備份testDatabase和 employees兩個庫
6、備份伺服器上所有資料庫
參數 --all-databases 同 -A
7、還原MySQL資料庫的命令
1) 不指定數據名還原,默認生成原資料庫名稱,還原所有資料庫。
2) 指定數據名還原,還原指定單個資料庫,需在資料庫種預先創建一個testDatabase名稱。
3) 還原壓縮的MySQL資料庫
4) 進入資料庫用source導入
增量備份是針對於資料庫的bin-log日誌進行備份的,增量備份是在全量的基礎上進行操作的。增量備份主要是靠mysql記錄的bin-log日誌。
1:查看是否開啟bin-log日誌
進入mysql輸入命令可查看。
顯示如下為開啟狀態,日誌文件在/var/lib/mysql/以binlog.00001的格式保存。
如未開啟,需要在配置文件種配置
2:查看目前使用的bin-log日誌文件
進入mysql查看命令。
顯示如下,目前使用的是binlog.000022文件,所有操作都記錄在此文件。
查看當前testDatabase的表myTable數據如下,
3:刷新日誌,使用新的日誌文件(備份)
在命令端執行命令
日誌文件從 binlog.000022 變為 binlog.000023
這時相當與已經備份成功,備份文件即為上次的binlog.000022日誌文件。
4:刪除數量,從日誌還原數據
1) 刪除ABC行
查詢以及沒有ABC行列。
2) 恢復數據ABC行
退出mysql,在命令端用mysqlbinlog命令恢復到binlog.000022日誌狀態。
進入資料庫再次查看數據,ABC已經恢復。
增量備份完成。