ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

部署之使用 backup 来备份数据库 (二)

2020-12-22 19:03:06  阅读:387  来源: 互联网

标签:备份 db crontab rails365 pg backup 数据库


1. Backup是什么?

Backup是一个ruby的gem,是一个强大的、开源的数据库和文件备份工具。它能备份你的数据库,例如MongoDBMySQLPostgreSQL,还有备份你系统上的目录或文件,例如,可以备份一些重要的配置文件等。备份完之后,它能够支持上传到相应的存储介质,例如本地文件系统,或者通过ftp、ssh等协议连接的远程服务器,亦或是DropboxS3等存储服务器中。备份好的数据支持用压缩工具压缩容量,节约传输和存储资源。还有一点是,它支持通知机制,备份完数据后,它能够通过一些机制,例如slackHipChat、电子邮件等形式来通知。Backup结合linux系统的crontab服务可以实现按时备份。backup这个是其官网,它的源码放于此backup

2. 备份过程

下面就以的实战过程来讲解,我用的是阿里云主机,数据库是PostgreSQL,还有一些配置文件来备份,备份的存储位置就放在主机上的一个目录下,配合crontab服务在凌晨一点自动备份。

2.1 第一步,安装backup这个gem。
gem install backup
2.2 第二步,生成Backup配置文件

backup help generate:model这个指令可以查看具体的参数使用方法。

backup generate:model --trigger rails365_pg \
  --archives --storages='local' --compressor='gzip'

运行完这个命令之后,会在当前目录下产生Backup目录。

编辑新生成的配置文件vim Backup/models/rails365_pg.rb。

Model.new(:rails365_pg, 'Description for rails365_pg') do

  # 备份文件
  archive :my_archive do |archive|
    # Run the `tar` command using `sudo`
    # archive.use_sudo
    archive.add "/home/yinsigan/Backup/models/rails365_pg.rb"
    archive.add "/etc/nginx/conf.d/rails.conf"
    archive.add "/etc/redis/redis.conf"
  end

  # 保持15个备份
  store_with Local do |local|
    local.path       = "~/backups/"
    local.keep       = 15
  end

  # 使用Gzip压缩备份的数据
  compress_with Gzip

  # 备份PostgreSQL数据库
  database PostgreSQL do |db|
    # To dump all databases, set `db.name = :all` (or leave blank)
    db.name               = "rails365_pro"
    db.username           = "postgres"
    db.password           = "xxxxxxx"
    db.host               = "localhost"
    db.port               = 5432
    db.socket             = "/var/run/postgresql/"
    # When dumping all databases, `skip_tables` and `only_tables` are ignored.
    # db.skip_tables        = ["skip", "these", "tables"]
    # db.only_tables        = ["only", "these", "tables"]
    db.additional_options = ["-xc", "-E=utf8"]
  end
end
2.3 执行备份
backup perform --trigger rails365_pg

可能你会发现备份的过程中老是不成功。报的是关于PostgreSQL的认证方面的错。

我是参数这篇文章getting-error-peer-authentication-failed-for-user-postgres-when-trying-to-ge解决的。

找到这个文件

find /etc/postgresql | grep pg_hba.conf

编辑它,把local all postgres peer这一行中的peer改成md5

最后,记得重启postgresql服务器

$ sudo service postgresql restart
3.4 使用crontab按时备份

crontab在unixlinux是很常见的服务,相当于windows的计划任务,就是可以指定时间运行一些程序或任务。

crontab -e

执行此命令进入crontab编辑页面。添加下面一行。

0 1 * * * /bin/bash -l -c 'backup perform --trigger rails365_pg'

重启crontab服务sudo service cron restart

这样就会每天的1点时分进行备份。

关于具体的crontab语法可以自行google。

这里要提到一个技巧。

我们需要debug或测试crontab的效果,你总不能等待一点钟来测试吧。

我们先临时改成每分钟备份一次。

* * * * * /bin/bash -l -c 'backup perform --trigger rails365_pg'

改完后,重启crontab服务sudo service cron restart

执行以下命令观察是否有正确的信息输出。

tail -f /var/log/syslog | grep CRON

再查看backups/rails365_pg是否有相应的目录或文件产生。如果有,说明成功了。

再把时间改回凌晨一点,然后重启crontab就OK了。

完结。

标签:备份,db,crontab,rails365,pg,backup,数据库
来源: https://blog.csdn.net/weixin_39637597/article/details/111564322

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有