下午好,哈伯!
我叫娜塔莉亚。我是NPO Christa应用程序管理员小组的团队负责人。我们是我们公司一组项目的运营商。我们有一个非常特殊的情况:我们在公司的服务器和客户场所的服务器上安装和维护我们的软件。在这种情况下,无需备份整个服务器。仅“必需数据”很重要:DBMS和文件系统的各个目录。当然,客户拥有(或没有)自己的备份程序,并且经常提供某种外部存储以在其中存储备份。在这种情况下,创建备份后,我们将发送到外部存储。
有一段时间,出于备份目的,我们使用了一个bash脚本,但是随着选项的增加,该脚本的复杂性也成比例地增加,并且有一次我们需要“将其销毁,然后...”。
现成的解决方案因各种原因而无法工作:由于需要分散备份,必须在客户端本地存储备份,设置的复杂性,导入替换和访问限制。
在我们看来,编写自己的东西更容易。同时,我希望获得在接下来的N年中足以满足我们情况的东西,但可能会扩大范围。
问题条件如下:
- 基本备份实例是自治的,可以在本地工作
- 备份和日志始终存储在客户端网络中
- – «»
- Linux, ,
- ssh,
- ( ) ,
您可以看到我们在这里得到的内容:github.com/javister/krista-backup该
软件是用python3编写的;适用于Debian,Ubuntu,CentOS,AstraLinux 1.6。
该文档位于存储库的docs目录中。
系统使用的基本概念:
操作-一种实现一项基本操作的操作(数据库备份,目录备份,从目录A到目录B的传输等)。现有操作位于core / actions目录
任务中-一个任务,一组描述一个逻辑“备份任务”
时间表的操作-一个时间表,带有任务执行时间的可选指示的任务集
备份配置存储在yaml文件中;常规配置结构:
- 通用设置
- 操作部分:此服务器上使用的操作的描述
- 时间表部分:所有任务(动作集)的描述,以及如果需要进行此类任务,则由官方进行发布的时间表
可以在此处找到配置示例。
应用程序当前可以执行的操作:
- 支持我们的主要操作:通过pg_dump进行PostgreSQL备份,通过tar进行文件系统目录备份;外部存储操作;目录之间的rsync;轮换备份(删除旧副本)
- 调用外部脚本
- 手动执行单个任务
/opt/KristaBackup/KristaBackup.py run make_full_dump
- 您可以在crontab中添加(或删除)单独的任务或整个计划
/opt/KristaBackup/KristaBackup.py enable all
- 根据备份结果生成触发文件。该功能与Zabbix一起用于监视备份非常有用
- 可以在Webapi或Web模式下在后台工作
/opt/KristaBackup/KristaBackup.py web start [--api]
两种模式之间的区别:webapi没有正确的Web界面,但是应用程序响应来自另一个实例的请求。对于Web模式,您需要安装flask和几个其他软件包,并且这在任何地方都是不可接受的,例如,在经过认证的AstraLinux SE中。
通过Web界面,您可以查看已连接服务器的备份状态和日志:“ Web实例”通过API向“备份实例”请求数据。访问网络需要授权,而不需要访问webapi。
错误传递的备份日志以彩色标记:警告-黄色,错误-红色。
如果管理员不需要参数备忘单,并且服务器操作系统是同类的,则可以编译文件并分发现成的软件包。
我们主要通过Ansible分发此实用程序,首先将其推广到一些最不重要的服务器,然后再对所有其他服务器进行测试。
结果,我们获得了一个紧凑的独立复制实用程序,该自动化实用程序适合即使没有经验的管理员也可以进行操作。对我们来说很方便-也许对您也有用吗?