我们常常听说某某网站的程序猿又删库跑路了,怎么防止程序猿删库到跑路呢?
首先我们先了解下数据库的高可用架构,现网上我们很少只使用一个数据库,只有一个数据库容易发生单点故障,如果我们有多个备库,在主库故障的时候,可以切换到备库,那样子就能够避免读取不到数据。但是,程序猿把主库删除了,如果是直接登录到主机上面删除数据,那么不怕,我们还是可以切换到备机,继续服务,只有用数据库命令的删除(也可以是代码),命令也会被同步到备库,备库也会删除,这才是真正地删库,老板才会感知到。
即便我们遇到一个高级一点的程序猿,如果他是使用上述第二种方法删除数据库的,我们也不怕,怎么处理呢?还好并不是没有办法,通常我们DBA每天都会备份数据库,每天我们都会把所有数据备份一次,另外,每个数据库的操作,都会有binlog,binlog是Mysql sever层维护的一种二进制日志,其主要是用来记录对mysql数据更新或潜在发生更新的SQL语句,并以”事务”的形式保存在磁盘中。我们可以取出昨天的备份,随后将今天的binlog,除了删库命令之外,进行回放binlog,逐个进行恢复。
尽管我们能够取到昨天的数据,然后回放今天的binlog,但恢复毕竟要花时间,在一些公司,通常会有延迟数据库这种东西,就是数据库插入后,会延迟1小时再同步到备库,这样子,当发生删库的时候,相比于昨天的备份,数据更近更新,可以更快地进行回放找到最新地数据。这种延迟数据库,我们一般会提供给大数据这种对数据实时性要求不高,但有可能有大批量读取地应用使用。也避免了BI突发的大数据读取造成现网的波动。
如何防止程序猿删库到跑路呢?我们一般有几种方法:
1.限制账户权限,不是随便人都能执行写权限。不同的账户能操作的数据库也是有限的,避免一个账号删除所有库。
2.定期进行演练,进行数据恢复
当然,前面两种方法治标不治本,真正防止程序猿删库到跑路最好地方法,只要记住下面口诀:加钱!!!