2016 - 2024

感恩一路有你

CentOS下MongoDB定时备份及SSH上传其他服务器

浏览量:3288 时间:2024-01-24 12:55:19 作者:采采

创建并编辑脚本

在CentOS系统下,我们需要创建并编辑一个名为的脚本。该脚本用于配置一些变量,包括要备份的数据库名称、数据库用户名和密码、备份输出路径、生成的备份文件名称等。

```

#!/bin/bash

# 配置备份相关变量

DBNAME("database1" "database2") # 要备份的数据库名称数组

USER"root" # 数据库用户名

PASSWORD"123456" # 数据库密码

OUT_DIR"/data/backup/" # 备份输出路径

DATE$(date %Y%m%d%H%M%S) # 生成的备份文件名称

DAY7 # 删除7天前的备份文件

# 创建并编辑MongoDB备份函数

dbDump() {

echo "开始备份..."

for ONEDB in ${DBNAME[@]}

do

mongodump -u ${USER} -p ${PASSWORD} -d ${ONEDB} -o ${OUT_DIR}${DATE}

done

cd ${OUT_DIR}

tar -czvf "${DATE}.tar" ${DATE}

sudo rm -rf ${DATE}

echo "备份完成!"

}

# 创建并编辑删除函数,用于删除保留天数之外的备份文件

deleteOld() {

echo "开始删除..."

find ${OUT_DIR} -mtime ${DAY} -name "*.tar" -print -exec rm -rf {} ;

echo "删除完成!"

}

# 创建并编辑上传文件函数

senddbdata() {

echo "开始上传..."

python2 ${DATE}.tar

echo "上传完成!"

}

# 执行备份、删除旧数据和上传文件函数

dbDump

deleteOld

senddbdata

```

创建Python上传脚本

在`/usr/local/mongodump`目录下,我们创建一个名为``的Python脚本。该脚本用于通过SSH上传备份文件到其他服务器。

```python

import os

import shutil

import re

import paramiko

import math

import sys

host '119.23.128.*'

port 22

username 'root'

password '123456'

def printProgress(curPercent, totalPercent):

rate int((curPercent / totalPercent) * 100)

print('上传进度:', str(rate), '%')

def sendFile(filePath):

transport ((host, port))

(usernameusername, passwordpassword)

sftp _transport(transport)

for fromPath, toPath in filePath:

print('发送文件:', fromPath, ' 到 ', toPath)

sftp.put(fromPath, toPath, callbackprintProgress)

()

def main():

sendFilePath [['/usr/local/mongodata/dbBackup/', [1]], ['/usr/local/backup/hainan_', [1]]]

sendFile(sendFilePath)

if __name__ '__main__':

main()

```

定时执行备份任务

最后,我们配置定时任务,让备份脚本定时执行。

打开终端,输入`crontab -e`进入编辑模式,在文件末尾添加以下内容,并保存退出。

```

30 4 * * *

```

解释:

- 第1列:30表示每小时的30分钟触发一次

- 第2列:4表示每天的4点触发

- 第3列:*表示每月的任意日期触发

- 第4列:*表示每周的任意日期触发

- 第5列:*表示任意月份

- 第6列: 表示要运行的命令

最后,重启cron服务以使配置生效。

```

service cron restart # CentOS 6

systemctl restart # CentOS 7

```

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。