mongo,mongodump,mongorestore

公司在20年将客户19年及之前的数据给归档了,现在他们想要做BI项目,需要将这些数据给捞出来,这篇文章主要介绍mongo数据的备份与恢复。
mongo及组件的安装参考文章

1.本地模拟

先在虚拟机上模拟一下备份与还原,然后再实操

1.1.在虚拟机上安装配置mongo

下面以安装mongodb3.x为例。mongoDB正式提供packge安装支持,在他们的仓库中包含下面的包:

mongodb-org:这个包会自动安装下面所有的组件包
mongodb-org-server: 包含mongod,和相关配置和初始脚本
mongodb-org-mongos: 包含mongos
mongodb-org-shell: 包含mongo脚本
mongodb-org-tools: 包含下面的mongodb工具:mongoimport bsondump,mongodump,mongoexport,mongofiles,
mongoplog,mongoperf,mongorestore,mongostat和mongotop

创建yum仓库文件repo

vi /etc/yum.repos.d/mongodb-org-3.2.repo

[mongodb-org-3.2]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.2/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-3.2.asc

安装mongo及所有的mongodb组件:

yum install -y mongodb-org-3.2.5 mongodb-org-server-3.2.5 mongodb-org-shell-3.2.5 mongodb-org-mongos-3.2.5 mongodb-org-tools-3.2.5

安装完成之后,为了防止意外升级,可以在/etc/yum.conf中加入下面的配置防止意外升级:

exclude=mongodb-org,mongodb-org-server,mongodb-org-shell,mongodb-org-mongos,mongodb-org-tools

如果遇到启动失败的问题,可以关闭SELinux

setenforce 0 

启动mongo
`shell script
systemctl start mongod

配置开机启动
```shell
systemctl enable mongod

mongo设置账号密码(可以在navicat中通过查询的方式创建,选择admin数据库):

db.createUser(
    {
        user:"root",
        pwd:"123456",
        roles:[{role:"root",db:"admin"}]
    }
);

以上,就可以使用navicat进行连接mongo了
images

1.2.如若卸载

停止mongo

systemctl stop mongod

卸载mongo
删除之前安装的mongodb的相关包:

yum erase $(rpm -qa | grep mongodb-org)

删除相关文件夹

sudo rm -r /var/log/mongodb
sudo rm -r /var/lib/mongo

1.3.mongo的简单语法

删除集合

db.getCollection("pos").drop();

创建集合

db.createCollection("pos");

创建索引

db.getCollection("pos").createIndex({
    hash: NumberInt("1")
}, {
    name: "hash"
});
db.getCollection("pos").createIndex({
    "sales_date": NumberInt("1")
}, {
    name: "sales_date"
});

1.4.备份与还原

参考文章
备份一个集合:
语法:

mongodump --db database --collection collectionName

示例:

mongodump --collection pos --db saas

有指向性的备份,在A机器上备份还原B机器上的数据也是可行的

mongodump --host 127.0.0.1 --port 27071 --collection pos --db saas_dq_uat

images

备份除集合1、集合2之外的所有集合

mongodump --db database --excludeCollection=collection1  --excludeCollection=collection2 

还原一个集合

mongorestore --collection collection --db database filePath
mongorestore --collection pos --db saas /root/mongobackup/dump/saas/pos.bson

在148机器上还原数据到147机器

mongorestore --host 192.168.2.147 --port 27071 --collection pos --db saas_dq_uat /data/backup/dq_mongodb/mongo_dq_pos_bak191023/pos.bson

备份满足一定条件的数据,参考文章


世界碎掉了,但潮汐在牡蛎心里。

星空博客。

© 2024 星空的博客