一款简单的数据库备份工具—gobackup

工具介绍

我们做完一个项目正式上线后,生产环境的数据是很重要的,因此有必要定时备份数据库。这里推荐一款安装和配置都很简单的备份工具—gobackup

gobackup是基于go语言开发的,作者也写了相关的帖子介绍。我也是看了这篇帖子之后,试用了一下,发现确实简单好用。鉴于ruby圈的小众,因此在这里也写篇文章,记录下如何使用,让大家也多一个可选择的备份工具。

是否满足你的需求?

gobackup目前支持的数据库有: MySQL,PostgreSQL,Redis,MongoDB,存储的方式有: Local,FTP ,SCP,Amazon S3,Aliyun OSS

在项目中,我使用的数据库是postgresql, 我的数据库也准备备份到Aliyun OSS上,因此是满足我的需求的。

工具的安装

1
$ curl -sSL https://git.io/gobackup | bash

工具默认安装在/usr/local/bin/gobackup,可以看下工具的版本,看看是否安装成功

1
2
$ gobackup -v
gobackup version 0.7.1

相关的配置

gobackup默认会去寻找~/.gobackup/gobackup.yml,/etc/gobackup/gobackup.yml这两个配置文件,因此我们可以选择其中的一个去编辑我们的配置。
这里贴下我的配置文件~/.gobackup/gobackup.yml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# 基本节点,描述有多少个备份方案
models:
# 这个方案名字可以随便取
novels:
compress_with:
# 压缩方式
type: tgz
#存储 我这里是阿里云 oss
store_with:
type: oss
keep: 14
path: 在oss上文件的存放路径
bucket: oss的bucket
endpoint: oss的节点
access_key_id: oss-access-key
access_key_secret: oss-key-secret
databases:
novels:
type: postgresql
host: localhost
port: 5432
database: novels_production
username: 数据库用户名
password: 数据库密码

如果你要备份文件夹或者备份其它数据库,可以参考更加详细的配置

执行备份

1
$ gobackup perform

通过这个命令,就手动完成了一次备份操作。但是真正的线上数据,是需要定时备份的,因此得加上定时任务。

定时备份

使用Crontab做定时任务,如何设置可以参考我的上一篇文章使用 logrotate 分割日志

查看定时任务

1
2
$ crontab -l
0 0 * * * /usr/local/bin/gobackup perform >> ~/.gobackup/gobackup.log

这个配置是每天凌晨0点执行一次任务,如果你想要在其它的时间定时执行,可以参考下crontab定时任务的介绍

注意事项

  1. 使用阿里云oss的时候,如果你的服务器和 oss都在阿里云,则强烈推荐使用内网节点,上传速度非常快。
  2. 注意配置的时候bucket是你的bucket的名称,不是bucket域名。