1. 程式人生 > >Oracle & MySQL 老司機說我們要使用(延遲復制)

Oracle & MySQL 老司機說我們要使用(延遲復制)

oracle & mysql 老司機說我們要使用(延遲復制)


最近工作中又遇到生產環境數據庫的表被刪除的情況,其實這樣的事情本不該發生。

幾個小建議:

  1. 生產環境數據庫開發人員只能有查詢權限,甚至級別低的開發根本沒權限查生產系統,類似表的刪除交給專業的DBA來操作,當然有些單位沒有所謂的DBA.

  2. 專職的DBA基本都具備一個屬性,就是每一步的操作都會考慮好後果,所以刪除表之前都會有一個備份。

  3. 建立審核制度,truncate 、drop、 rm這樣的操作可能是致命的,必須要審核。

  4. 可以先rename表,比如把表rename成bak_date_tablename,定期去清理一下。

  5. 數據庫每天的備份必不可少,管他邏輯備份還是物理備份,都是必須有的,看看你家數據庫有沒有,數據丟失從來都不是一件小事。


接下來說說,數據庫的一個小功能,“延遲復制”

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 老司機說我們要使用(延遲復制)