自动备份远程mongodb数据库并拉取到本地

自动备份远程mongodb数据库并拉取到本地

目标:
远程服务器 1.1.1.1 中运行mongodb数据库,需要将 1.1.1.1中的mongodb数据拉回公司测试服务器中

1.远程服务器中编写自动备份mongodb脚本

①编写脚本
# vim /opt/back_mongo.sh
#!/bin/bash

today_date=`date "+%Y%m%d"`
# 创建备份当天日期文件夹
mkdir $today_date
# 导出convert_v1_prod库
/usr/local/mongodb-linux-x86_64-3.4.6/bin/mongodump -h 127.0.0.1 -u hichinasoftUser -p hichinasoft2018 -d convert_v1_prod -o /opt/mongo_back/$today_date/ --authenticationDatabase admin
# 导出chinasoft_v2_prod
/usr/local/mongodb-linux-x86_64-3.4.6/bin/mongodump -h 127.0.0.1 -u chinasoftPE -p chinasoftPE2017 -d chinasoft_v2_prod -o /opt/mongo_back/$today_date/ --authenticationDatabase admin
# 导出
/usr/local/mongodb-linux-x86_64-3.4.6/bin/mongodump -h 127.0.0.1 -u chinasoftonline -p chinasoftonline2018 -d data_hichinasoft_prod -o /opt/mongo_back/$today_date/ --authenticationDatabase admin

# 赋权,方便rsync进行拉取
chown -R apache.users /opt/mongo_back

# 删除10天前的文件
find /opt/mongo_back/ -mtime +10 -exec rm -rf {} \;


②添加计划任务crontab -e

#### backup mongodb every day
10 05 * * * /bin/bash /opt/back_mongo.sh > /dev/null 2>&1

2.公司本地拉取mongo的备份,4个小时执行一次

# 计划任务
15,30,45 */4 * * * /bin/bash /opt/mongoback_tolocal.sh >/dev/null 2>&1

[root@localhost 2018-11]# vim /opt/mongoback_tolocal.sh
#!/bin/bash
SIP="1.1.1.1"

DATE="`date -d "${a} day" +%Y-%m`"
# 拉取远程服务器 1.1.1.1 上 的 mongodb的备份 目录到本地
/usr/bin/rsync -avrp -P --password-file=/data/www/.rsync/rsyncd.pass apache@${SIP}::apache/opt/mongo_back/ /data/mongo_back_local/

find /data/mongo_back_local/ -mtime +10 -exec rm -rf {} \;

 

非默认端口导出、导入数据的示例

1.导出mongodb的库结构和数据(貌似不能只导出结构)

# 有密码
/usr/local/mongodb-linux-x86_64-3.4.6/bin/mongodump -h 127.0.0.1 -u esignPE -p esignPE2017 -d esign_v2_prod -o /opt/esign_v2_prod20200720.json --authenticationDatabase admin

没有密码:
/usr/local/mongodb/bin/mongodump -d graphics -o /opt/graphics/ --authenticationDatabase admin

2.创建库的用户、密码
#链接mongo
/usr/local/mongodb/bin/mongo

#进行认证
use admin
db.auth("admin", "admin!@#")
 
#创建用户hipdfOnlineUser ,所属库为hipdf_online_prod ,权限为读写
db.createUser(
{
user: "graphics_mongo_user_write",
pwd: "pass",
roles: [ {role:"readWrite", db:"graphics"} ]
}
)

[root@eus-image-design-mongo01:/opt/graphics]# ls
draft.bson  draft.metadata.json  project.bson  project.metadata.json

3.导入到库中 非默认端口使用 --port 参数
/usr/local/mongodb/bin/mongorestore -u graphics_mongo_user_write -p 'pass' -h 127.0.0.1 --port 20000 -d graphics /opt/graphics/ --authenticationDatabase admin

 # 导入json文件到 graphics 库  draft 表中
/usr/local/mongodb/bin/mongoimport -h 127.0.0.1 --port 20000 -d graphics -c draft -u graphics_mongo_user_write -p 'pass'  --authenticationDatabase admin --file /root/draft.json

 

根据时间戳查找并删除数据

> db.jobs.remove({next_run_time:{$lt:1688658804}})
WriteResult({ "nRemoved" : 4600 })
> db.jobs.find({next_run_time:{$lt:1688657802}})

 

posted @ 2019-01-30 15:10  reblue520  阅读(2268)  评论(0编辑  收藏  举报