devops+备份mysql_从零开始的Devops-定时备份

如何完成定时备份

想考虑清楚思路

一在备份机器上添加用户

useradd -m backupjumpserver

passwd backupjumpserver

useradd -m backupwiki

passwd backupjumpserver

useradd -m backupgit

passwd backupgit

useradd -m backupjenkins

passwd backupjenkins

以wiki为例子

远程登陆到jumpserver机器上

获取jumpserver启动账户的的/home/user/.ssh/下面的 idrsa.pub

粘贴到备份机器的新建的backupjumpserver账户下面的autorized_keys上面

在jumpserver机器上检测免密登陆ssh backupjumpserver@ip

成功后就可以免密登陆了

在备份机器上赋予需要备份的例如jira和wiki的文件夹的新建的备份目录以权限

在备份机器上 chown -R backupwiki /data/backupwiki

在备份机器上 chown -R backupjira /data/backupjira

在备份机器上 chown -R backupftp /data/backupftp

在jumpserver上写脚本

在jumpserver的/etc/cron.d目录下面新建backupxxx.sh

用cron执行定时任务

切换到su backupwiki

backupxxx.sh的思路

由应用触发备份

由命令触发

或由docker exec

或docker cp

产生备份

在jumpserver或wiki或jira或什么机器上写自动执行脚本

本地备份产物文件夹

本地备份日志

远程地址

远程路径

写日志开始备份

执行备份

找到过去24小时或者某个备份时间端的文件

找到文件find $LocalBackDir -type f -mmin -10 -name '*.tar' | tail -1

执行scp

清理旧的备份

写日志结束备份

#!/bin/bash

# Gitlab自动备份脚本

#Gitlab 备份地址

LocalBackDir=/var/opt/gitlab/backups

#备份日志文件

LogFile=$LocalBackDir/remote_backup.log

#新建备份日志文件

touch $LogFile

echo "-------------------------------------------------------------------------" >> $LogFile

#记录本地生成gitlab备份日志

echo "Gitlab auto backup at local server, start at $(date +"%Y-%m-%d %H:%M:%S")" >> $LogFile

#执行gitlab本地备份

gitlab-rake gitlab:backup:create >> $LogFile 2>&1

# $?符号显示上一条命令的返回值,如果为0则代表执行成功,其他表示失败

if [ $? -eq 0 ];then

#追加日志到日志文件

echo "Gitlab auto backup at local server successed at $(date +"%Y-%m-%d %H:%M:%S")" >> $LogFile

else

#追加日志到日志文件

echo "Gitlab auto backup at local server failed at $(date +"%Y-%m-%d %H:%M:%S")" >> $LogFile

fi

#查找本地备份目录修改时间为10分钟以内且后缀为.tar的Gitlab备份文件

Backfile_Send_To_Remote=`find $LocalBackDir -type f -mmin -10 -name '*.tar' | tail -1` >> $LogFile 2>&1

echo $Backfile_Send_To_Remote

#!/bin/bash

# 远程登录gitlab服务器,执行自动备份脚本,然后传输至本地

#Gitlab服务器

RemoteServer=git.ufeng.top

RemoteServerUser=root

#Gitlab服务器备份地址

RemoteBackDir=/var/opt/gitlab/backups

#NAS本地备份地址

LocalBackDir=/volume1/homes/gitlab_back

#备份日志文件

LogFile=$LocalBackDir/remote_backup.log

#新建备份日志文件

touch $LogFile

echo "-------------------------------------------------------------------------" >> $LogFile

#记录NAS下载gitlab备份日志

echo "Gitlab backup auto download at NAS, start at $(date +"%Y-%m-%d %H:%M:%S")" >> $LogFile

#远程登录gitlab服务器并执行备份脚本,获取备份文件的名字

result=`ssh $RemoteServerUser@$RemoteServer "sh /home/scripts/gitlab_backup.sh"`

#远程下载备份文件到本地

scp $RemoteServerUser@$RemoteServer:$result $LocalBackDir

echo "Gitlab remote backup file is ${result}" >> $LogFile

# 备份结果追加到备份日志

if [ $? -eq 0 ];then

echo ""

echo "$(date +"%Y-%m-%d %H:%M:%S") Gitlab Remote download Succeed!" >> $LogFile

else

echo "$(date +"%Y-%m-%d %H:%M:%S") Gitlab Remote download Failed!" >> $LogFile

fi

[root@gitlab ~]# vim auto_backup_to_remote.sh

LocalBackDir=/var/opt/gitlab/backups # gitlab备份文件目录

RemoteBackDir=/root/gitlab_backup # 远程的备份目录

RemoteUser=root # 远程服务器用户

RemotePort=22 # 远程服务器端口

RemoteIP=192.168.3.3 # 远程备份的服务器IP

DATE=`date +"%Y-%m-%d"` # 输出当日时间

LogFile=$LocalBackDir/log/$DATE.log # 日志文件

BACKUPFILE_SEND_TO_REMOTE=$(find /var/opt/gitlab/backups/ -type f -mmin -60 -name '*.tar*') # 找到gitlab 60分钟内备份生成的文件

touch $LogFile

echo "Gitlab auto backup to remote server, start at $(date +"%Y-%m-%d %H:%M:%S")" >> $LogFile

echo "---------------------------------------------------------------------------" >> $LogFile

scp -P $RemotePort $BACKUPFILE_SEND_TO_REMOTE $RemoteUser@$RemoteIP:$RemoteBackDir

echo "---------------------------------------------------------------------------" >> $LogFile

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值