資料庫歸檔
㈠ ORACLE資料庫歸檔是什麼含義
把資料庫信息的改變保存起來,讓以後資料庫崩潰時恢復的時候使用。
㈡ 資料庫中的歸檔是什麼意思
這里就涉及到重做日誌得問題了,在歸檔模式下,當日誌文件進行切換得時候,進程LGWR會將日誌寫入磁碟,作為日誌文件為以後的資料庫恢復准備,在非歸檔模式下就不行,當日誌文件進行切換得時候會覆蓋原來的日誌文件,對於非歸檔模式一般只能進行完全恢復!不過建議應該把DB設為歸檔模式
㈢ 如何查看資料庫是否處於歸檔模式
第一種方法
select name,log_mode from v$database;
-----------------------------------------------------------
第二種方法
archive log list
2,oracle啟動歸檔模式?
startup mount
alter database archivelog;
alter database open;
alter system set log_archive_start=true scope=spfile;
修改資料庫參數文件c:\oracle\admin\oradb\pfile\init.ora,
取消以下語句的#注釋
log_archive_start = true
log_archive_dest_1 = "location=C:\Oracle\oradata\oradb\archive"
log_archive_format = %%ORACLE_SID%%T%TS%S.ARC
關閉資料庫,重新啟動
查看C:\Oracle\oradata\oradb\archive目錄下,可以看到類似ORADBT001S01201.ARC的文件,說明歸檔成功
解釋init.ora參數文件中關於歸檔重做日誌參數項的含義
歸檔模式是自動還是手工,true為自動,false為手工
log_archive_start = true
歸檔日誌文件所保存的路徑
log_archive_dest_1 = "location=C:\Oracle\oradata\oradb\archive"
歸檔日誌文件的命名方法
log_archive_format = %%ORACLE_SID%%T%TS%S.ARC
2、禁止歸檔
a. 關閉資料庫shutdown immediate
b. startup mount
c. alter database noarchivelog
d. alter database open
㈣ 資料庫歸檔是什麼意思
將不再經常使用的數據移到一個單獨的存儲設備來進行長期保存的過程。數據存檔由舊的數據組成,但它是以後參考所必需且很重要的數據,其數據必須遵從規則來保存。數據存檔具有索引和搜索功能,這樣文件可以很容易地找到。
可以利用數據存檔,以物理方式自動將數據倉庫中具有較低業務價值的數據遷移到更適合、更經濟高效的存儲層。有許多標准可用來確定業務價值較低的數據:如數據訪問和性能需求、數據的使用年限、數據屬於哪個地區或部門,以及分區用途。
當訪問率低的數據發展為消耗數據倉庫的最大一份,最合理的處理方式是以物理和邏輯方式從核心生產數據倉庫中分離此數據。
(4)資料庫歸檔擴展閱讀
歸檔的目的是長時間存放有組織的數據集,確保其將來能夠被精細地檢索。改進的磁帶是這種應用最理想的方式。
備份是短時間存儲那些頻繁更換或更新的數據的副本。這相當於一批廉價的離線介質上的數據副本。通過這種方式,可以把數據與那些基於磁碟的數據中斷事件隔離開,以免同時遭到損壞,這樣,如果原始數據或存儲平台損壞的話,數據就可以恢復到任何磁碟陣列。
在磁碟到磁碟復制解決方案中,復制只能發生在兩個完全相同的設備中。此外,復制過程還可以中斷,這樣你就可以檢查在主數據存儲和鏡像倉庫之間的增量或差異。不過,這樣它可能會導致在磁碟到磁碟的復制過程中產生很多不易察覺的錯誤。
㈤ oracle資料庫歸檔是什麼意思,有什麼用
oracle歸檔是oracle管理中的一款軟體,是記錄任何對資料庫操作的日誌文件,歸檔日誌
oracle使用循環日誌方式 ,當日誌文件被循環使用的時候,日誌內容就被覆蓋了。
當打開日誌歸檔時,可以將日誌內容被覆蓋前存儲到歸檔目錄中。
配合備份策略,可以將資料庫恢復到任一時間點。
㈥ 歸檔資料庫和運行資料庫的區別
Oracle資料庫有聯機重做日誌,這個日誌是記錄對資料庫所做的修改,比如插入,刪除,更新數據等,對這些操作都會記錄在聯機重做日誌里。一般資料庫至少要有2個聯機重做日誌組。當一個聯機重做日誌組被寫滿的時候,就會發生日誌切換,這時聯機重做日誌組2成為當前使用的日誌,當聯機重做日誌組2寫滿的時候,又會發生日誌切換,去寫聯機重做日誌組1,就這樣反復進行。
如果資料庫處於非歸檔模式,聯機日誌在切換時就會丟棄. 而在歸檔模式下,當發生日誌切換的時候,被切換的日誌會進行歸檔。比如,當前在使用聯機重做日誌1,當1寫滿的時候,發生日誌切換,開始寫聯機重做日誌2,這時聯機重做日誌1的內容會被拷貝到另外一個指定的目錄下。這個目錄叫做歸檔目錄,拷貝的文件叫歸檔重做日誌。
㈦ oracle如何將表的歷史數據歸檔
歸檔日誌(ArchiveLog)是非活動的重做日誌備份.通過使用歸檔日誌,可以保留所有重做歷史記錄,當資料庫處於ARCHIVELOG模式並進行日誌切換式,後台進程ARCH會將重做日誌的內容保存到歸檔日誌中.當資料庫出現介質失敗時,使用數據文件備份,歸檔日誌和重做日誌可以完全恢復資料庫.
日誌操作模式:ARCHIVELOGNOARCHIVELOG
1,改變日誌操作模式:
檢查當前日誌操作模式
SELECTlog_modefromv$database;
關閉資料庫,然後裝載資料庫
SHUTDOWNIMMEDIATE
STARTUPMOUNT
改變日誌操作模式,然後打開資料庫
ALTERDATABASEARCHIVELOG;
ALTERDATABASEOPEN;
2,執行手工歸檔
從oracledatabase10g開始,當將日誌操作模式轉變未ARCHIVELOG模式時,oracle會自動啟動ARCH進程.如果要使用手工歸檔.那麼在改變日誌操作模式時必須使用命令ALTERDATABASEARCHIVELOGMANUAL.
需要注意,使用手工歸檔方式,資料庫管理員必須手工執行歸檔命令.如果沒有執行手工歸檔命令,日誌組的原有內容將不能被覆蓋.ALTERDATABASEARCHIVELOGMANUAL命令是為了與先前的版本兼容而保留的,.將來的oracle版本會淘汰該命令,使用手工歸檔方式是,資料庫管理員可以執行以下命令歸檔重做日誌:
SLTERSYSTEMARCHIVELOGALL;
3,配置歸檔進程
初始化參數LOG_ARCHIVE_MAX_PROCESSES用於指定常式初始啟動的最大歸檔進程個數,當將資料庫轉變為ARCHIVELOG模式時,默認情況下oracle會自動啟動兩個歸檔進程.通過改變初始化參數LOG_ARCHIVE_MAX_PROCESS的值,可以動態地增加或降低歸檔進程的個數:
ALTERSYSTEMSETLOG_ARCHIVE_MAX_PROCESSES=3;
配置歸檔位置和文件格式
當資料庫處於ARCHIVELOG模式時,如果進行日誌切換,後台進程將自動生成歸檔日誌,歸檔日誌的默認位置為%oracle_home%rdbms,在oracledatabase10g中,歸檔日誌的默認文件格式為ARC%S_%R.%T.為了改變歸檔日誌的位置和名稱格式,必須改變相應的初始化參數,
1,初始化參數LOG_ARCHIVE_FORMAT用於指定歸檔日誌的文件名格式,設置該初始化參數時,可以指定以下匹配符:
%s:日誌序列號:
%S:日誌序列號(帶有前導0)
%t:重做線程編號.
%T:重做線程編號(帶有前導0)
%a:活動ID號
%d:資料庫ID號
%rRESETLOGS的ID值.
從10g開始,配置歸檔日誌文件格式時,必須帶有%s,%t和%r匹配符,配置了歸檔文件格式後,必須重啟資料庫.
2,使用LOG_ARCHIVE_DEST配置歸檔位置
如果不使用備用資料庫,只需要將歸檔日誌存放到本地目錄.配置本地歸檔位置可以使用初始化參數LOG_ARCHIVE_DEST和LOG_ARCHIVE_DUPLEX_DEST,其中,第一個參數用於設置第一個歸檔位置,第二個參數用於指定第二個歸檔位置.
ALTERSYSTEMSETlog_archive_dest=』d:demoarchive1』;
ALTERSYSTEMSETlog_archive_plex_dest=』d:demoarchive2』;
3,使用LOG_ARCHIVE_DEST_n配置多個歸檔位置.
初始化參數LOG_ARCHIVE_DEST_n用於指定多個歸檔位置,該參數最多可以指定10個歸檔位置.通過使用初始化參數LOG_ARCHIVE_DEST_n,不僅可以配置本地歸檔位置,還可以配置遠程歸檔位置.
如果既要在主節點上生成歸檔日誌,又要將歸檔日誌傳遞到備用節點,那麼必須使用參數LOG_ARCHIVE_DEST_n.該參數與LOG_ARCHIVE_DEST具有如下區別;
初始化參數LOG_ARCHIVE_DEST_n可以配置本地歸檔位置和遠程歸檔位置,而初始化參數LOG_ARCHIVE_DEST和LOG_ARCHIVE_DUPLEX_DEST只能配置本地歸檔位置.
初始化參數LOG_ARCHIVE_DEST_n可以配置多達10個歸檔位置,而初始化參數LOG_ARCHIVE_DEST和LOG_ARCHIVE_DUPLEX_DEST最多隻能配置兩個歸檔位置.
初始化參數LOG_ARCHIVE_DEST_n不能與初始化參數LOG_ARCHIVE_DEST和LOG_ARCHIVE_DUPLEX_DEST同時使用.
因為初始化參數LOG_ARCHIVE_DEST_n不能與初始化參數LOG_ARCHIVE_DEST和LOG_ARCHIVE_DUPLEX_DEST同時使用,所以必須禁用初始化參數LOG_ARCHVE_DEST和LOG_ARCHIVE_DUPLEX_DEST.當使用初始化參數LOG_ARCHIVE_DEST_n配置本地歸檔位置時,需要指定LOCALTION選項.當配置遠程歸檔位置時,需要指定SERVICE選項.
示例如下:
ALTERSYSTEMSETlog_archive_plex_dest=』』;
ALTERSYSTEMSETlog_archive_dest=』』;
ALTERSYSTEMSETlog_archive_dest_1=』location=d:demoarchive1』;
ALTERSYSTEMSETlog_archive_dest_2=』location=d:demoarchive2』;
ALTERSYSTEMSETlog_archive_dest_3=』location=d:demoarchive3』;
ALTERSYSTEMSETlog_archive_dest_4=』service=standby』;
配置遠程歸檔位置時,SERVICE選項需要指定遠程資料庫的網路服務名(在tnsnames.ora文件中配置)
4,使用LOG_ARCHIVE_DEST_n選項
使用初始化參數LOG_ARCHIVE_DEST_n配置歸檔位置時,可以在歸檔位置上指定OPTIONAL或MANDATORY選項.指定MANDATORY選項時,可以設置REOPEN屬性.
OPTIONAL:該選項是默認選項.使用該選項時,無論歸檔是否成功,都可以覆蓋重做日誌.
MANDATORY:強制歸檔.使用該選項時,只有在歸檔成功之後,重做日誌才能被覆蓋.
REOPEN:該屬性用於指定重新歸檔的時間間隔,默認值為300秒,必須跟在MANDATORY後.
例:
Altersystemsetlog_archive_dest_1=』location=d:demoarchive1mandatory』;
Altersystemsetlog_archive_dest_2=』location=d:demoarchive2mandatoryreopen=500』;
Altersystemsetlog_archive_dest_3=』location=d:demoarchive3optional』;
5,控制本地歸檔成功的最小個數.
使用初始化參數LOG_ARCHIVE_MIN_SUCCEED_DEST控制本地歸檔的最小成功個數
Altersystemsetlog_archive_min_succeed_dest=2;
6,使用初始化參數LOG_ARCHIVE_DEST_STATE_n控制歸檔位置的可用性.設置該參數為ENABLE(默認值),表示會激活相應的歸檔位置;設置該參數為DEFER,表示禁用相應歸檔位置.當歸檔日誌所在磁碟損壞或填滿時,DBA需要暫時禁用該歸檔位置.
Altersystemsetlog_archive_dest_state_3=defer;(禁用)
Altersystemsetlog_archive_dest_state_3=enable;(啟用)
顯示歸檔日誌信息
1,使用ARCHIVELOGLIST命令可以顯示日誌操作模式,歸檔位置,自動歸檔機器要歸檔的日誌序列號等信息.
2顯示日誌操作模式
SELECTname,log_modeFROMv$database;
3,顯示歸檔日誌信息.
Colnameformata40
Selectname,swquence#,first_change#FROMv$archived_log;
Name用於表示歸檔日誌文件名,sequence#用於表示歸檔日誌對應的日誌序列號,firs_change#用於標識歸檔日誌的起始SCN值.
4執行介質恢復時,需要使用歸檔日誌文件,此四必須准確定位歸檔日誌的存放位置.通過查詢動態性能視圖v$archive_dest可以取得歸檔日誌所在目錄.
SELECTdestinationFROMv$archivedest;
5,顯示日誌歷史信息
SELECT*FROMv$loghist;
THREAD#用於標識重做線程號,SEQUNCE#用於標識日誌序列號,FIRST_CHANGE#用於標識日誌序列號對應的起始SCN值,FIRST_TIME用於標識起始SCN的發生時間.SWICTH_CHANGE#用於標識日誌切換的SCN值.
6.顯示歸檔進程信息.
進行日誌切換時,ARCH進程會自動將重做日誌內容復制到歸檔日誌中,為了加快歸檔速度,應該啟用多個ARCH進程.通過查詢動態性能視圖V$ARCHIVE_PROCESSES可以顯示所有歸檔進程的信息!
SELECT*FROMv$archive_processes;
Porcess用於標識ARCH進程的編號,status用於標識ARCH進程的狀態(ACTIVE:活動,STOPPED:未啟動),log_sequence用於標識正在進行歸檔的日誌序列號,state用於標識ARCH進程的工作狀態
㈧ 資料庫數據歸檔,有什麼好辦法
pt-archiver原理解析
作為MySQL DBA,可以說應該沒有不知道pt-archiver了,作為pt-toolkit套件中的重要成員,往往能夠輕松幫助DBA解決數據歸檔的問題。例如線上一個流水表,業務僅僅只需要存放最近3個月的流水數據,三個月前的數據做歸檔即可,那麼pt-archiver就可以輕松幫你完成這件事情,甚至你可以配置成自動任務,無需人工干預。
作為DBA,我們應該知其然更應該知其所以然,這樣我們也能夠放心地使用pt工具。相信很多DBA都研究過pt-online-schema-change的原理,那麼今天我們深入刨一刨pt-archiver的工作原理。
一、原理觀察
土人有土辦法,我們直接開啟general log來觀察pt-archiver是如何完成歸檔的。
命令
pt-archiver --source h=127.0.0.1,u=xucl,p=xuclxucl,P=3306,D=xucl,t=t1 --dest h=127.0.0.1,P=3306,u=xucl,p=xuclxucl,D=xucl_archive,t=t1 --progress 5000 \
--statistics --charset=utf8mb4 --limit=10000 --txn-size 1000 --sleep 30
常用選項
--analyze
指定工具完成數據歸檔後對表執行'ANALYZE TABLE'操作。指定方法如'--analyze=ds',s代表源端表,d代表目標端表,也可以單獨指定。
--ask-pass
命令行提示密碼輸入,保護密碼安全,前提需安裝模塊perl-TermReadKey。
--buffer
指定緩沖區數據刷新到選項'--file'指定的文件並且在提交時刷新。
只有當事務提交時禁用自動刷新到'--file'指定的文件和刷新文件到磁碟,這意味著文件是被操作系統塊進行刷新,因此在事務進行提交之前有一些數據隱式刷新到磁碟。默認是每一行操作後進行文件刷新到磁碟。
--bulk-delete
指定單個語句刪除chunk的方式來批量刪除行,會隱式執行選項'--commit-each'。
使用單個DELETE語句刪除每個chunk對應的錶行,通常的做法是通過主鍵進行逐行的刪除,批量刪除在速度上會有很大的提升,但如果有復雜的'WHERE'條件就可能會更慢。
--[no]bulk-delete-limit
默認值:yes
指定添加選項'--bulk-delete'和'--limit'到進行歸檔的語句中。
--bulk-insert
使用LOAD DATA LOCAL INFILE的方法,通過批量插入chunk的方式來插入行(隱式指定選項'--bulk-delete'和'--commit-each')
而不是通過逐行單獨插入的方式進行,它比單行執行INSERT語句插入的速度要快。通過隱式創建臨時表來存儲需要批量插入的行(chunk),而不是直接進行批量插入操作,當臨時表中完成每個chunk之後再進行統一數據載入。為了保證數據的安全性,該選項會強制使用選項'--bulk-delete',這樣能夠有效保證刪除是在插入完全成功之後進行的。
--channel
指定當主從復制環境是多源復制時需要進行歸檔哪個主庫的數據,適用於多源復制中多個主庫對應一個從庫的情形。
--charset,-A
指定連接字元集。
--[no]check-charset
默認值:yes
指定檢查確保資料庫連接時字元集和表字元集相同。
--[no]check-columns
默認值:yes
指定檢查確保選項'--source'指定的源端表和'--dest'指定的目標表具有相同的欄位。
不檢查欄位在表的排序和欄位類型,只檢查欄位是否在源端表和目標表當中都存在,如果有不相同的欄位差異,則工具報錯退出。如果需要禁用該檢查,則指定'--no-check-columns'。
--check-slave-lag
指定主從復制延遲大於選項'--max-lag'指定的值之後暫停歸檔操作。默認情況下,工具會檢查所有的從庫,但該選項只作用於指定的從庫(通過DSN連接方式)。
--check-interval
默認值:1s
如果同時指定了選項'--check-slave-lag',則該選項指定的時間為工具發現主從復制延遲時暫停的時間。每進行操作100行時進行一次檢查。
--columns,-c
指定需要歸檔的表欄位,如有多個則用','(逗號)隔開。
--commit-each
指定按每次獲取和歸檔的行數進行提交,該選項會禁用選項'--txn-size'。
在每次獲取表數據並進行歸檔之後,在獲取下一次數據和選項'--sleep'指定的休眠時間之前,進行事務提交和刷新選項'--file'指定的文件,通過選項'--limit'控制事務的大小。
--host,-h
指定連接的資料庫IP地址。
--port,-P
指定連接的資料庫Port埠。
--user,-u
指定連接的資料庫用戶。
--password,-p
指定連接的資料庫用戶密碼。
--socket,-S
指定使用SOCKET文件連接。
--databases,-d
指定連接的資料庫
--source
指定需要進行歸檔操作的表,該選項是必須指定的選項,使用DSN方式表示。
--dest
指定要歸檔到的目標端表,使用DSN方式表示。
如果該選項沒有指定的話,則默認與選項'--source'指定源端表為相同表。
--where
指定通過WHERE條件語句指定需要歸檔的數據,該選項是必須指定的選項。不需要加上'WHERE'關鍵字,如果確實不需要WHERE條件進行限制,則指定'--where 1=1'。
--file
指定表數據需要歸檔到的文件。使用類似MySQL DATE_FORMAT()格式化命名方式。
文件內容與MySQL中SELECT INTO OUTFILE語句使用相同的格式,文件命名選項如下所示:
%Y:年,4位數(Year, numeric, four digits)
%m:月,2位數(Month, numeric (01..12))
%d:日,2位數(Day of the month, numeric (01..31))
%H:小時(Hour (00..23))
%i:分鍾(Minutes, numeric (00..59))
%s:秒(Seconds (00..59))
%D:資料庫名(Database name)
%t:表名(Table name)
例如:--file '/var/log/archive/%Y-%m-%d-%D.%t'
--output-format
指定選項'--file'文件內容輸出的格式。
默認不指定該選項是以製表符進行欄位的分隔符,如果指定該選項,則使用','(逗號)作為欄位分隔符,使用'"'(雙引號)將欄位括起。用法示例:'--output-format=mp'。
--for-update
指定為每次歸檔執行的SELECT語句添加FOR UPDATE子句。--share-lock
指定為每次歸檔執行的SELECT語句添加LOCK IN SHARE MODE子句。
--header
指定在文件中第一行寫入欄位名稱作為標題。
--ignore
指定為INSERT語句添加IGNORE選項。
--limit
默認值:1
指定每條語句獲取表和歸檔表的行數。
--local
指定不將OPTIMIZE和ANALYZE語句寫入binlog。
--max-lag
默認值:1s
指定允許主從復制延遲時長的最大值,單位秒。如果在每次獲取行數據之後主從延遲超過指定的值,則歸檔操作將暫停執行,暫停休眠時間為選項'--check-interval'指定的值。待休眠時間結束之後再次檢查主從延遲時長,檢查方法是通過從庫查詢的'Seconds_Behind_Master'值來確定。如果主從復制延遲一直大於該參數指定值或者從庫停止復制,則操作將一直等待直到從庫重新啟動並且延遲小於該參數指定值。
--no-delete
指定不刪除已被歸檔的表數據。
--optimize
指定工具完成數據歸檔後對表執行'OPTIMIZE TABLE'操作。指定方法如'--analyze=ds',s代表源端表,d代表目標端表,也可以單獨指定。
--primary-key-only
指定只歸檔主鍵欄位,是選項'--columns=主鍵'的簡寫。
如果工具歸檔的操作是進行DELETE清除時最有效,因為只需讀取主鍵一個欄位而無需讀取行所有欄位。
--progress
指定每多少行列印進度信息,列印當前時間,已用時間以及多少行進行歸檔。
--purge
指定執行的清除操作而不是歸檔操作。允許忽略選項'--dest'和'--file'進行操作,如果只是清除操作可以結合選項'--primary-key-only'會更高效。
--quiet,-q
指定工具靜默執行,不輸出任何的執行信息。
--replace
指定寫入選項'--dest'指定目標端表時改寫INSERT語句為REPLACE語句。
--retries
默認值:1
指定歸檔操作遇到死鎖或超時的重試次數。當重試次數超過該選項指定的值時,工具將報錯退出。
--run-time
指定工具歸檔操作在退出之前需要運行的時間。允許的時間後綴名為s=秒,m=分,h=小時,d=天,如果沒指定,默認為s。
--[no]safe-auto-increment
默認值:yes
指定不使用自增列(AUTO_INCREMENT)最大值對應的行進行歸檔。
該選項在進行歸檔清除時會額外添加一條WHERE子句以防止工具刪除單列升序欄位具有的具有AUTO_INCREMENT屬性最大值的數據行,為了在資料庫重啟之後還能使用到AUTO_INCREMENT對應的值,但這會引起無法歸檔或清除欄位對應最大值的行。
--set-vars
默認:
wait_timeout=10000
innodb_lock_wait_timeout=1
lock_wait_timeout=60
工具歸檔時指定參數值,如有多個用','(逗號)分隔。如'--set-vars=wait_timeout=5000'。
--skip-foreign-key-checks
指定使用語句SET FOREIGN_KEY_CHECKS = 0禁用外鍵檢查。
--sleep
指定工具在通過SELECT語句獲取歸檔數據需要休眠的時間,默認值是不進行休眠。在休眠之前事務並不會提交,並且選項'--file'指定的文件不會被刷新。如果指定選項'--commit-each',則在休眠之前會進行事務提交和文件刷新。
--statistics
指定工具收集並列印操作的時間統計信息。
統計信息示例如下:
'
Started at 2008-07-18T07:18:53, ended at 2008-07-18T07:18:53
Source: D=db,t=table
SELECT 4
INSERT 4
DELETE 4
Action Count Time Pct
commit 10 0.1079 88.27
select 5 0.0047 3.87
deleting 4 0.0028 2.29
inserting 4 0.0028 2.28
other 0 0.0040 3.29
--txn-size
默認:1
指定每個事務處理的行數。如果是0則禁用事務功能。
--version
顯示工具的版本並退出。
--[no]version-check
默認值:yes
檢查Percona Toolkit、MySQL和其他程序的最新版本。
--why-quit
指定工具列印當非因完成歸檔行數退出的原因。
在執行一個自動歸檔任務時該選項與選項'--run-time'一起使用非常方便,這樣可以確定歸檔任務是否在指定的時間內完成。如果同時指定了選項'--statistics',則會列印所有退出的原因。
二、原理解析
根據general log的輸出,我們整理出時序表格如下
三、其他說明
咋一看這個過程貌似也沒有什麼問題,但是,假如在原表掃描出數據,插入到新表的過程中,舊數據發生了變化怎麼辦?
帶著這個疑問,我們進行了源碼的跟蹤,我們在pt-archiver的6839行打上了斷點
然後我分別在幾個session窗口做了如下動作
最後pt-archiver輸出如下:
# A software update is available:
TIME ELAPSED COUNT
2020-04-08T09:13:21 0 0
2020-04-08T09:13:21 0 1
Started at 2020-04-08T09:13:21, ended at 2020-04-08T09:13:51
Source: A=utf8mb4,D=xucl,P=3306,h=127.0.0.1,p=...,t=t1,u=xucl
Dest: A=utf8mb4,D=xucl_archive,P=3306,h=127.0.0.1,p=...,t=t1,u=xucl
SELECT 1
INSERT 1
DELETE 1
Action Count Time Pct
sleep 1 30.0002 99.89
inserting 1 0.0213 0.07
commit 2 0.0080 0.03
select 2 0.0017 0.01
deleting 1 0.0005 0.00
other 0 0.0008 0.00
很明顯,id=3這條記錄並沒有進行歸檔(我們這里是改了條件列,實際生產中可能是更改了其他列,造成歸檔數據不準確)
那麼如何來解決這種情況的發生呢?
顯然,資料庫在資料庫中可以通過加排它鎖來防止其他程序修改對應的數據,pt-archiver其實早就已經幫我們考慮到了這樣的情況,pt-archiver提供了兩種選擇
--for-update:Adds the FOR UPDATE modifier to SELECT statements
--share-lock:Adds the LOCK IN SHARE MODE modifier to SELECT statements
四、總結
pt-archiver作為歸檔工具無疑是MySQL DBA日常運維的大利器之一,在使用過程中在知道如何使用的基礎上也能夠知曉其原理
歸檔過程中最好能對歸檔記錄進行加鎖操作,以免造成歸檔數據不準確
在主從環境中,歸檔過程最好控制速度,以免造成主從延遲
盡量控制好chunk的大小,不要過大,造成大事務
㈨ oracle資料庫歸檔的必要性以及如何進行歸檔
對於重要的生產業務建議開啟歸檔模式,通過對在線日誌的歸檔,可以在數據丟失時進行數據恢復、部分操作也只有在歸檔模式下才能實施、分析日誌內容等。
對於非歸檔資料庫開啟歸檔功能操作如下:
1)SQL> conn / as sysdba (以DBA身份連接資料庫)
2)SQL> shutdown immediate; (立即關閉資料庫)
3)SQL> startup mount (啟動實例並載入資料庫,但不打開)
4)SQL> alter database archivelog; (更改資料庫為歸檔模式)
5)SQL> alter database open; (打開資料庫)
6)SQL> alter system archive log start; (啟用自動歸檔)
7)SQL> exit (退出)
㈩ SQL SERVER 資料庫如何歸檔
SQL SERVER到2008還沒有提供歸檔模式;
它的日誌是寫到.ldf文件中,如果不加干預的話,這個文件會不停擴大。