linux数据备份与恢复

发布于:2024-05-09 ⋅ 阅读:(27) ⋅ 点赞:(0)

目录

前言

1、数据备份和恢复中的两个关键性指标

2、linux系统的定时任务

1)本地定时任务crontab

在实验测试过程中,遇到多次crontab任务不执行问题 ,总结下来主要有几个方面原因:

2)分布式定时任务系统Jenkins

3、备份存储位置的选择

1)本地

2)远程

3)离线*

4、数据备份

1)文件备份

2)数据库的备份(周期性测试备份结果的有效性)


前言

只要发生数据传输,数据存储,和数据交换,就有可能发生数据故障。,如果没有数据备份和数据恢复措施,就有可能发生数据丢失。

1、数据备份和恢复中的两个关键性指标

指标 概念解释
恢复时间目标(RTO) 表示业务从中断到恢复正常所需要的最短时间。通常通过建设冗余的灾备系统可以有效减少恢复所用时间,但是这种方式可能会极大增加支出成本。另外一种方法是依赖与 数据备份来进行业务恢复。这种方式在数据量较大或者是业务关联较复杂的情况喜爱,花费的恢复时间可能会比较长。
恢复点目标(RPO) 表示业务系统所能承受的最大数据丢失量。

2、linux系统的定时任务

1)本地定时任务crontab

crond在下面位置来搜索定时任务

目录 作用
/var/spool/cron 存放每个用户包括root的定时任务,每个任务以创建者的名字命令。一般一个用户最多只有一个定时任务。
/etc/crontab 这个文件负责安排由系统管理员制定的维护系统以及其他任务
/etc/cron.d 这个目录用来存系统要执行的定时任务文件或者脚本
/etc/cron.hourly 这个目录用来存放每个小时执行的定时任务
/etc/cron.daily 这个目录用来存放每天执行的定时任务
/etc/cron.weekly 这个目录用来存放每周执行的定时任务
/etc/cron.monthly 这个目录用来存放每月执行的定时任务

在实验测试过程中,遇到多次crontab任务不执行问题 ,总结下来主要有几个方面原因:

1、crond服务未运行

2、环境变量PATH不完全导致命令找不到。默认情况下,Crond给与的定时任务的PATH环境变量为/usr/bin:/bin  ,所以如果定时命令或者脚本中调用的使用程序没有在这个路径下的话会无法调用到。因此,需要在定时任务脚本中把PATH环境变量做控制或者使用绝对路径。

PATH=/usr/local/sbin:/usr/local/sbin:/sbin:/bin:/usr/sbin:/usr/bin
这个PATH环境变量的值,当操作系统在执行命令时应该查找的目录路径。放在脚本中,执行命令时,操作系统会在这些路径中查找该命令的可执行文件。如果路径中没有指定命令,就会返回命令不存在的错误信息。

3、权限问题。比如,脚本没有执行权限。可能定时用户所属的用户对某个目录没有读写权限,也会失败。

另外:

定时任务的日志位于/var/log/cron。在使用定时任务执行备份作业的过程中有异常的话,参考这个日志的输出来辅助查找定位问题。

2)分布式定时任务系统Jenkins

当需要大规模使用本地定时任务crontab的情况下,上面的方法会遇到很多问题。

将JenKin作为分布式定时任务来使用是个很好的选择。

3、备份存储位置的选择

1)本地

DAS、NAS、SAN、DFS

2)远程

使用wput进行远程备份。wput是一个像wget那样的,可移植的FTP客户端命令行工具。和wget不同是,wget用于下载文件,wput用于上传文件。



#以使用ftp用户名ftpuser,密码为admin123上传本地备份文件/opt/mybackup.zip到FTP服务器192.168.81.1为例,使用的命令如下

wput /opt/mybackup.zip ftp://frpuser:admin123@191.168.81.1/backup

3)离线*

离线存储备份一般由磁带和磁带机来组成。

在线备份和离线备份的区别对比

在线备份缺点 离线备份优点
在线备份是基于网络提供服务的,可能会被入侵而导致备份丢失 磁带备份技术成熟
在线备份存储系统底层所使用的硬盘等硬件资源会老化,进而导致故障率增加,进而不适合长期保存 磁带容量大,成本低
用磁带对数据进行离线保存更加安全
磁带保存时间长(一般可以稳定存储10年以上),是长期数据归档及数据长期保存的理想介质

4、数据备份

1)文件备份

定期对重要系统文件和应用配置文件进行备份。可以使用tar来打包和压缩备份。

文件备份脚本:

#! /bin/bash
#这是一个文件备份脚本

#在备份脚本中定义行的PATH环境变量,以避免出现crontab中找不到命令的情况
PATH=/usr/local/sbin:/usr/local/sbin:/sbin:/bin:/usr/sbin:/usr/bin

backup_work_dir='/app/backup'
cd $backup_work_dir
#将脚本中的标准输入和标准输出错误输出到文件中,以便在文件中查看脚本的输出和错误信息
echo "------------------------------START---------------------------------"
date "+%Y-%m-%d %H:%M:%S"44444444444
#备份root用户的定时任务
crontab -l -u root > root.cron.txt 
#备份ami用户的定时任务
crontab -l -u ami > ami.cron.txt

#备份当前的进程列表
ps aux > ps.txt 
dt=$(date +%Y-%m-%d)
ipaddr=$(grep IPADDR /etc/sysconfig/network-scripts/ifcfg-eth* | awk -F"=" '{ print $2 }')
filetargz="backup_${ipaddr}_${dt}.tar.gz"
tar --exclude='log/' --exclude='logs/' --exclude='log.' --exclude='.log' -czf ${filetargz} openapi.cron.txt root.cron.txt ps.txt /etc/supervisord.conf /usr/local/apache/conf /app/www/app/scripts /usr/local/sphinx/etc /usr/local/sphinx/scripts
/usr/local/bin/wput ${filetargz} ftp://backup:w3eL4tVHaM@10.128.79.40/ #使用 wput上传备份后的文件到10.128.79.40这个FTP服务器上

find ${backup_work_dir} -type f -name 'backup_*.tar.gz' -mtime +30 -exec rm {} \; #删除本地30天以上的备份文件,以避免磁盘空间满的问题
echo "----------------------------END------------------------------------"



 

2)数据库的备份(周期性测试备份结果的有效性)

mysql数据备份工具 描述
mysqldump

mysql自带工具,目录在bin目录下面

/usr/local/mysql/bin/mysqldump支持基于innodb的热备份,但是由于是逻辑备份,速度不是很快,适合备份比较小的场景。mysqldump+二进制日志可以实现基于焊点回复

基于LVM快照备份 在物理备份中,有基于文件系统的物理备份(LNM快照)
tar包 支持完全备份和增量备份,而且备份速度非常快

传送门:数据库的备份和恢复-CSDN博客