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

工具介绍

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

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

是否满足你的需求?

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

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

工具的安装

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

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

$ gobackup -v
gobackup version 0.7.1

相关的配置

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

# 基本节点,描述有多少个备份方案
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: 数据库密码

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

执行备份

$ gobackup perform

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

定时备份

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

查看定时任务

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

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

注意事项

  1. 使用阿里云oss的时候,如果你的服务器和 oss都在阿里云,则强烈推荐使用内网节点,上传速度非常快。
  2. 注意配置的时候bucket是你的bucket的名称,不是bucket域名。
© 著作权归作者所有
这个作品真棒,我要支持一下!
分享日常开发中所用的技术,涉及到前端,后端,开发工具推荐等。
0条评论
top Created with Sketch.