在服务器运维中,备份数据是非常重要的一件事情。针对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定时备份和恢复的方法。通过定时备份和恢复,可以确保数据安全可靠,并加强数据恢复的可行性。