DreamBackup

开发背景

数据备份本来就是很常用的操作。

网站数据库记录已超百万,以前用的备份工具效果不理想,自带的数据备份早因数据过多而失效。多年来一直手工操作备份、打包,操作似乎有点太繁琐,而且有些时候因工作太忙,难免会延误备份。

近年来的开发项目多与数据库相关,随着项目的增加,数据库的增加,备份越来越复杂。

之前有考虑过用PHP做一个备份工具,但始终是不适合,因而一直没有落实。

之前所学的编程语言大都是Windows下的,在Linux下无法很有效地使用。所以,在学习了Go后,发现用来做此项目实在是非常适合,终于可以把之前的想法实现出来。

开发限制

MySQL的备份工具普遍是PHP做的,但是我网站也是用PHP做的。在进行备份时,因为数据量大,备份时间比较长,导致PHP进程一直卡住,进而影响到网站的正常访问。

由于PHP有在线运行这一特性。虽然可以取消,但是需要高权限,而且一旦设置就全局启用,一旦其中一个脚本卡住就很容易导致全部当机,非常不安全。

PHP还有被动运行的特性,不适合做定时任务,尤其是空闲期运行的定时任务。

PHP的开源特性,用于加密解密数据库,实在是不适合。

综上所述,PHP不适合本项目。

定时备份

由于数据备份涉及到大量数据库读取操作,会影响到网站的响应速度。

定时备份有2个方面,一方面是指以固定的周期,对数据库进行备份。

另一方面,是指在固定的时间,对数据库进行备份。

而这个时间,必须是网站访客较少的时间,既能加快备份的速度,又可以减少对网站的影响。

分卷备份

数据库备份工具普遍都有分卷备份功能。

开发的想法是好的,可是,对于大数据的网站,反而不适用。

首先是分卷备份会导致备份时间大幅延长,尤其是对于PHP做的备份工具,会导致整个PHP进程卡住,影响到其他PHP进程,特别是网站的正常运行。

更重要的是,分卷备份对导致大量重复的数据库分页操作,增加数据库负载。而且在备份过期中,不可避免地产生表锁。重复地分页,不断重复的表锁,极大地影响到相关项目的正常运行。也是因为重复地分页操作,导致备份会越来越慢。

在之前的一个企业项目中,就有一个1G多的数据库,开始的时候1秒一个分卷,10个分卷后就1分钟一个,到后面几个小时都备份不了一个分卷。

参数加密

为了方便安装使用,所有配置都是通过命令行参数设置的。

然而要备份数据库,不可避免地需要数据库的账号密码。

但是把相关资料明文放出来,始终有所不妥。最后的解决方法就是加密参数了。

加密算法是通过正反向乱序四次加密的,所以,无论是增、删、篡改密文或部分密文,都无法得到原始数据。

压缩备份

数据库大多数是文本内容,所以有非常可观的压缩率。

经过压缩后,既可以减少空间占用,又加快了传输速度。

这里特意使用了7z压缩,既不需要像RAR一样需要商业授权,也有着比ZIP、RAR更高的压缩率。唯一不足就是压缩时间稍长,但毕竟是在服务器空闲时间处理的,不会影响到其他项目的正常运行。

加密备份

为了数据安全,导出的数据库备份会被加密处理(可选)。

远端备份

数据库备份完成后,会被发送到远端统一处理。

然后用户就可以到远端定时管理、下载数据库备份。

操作流程

1. 准备好相关参数

示例参数

-mysqldump=/usr/mysql/bin/mysqldump -7z=/usr/7z/p7zip -password=123 -dbhost=localhost -dbuser=root -dbpass=root -dbport=3306 -url=http://127.0.0.1:8080/

2. 在服务端生成密文

3. 在数据库服务器上安装客户端,并添加crontab任务

运行效果

35 评论

  1. Thanks for the auspicious writeup. It if truth be told was once a enjoyment account it. Look complex to far delivered agreeable from you! However, how could we keep up a correspondence?

  2. Please let me know if you’re looking for a article writer for your blog. You have some really good articles and I feel I would be a good asset. If you ever want to take some of the load off, I’d love to write some material for your blog in exchange for a link back to mine. Please shoot me an email if interested. Cheers!

  3. They contact the creator Shonda even while she doesn’t truly like becoming referred to as like that. Managing folks has been his career for some time and his income has been truly satisfying. California is where I’ve generally been residing but I will have to go in a yr or two. I am seriously fond of performing interior design but I don’t have the time lately.

  4. I was just looking for this info for a while. After six hours of continuous Googleing,
    at last I got it in your site. I wonder what is the lack of
    Google strategy that do not rank this kind of informative websites
    in top of the list. Generally the top web sites
    are full of garbage.

  5. Nice to meet you, my title is Brendan but I don’t like when people use my full identify. Jogging is the factor I adore most. Supervising is exactly exactly where his major revenue arrives from but he plans on shifting it. Years in the previous we moved to Louisiana.

  6. I cling on to listening to the news talk about receiving boundless online grant applications so I have been looking around for the finest site to get one. Could you advise me please, where could i find some?

  7. Having read this I believed it was really informative. I appreciate you finding the time and energy to put this short article together. I once again find myself spending a significant amount of time both reading and commenting. But so what, it was still worth it!

发表评论

电子邮件地址不会被公开。