技术开发 频道

利用龙芯迷你服务器对多个mysql 服务器进行实时备份

  【IT168 技术文档】作为网络管理员,经常需要维护一些mysql 服务器, 比如网站服务器,客户的应用服务器,公司内部的业务系统,内部管理系统等等。

  如何方便安全快速的对多个mysql服务器进行数据备份,就成一个基本的需求。

  本人在实际工作中,使用龙芯mini服务器,同时对几个远程的数据库服务器进行数据备份,效果很好,下面简单介绍一下这套备份系统。

  基本的思路是,用mysql带的mysqld_multi程序,在同一个龙芯mini-pc上,实现几个独立的mysql服务器,让它们分别对几个不同地点的mysql服务器进行远程复制。

  如果对方的mysql服务器在内部子网,则需要用openvpn来实现通信,同时openvpn还可以对通讯流量进行加密,防止数据被窃听。

  每天定时用mysqldump做数据库的导出备份,然后配合binlog(复制日志),可以实现对任意时间点的恢复。

  有一次,外网的论坛被黑客注入,把某一个表给清空了,通过这套备份系统,在不停机的情况下,对数据库进行了修复。 我們首先用每天的日备份,把数据库恢复到昨日的状态, 然后把binlog导出成sql语句文本,用文本编辑器在文本中寻找破坏数据的sql语句,删除这条语句, 然后把这个修改过的sql文本,灌入到恢复的数据库中,我們就得到了正确的数据库,导出损坏的表,并灌入到生产数据库中,就修复了。

  打开mysql的binlog 功能后, mysql服务器会把修改日志保存下来,远程的客户端帐号如果有REPLICATION SLAVE, REPLICATION CLIENT权限,就可以连接服务器,抓取这些binlog,在本地重现修改过程,实现2边数据库的同步,这些binlog文件,还可以用mysqlbinlog程序,导出成sql语句进行查看修改。

  binlog文件名的后缀一般是一个6位数字,客户端会依次抓取这些文件,同步抓取的时间间隔可长可短,几秒或者几天都行,只要时间不超过服务器的binlog文件的保留时间就可以。

  每天在备份服务器用mysqldump导出日备份,然后通过bzip2压缩,再用gpg程序进行加密,加密后的数据,就可以随便通过ftp或者rsync传输到远程的服务器,或者专人进行备份,gpg的加密强度是足够强的,非对称的加密算法,用公钥加密后的文件,只有拥有私有密钥的人,才可以解密,如果要简单一点,也可以用rar进行密码加密,只要密码足够长,加密强度也够用。

  选择龙芯mini服务器,是因为龙芯的功耗比较低,而性能足够,体积小,重量轻,整机体积只有光驱大小,功耗10W,便于部署。当然缺点就是容易丢失,最好能配合aes对存储块设备进行加密,这样即使丢失也不会被导出数据。

  具体的实施步骤,以debian5.0的系统为例子:

0
相关文章