最近工作中又遇到生产环境数据库的表被删除的情况,其实这样的事情本不该发生。
几个小建议:
生产环境数据库开发人员只能有查询权限,甚至级别低的开发根本没权限查生产系统,类似表的删除交给专业的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;@H_403_44@
SWITCHOVER_STATUS OPEN_MODE@H_403_44@
-------------------- --------------------@H_403_44@
NOT ALLOWED READ ONLY WITH APPLY@H_403_44@
@H_403_44@
sql> alter database recover managed standby database cancel;@H_403_44@
Database altered.@H_403_44@
sql> alter database recover managed standby database delay 5 disconnect from session; --5分钟,可以按照小时来设置
@H_403_44@
Database altered.@H_403_44@
@H_403_44@
--alter*.log@H_403_44@
RFS[2]: Selected log 4 for thread 1 sequence 51 dbid 1483481154 branch 955700418@H_403_44@
Fri Sep 29 20:39:39 2017@H_403_44@
Media Recovery Delayed for 5 minute(s) (thread 1 sequence 50)@H_403_44@
Fri Sep 29 20:39:47 2017@H_403_44@
Archived Log entry 48 added for thread 1 sequence 51 ID 0x58707be4 dest 1:@H_403_44@
Fri Sep 29 20:39:47 2017@H_403_44@
@H_403_44@
@H_403_44@
MysqL>stop slave;
MysqL>CHANGE MASTER TO MASTER_DELAY = 600;
MysqL>start slave;
MysqL>show slave status \G;
@H_403_44@
@H_403_44@
具体怎么利用延迟复制来恢复数据,大家需要自己做测试了哈
@H_403_44@
作为一个合格的DBA,不会只有一种方法恢复数据的。尽量不要出现误删除操作,毕竟恢复数据的过程,业务也会中断,损失在所难免的。
@H_403_44@
@H_403_44@
原文链接:https://www.f2er.com/oracle/207503.html