等保三---数据备份

915 阅读3分钟

「这是我参与11月更文挑战的第7天,活动详情查看:2021最后一次更文挑战」。

备份对象

  • 关系型数据库
  • 非关系型数据库
  • 业务代码和配置
  • 中间件配置
  • 系统配置
  • 各后台配置
  • 各产品使用文档
  • 代码库
  • 日志

备份方式

  • 定时任务
  • 脚本工具
  • 调度平台
  • 通知系统

备份特性

  • 异地备份
  • 实时备份
  • 周期性备份
  • 定时备份
  • 保留时长

实践方法

本文以理论为主,具体的实际操作还要根据自身情况制定计划

关系型数据库

mysql,postgre此类的关系型数据库可以购买一台其他地区的云主机,做一个从库,实现异地实时的数据备份。然后通过定时任务查询该从库,定期dump一份数据

如果是云上的数据库,都会有自动的备份(一般最多7天),可以调用公有云提供的api,将备份好的数据先下载,然后做一下同步到异地

非关系数据库

redis缓存型数据库,可以直接备份aof文件,也可以在 其他地区采购一台云主机,做一个从节点,实现异地实时的数据备份。再通过配合定时任务备份aof文件

mongodb数据库,需要使用自带的工具mongodump做定时备份,然后采购一台其他地区云主机,使用定时任务,周期性的把数据同步过去

如果是云上的非关系型数据库,同样的公有云也有备份的(一般最多7天),可以调用公有云提供的api,将备份好的数据先下载,然后做一下同步到异地,

日志文件

这里的日志文件包括了访问日志,操作日志,管理日志,错误日志,业务日志等。

可以将这些日志采集到自建立的日志中心,比如elasticsearch搭建的日志中心,或者公有云提供的日志服务

工具方面可以采用filebeat,logstash,等开源工具,也可以采用公有云提供的采集工具

将这些日志采集到日志中心后,基本上就可以实现实时的日志备份了

配置文件

配置文件种类比较多,像系统上的/etc配置,还有各业务的项目配置等,可能会因为历史原因,操作系统不同,业务代码各框架也不同,所以只能针对性的 进行备份。

这里比较推荐的是使用开源定时任务工具来做,比如go语言写的gocron,传送门: github.com/ouqiang/goc… 支持shell脚本,可视化,失败重试,失败通知等,完全可以满足要求

实现方法是写好备份脚本,然后买好其他地区云主机,通过gocron来调度,实现周期性异地备份

以下一个简单的备份脚本demo

#!/bin/bash

#声明环境
export PATH=$PATH

#定义一个当前日期变量
DATE=`/bin/date +%Y%m%d`

#创建每日备份目录
ssh -i .ssh/jpbak jpbak@IP "mkdir ${DATE}"

#每日定期将nginx配置,做异地备份
scp -i .ssh/jpbak -r /data/app/nginx jpbak@IP:/home/jpbak/${DATE}/

#每日定期将系统配置,做异地备份
scp -i .ssh/jpbak -r /etc jpbak@IP:/home/jpbak/${DATE}/

代码库和文档

代码库备份安全要求比较高,可能需要做同城多份,异地一份这样处理,在实现代码库高可用的情况下,再做每日定时备份,具体方法依 使用的代码库而不同。但主要还是将备份文件打包加密 直另一区域

文档备份安全要求也比较高,和代码库一样涉及到公司的核心,所以在备份时需要采用加密,物理隔离等方式来实现

保留时长

日志文件一般6个月以上既可,重要的需要保存2年以上,业务配置和系统配置 需要分版本来做,制定几个周期版本可供在灾难时恢复既可