使用centos系统中的crontab命令对mongodb定时备份恢复

在服务器运维中,备份数据是非常重要的一件事情。针对NoSQL数据库中的MongoDB,我们可以使用crontab命令定时备份和恢复MongoDB数据库。

1. 安装MongoDB

首先需要在CentOS系统中安装MongoDB,可以使用以下命令:

yum -y install mongodb-server mongodb

安装完成后,启动MongoDB服务:

systemctl enable mongod

systemctl start mongod

2. MongoDB备份命令

MongoDB备份有两种方式:物理备份和逻辑备份。这里我们使用mongodump命令进行逻辑备份。

通过mongodump命令备份单个数据库,可以使用以下命令:

mongodump -d 数据库名 -o 备份路径

例如:

mongodump -d mydb -o /backup/mongo

通过mongodump命令备份整个MongoDB实例,可以使用以下命令:

mongodump -o 备份路径

例如:

mongodump -o /backup/mongo

备份的数据将保存在指定的备份路径下。

3. MongoDB恢复命令

使用mongorestore命令进行MongoDB数据恢复。先将备份数据拷贝到需要恢复的服务器上,然后使用mongorestore命令恢复数据。

mongorestore -d 数据库名 备份路径

例如:

mongorestore -d mydb /backup/mongo/mydb

4. 定时备份MongoDB

使用crontab命令进行定时备份MongoDB。

首先创建备份脚本文件backup_mongo.sh,内容如下:

#!/bin/bash

# 备份路径

BACKUP_PATH="/backup/mongo"

# 备份文件名

BACKUP_FILE="mongodb-$(date +%Y-%m-%d_%H-%M-%S).tar.gz"

# mongodump路径

MONGODUMP="/usr/bin/mongodump"

# 帐号密码

AUTH_PARAM="--username 用户名 --password 密码 --authenticationDatabase admin"

# 数据库名称

DATABASE_NAME="数据库名"

# 创建备份路径

mkdir -p ${BACKUP_PATH}

# 执行备份命令

${MONGODUMP} ${AUTH_PARAM} -d ${DATABASE_NAME} -o ${BACKUP_PATH}/${BACKUP_FILE%.tar.gz}

# 打包备份文件

tar -zcvf ${BACKUP_PATH}/${BACKUP_FILE} ${BACKUP_PATH}/${BACKUP_FILE%.tar.gz}

# 删除临时文件

rm -rf ${BACKUP_PATH}/${BACKUP_FILE%.tar.gz}

其中,BACKUP_PATH为备份路径,BACKUP_FILE为备份文件名,MONGODUMP为mongodump的路径,AUTH_PARAM为MongoDB验证参数,DATABASE_NAME为需要备份的数据库名称。

执行备份命令后,将备份文件打包并删除临时文件。

接下来使用crontab命令创建定时任务,执行备份脚本。执行以下命令:

crontab -e

在文件末尾加入以下内容:

0 1 * * * sh /backup_mongo.sh >>/var/log/backup_mongo.log 2>&1

其中,0 1 * * * 表示每天1点钟执行备份任务。>>/var/log/backup_mongo.log 2>&1 表示将备份日志输出到/var/log/backup_mongo.log文件中。

保存crontab配置后,定时备份MongoDB任务就创建完成了。

5. 定时恢复MongoDB

在备份MongoDB过程中,我们不仅需要备份数据,也需要确保备份数据能够实现快速恢复。所以,我们还需要对备份数据进行定时恢复测试。

首先创建恢复脚本文件restore_mongo.sh,内容如下:

#!/bin/bash

# 数据库名称

DATABASE_NAME="数据库名"

# 备份路径

BACKUP_PATH="/backup/mongo"

# 获取最新备份文件名

BACKUP_FILE=$(ls -t1 $BACKUP_PATH/*.tar.gz | head -n1)

# mongorestore路径

MONGORESTORE="/usr/bin/mongorestore"

# 帐号密码

AUTH_PARAM="--username 用户名 --password 密码 --authenticationDatabase admin"

# 删除现有数据库

${MONGORESTORE} ${AUTH_PARAM} --drop -d ${DATABASE_NAME} ${BACKUP_FILE%.tar.gz}

# 恢复数据

${MONGORESTORE} ${AUTH_PARAM} -d ${DATABASE_NAME} ${BACKUP_FILE%.tar.gz}

其中,DATABASE_NAME为需要恢复的数据库名称,BACKUP_PATH为备份路径,MONGORESTORE为mongorestore的路径,AUTH_PARAM为MongoDB验证参数。

脚本文件执行时,会从备份路径中获取最新的备份文件,并使用mongorestore命令进行数据恢复。

接下来使用crontab命令创建定时任务,执行恢复脚本。执行以下命令:

crontab -e

在文件末尾加入以下内容:

0 2 * * * sh /restore_mongo.sh >>/var/log/restore_mongo.log 2>&1

其中,0 2 * * * 表示每天2点钟执行恢复任务。>>/var/log/restore_mongo.log 2>&1 表示将恢复日志输出到/var/log/restore_mongo.log文件中。

保存crontab配置后,定时恢复MongoDB任务也就创建完成了。

6. 总结

本文介绍了在CentOS系统中使用crontab命令进行MongoDB定时备份和恢复的方法。通过定时备份和恢复,可以确保数据安全可靠,并加强数据恢复的可行性。

数据库标签