备份还原mongodb

闲扯

在大公司有时候分工很明确,会发生一个这样的事情,有些工作你本应该会,但是你却不会,因为一直有人替你做这个事情. 但是当自己不得不做的时候却发现自己还真不会搞.

我遇到了,我需要从生产环境备份mongodb下来还原到测试环境,这个工作一直由DBA来处理,但是由于防火墙 etc.原因, 不得不自己找一台跳板机来备份数据库,然后再找DBA还原到测试库.

直接还原整个过程吧,没处理过的可以一块探讨.

安装mongodb

我现在一台可以连通生产的机器上安装mongodb,centos7为例:

用centos就找centos对应的mongodb, 不然安装后会报一个mongod: cannot execute binary file的问题,附上mongodb截图和地址https://www.mongodb.com/try/download/community

 

1. 安装openssl

sudo yum install libcurl openssl

2. get 并 解压mongodb

wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-4.4.7.tgz
tar -zxvf mongodb-linux-x86_64-rhel70-4.4.7.tgz 
export PATH=<mongodb-install-directory>/bin:$PATH

其中 <mongodb-install-directory>就是解压后的路径,一直到bin

我是在/usr/local/mongodb路径下下载的,所以解压后,

mongodb-install-directory为/usr/local/mongodb/mongodb-linux-x86_64-rhel70-4.4.7/bin

sudo mkdir -p /var/lib/mongo
sudo mkdir -p /var/log/mongodb
sudo chown `whoami` /var/lib/mongo     # 设置权限
sudo chown `whoami` /var/log/mongodb   # 设置权限
mongod --dbpath /var/lib/mongo --logpath /var/log/mongodb/mongod.log --fork

有可能会报fork错误,可以把fork去掉,这时候就启动了mongo

这时候理论上执行mongo就不会提示找不到命令了,若是依旧提示找不到命令,则检查export PATH=<mongodb-install-directory>/bin:$PATH这一步的路径是不是正确,我多执行了几次就好了.

这时候我去执行mongodump 发现找不到命令,哎,咋回事呢. 到bin文件里面一看,并没有mongodump.

备份数据库mongodump

1. 原来版本中已经不再同时包含这些维护工具了,需要单独下载. 下载地址:https://www.mongodb.com/try/download/database-tools

选择和你的操作系统一致的版本

 2. 在/usr/local/mongodb路径下面下载并解压tool

wget https://fastdl.mongodb.org/tools/db/mongodb-database-tools-rhel70-x86_64-100.4.0.tgz

tar -zxvf mongodb-database-tools-rhel70-x86_64-100.4.0.tgz

 这时候你在/usr/local/mongodb/mongodb-database-tools-rhel70-x86_64-100.4.0/bin 下面是可以看到mongodump 的,但是这之后执行mongodump依旧会报找不到命令. 原因就是配置的export PATH. 

3. 移动bin文件到mongo的bin文件

/usr/local/mongodb/mongodb-database-tools-rhel70-x86_64-100.4.0/bin路径下面执行

mv bin /usr/local/mongodb/mongodb-linux-x86_64-rhel70-4.4.7

4. 执行完之后mongo和tools都在mongo的路径下面了,即/usr/local/mongodb/mongodb-linux-x86_64-rhel70-4.4.7路径下面

5. 这时候可以执行mongodump的命令了.

mongodump -h 10.0.0.0 --port 27017 --authenticationDatabase admin -d test_db --username db_admin --password admin@123 --out /data/backup/test/test_db --gzip

其中10.0.0.0为源数据库地址 27017为端口, test_db为要备份的数据库名称;

db_admin为数据库账号

admin@123为数据库密码

/data/backup/test/test_db 备份路径,建议是test_db和数据库名称相同

6. 等待数据库备份完成

还原数据库mongorestore

基本和备份一样,直接执行脚本就好了

mongorestore --host 10.0.0.1 --port 27017 --username db_admin --password "admin@123" --gzip /data/backup/test/test_db

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值