Oracle & MySQL 老司機說我們要使用(延遲復制)
最近工作中又遇到生產環境數據庫的表被刪除的情況,其實這樣的事情本不該發生。
幾個小建議:
生產環境數據庫開發人員只能有查詢權限,甚至級別低的開發根本沒權限查生產系統,類似表的刪除交給專業的DBA來操作,當然有些單位沒有所謂的DBA.
專職的DBA基本都具備一個屬性,就是每一步的操作都會考慮好後果,所以刪除表之前都會有一個備份。
建立審核制度,truncate 、drop、 rm這樣的操作可能是致命的,必須要審核。
可以先rename表,比如把表rename成bak_date_tablename,定期去清理一下。
數據庫每天的備份必不可少,管他邏輯備份還是物理備份,都是必須有的,看看你家數據庫有沒有,數據丟失從來都不是一件小事。
接下來說說,數據庫的一個小功能,“延遲復制”
Oracle dataguard 有延遲復制,MySQL 5.6也有延遲復制,老司機建議您在有條件的情況下,可以開啟延遲復制,一旦數據丟失,我們也可以及時恢復數據。
--Oracle
SQL> select switchover_status ,open_mode from v$database;
SWITCHOVER_STATUS OPEN_MODE
-------------------- --------------------
NOT ALLOWED READ ONLY WITH APPLY
SQL> alter database recover managed standby database cancel;
Database altered.
SQL> alter database recover managed standby database delay 5 disconnect from session; --5分鐘,可以按照小時來設置
Database altered.
--alter*.log
RFS[2]: Selected log 4 for thread 1 sequence 51 dbid 1483481154 branch 955700418
Fri Sep 29 20:39:39 2017
Media Recovery Delayed for 5 minute(s) (thread 1 sequence 50)
Fri Sep 29 20:39:47 2017
Archived Log entry 48 added for thread 1 sequence 51 ID 0x58707be4 dest 1:
Fri Sep 29 20:39:47 2017
--MySQL
mysql>stop slave;
mysql>CHANGE MASTER TO MASTER_DELAY = 600;
mysql>start slave;
mysql>show slave status \G;
具體怎麽利用延遲復制來恢復數據,大家需要自己做測試了哈
作為一個合格的DBA,不會只有一種方法恢復數據的。盡量不要出現誤刪除操作,畢竟恢復數據的過程,業務也會中斷,損失在所難免的。
話說有沒有熱愛打籃球的兄弟,周末可以交流一下數據庫技術和球技哈~
本文出自 “roidba” 博客,請務必保留此出處http://roidba.blog.51cto.com/12318731/1969843
Oracle & MySQL 老司機說我們要使用(延遲復制)