从阿里到网易云centOS7.2服务器迁移服务和各项数据(mongo)

首先安装mongodb

先登入旧服务器的mongodb查看一下版本

登陆数据库:

[root@iZbp1et0ji55qq6f4kf1bcZ bin]# ./mongo
MongoDB shell version v3.4.2
connecting to: mongodb://127.0.0.1:27017
MongoDB server version: 3.4.2

下载安装包

curl -O https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.4.2.tgz

解压+移动到指定位置

tar -zxvf mongodb-linux-x86_64-3.4.2.tgz -C /home/
mv mongodb-linux-x86_64-3.4.2 mongodb

在/home/mongodb下创建文件夹

mkdir data

mkdir log
cd log/

vim mongod.log

这里如果没创建好,会报错child process failed, exited with error number 48或1或100(注意

vim /home/mongodb/bin/mongodb.conf

port=27017
dbpath=/home/mongodb/data/
logpath=/home/mongodb/log/mongod.log
logappend=true
fork=true
nssize=100

开启mongodb

mongod -f mongodb.conf

关闭mongodb

mongod --shutdown --port=27017  -f mongodb.conf

导出数据

./mongodump --host xx.xxx.xx.xxx --db abc --out home/dataBaseBackup/

导入数据

./mongorestore -h localhost -dadmin --dir /home/dataBaseBackup/abc

这里会有点不同

原先的数据库大小为0.237GB,备份导入后只有0.230GB了。怎么缩小了,但是内容不变啊?

百度之后找到了解释:

这种情况,其实是正常的。原理跟你的磁盘用久了会有碎片是一个道理。特别是你曾经大规模删除过数据的情况下。简单地解释下,假设你的表中有doc1/doc2/doc3/doc4一共4个文档,在磁盘上的存储顺序是:
doc1|doc2|doc3|doc4
现在你删除了doc2,磁盘上的空间使用情况变成:
doc1|(空白)|doc3|doc4
系统是没有办法释放这个空白空间的,除非你进行磁盘整理,把空白空间移到最后:
doc1|doc3|doc4|(空白)
然后系统才可以截断文件尾部的空白,释放掉这个空间。可以看出来,要把空白移动到文件尾是个相当费时费力的操作,最简单的办法是:把后面所有的文档顺序前移来填补doc2留下的空白(如上所示doc3/doc4被前移)。但是这样涉及到大量的磁盘I/O,会对性能造成严重影响。当然不乏其他整理磁盘碎片的方法,但是无论哪一个,都会造成比较严重的I/O影响,因此一般我们是不会进行这样的整理的。进行碎片整理的方式就是:compact命令。如前所述,因为它会对性能造成严重的影响,因此一般只会在维护时间进行这个操作。而就算你不进行这个操作,系统也知道哪些地方是空白的,在有新文档进来的时候,会尝试重新使用这些空白的部分从而最大化空间利用率。只是,无论再好的算法,空间重复利用一定不可能是100%的,因为新进来的文档永远没有办法正好跟之前被删除的文档一样大,所以只能找一个比新文档更大的空间来利用,这样就会留下一个更小的、更难重复利用的碎片。
另外一种变通的方案是把节点内容删除,重新进行一次同步。因为同步时相当于把所有文档全部抓取一遍,并一个接一个重新写到磁盘上,因此同步完成之后文档在磁盘上是紧凑排列的,相当于进行了碎片整理。而且在这个过程中,受影响的是从节点,它在同步过程中并不对外提供服务,所以对线上的影响是最小的。但是注意,它同样会对主节点造成影响,因为它要把主节点上的全部数据都读一遍,主节点I/O升高是无法避免的。

所以,因为重新导入,文档在磁盘上是紧凑排列的,原先的空白碎片都被占满,所以占用空间小了。

用户登陆

./mongo localhost:27017 -u admin -p

查看全局所有账户

use admin

db.system.users.find().pretty()

未完待续~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值