Ubuntu搭建MongoDB集群

MongoDB是一个基于分布式文件存储的数据库,是介于关系数据库和非关系数据库之间的数据库,属于非关系数据库,非常适合爬虫爬取大量数据时进行存储。

MongoDB集群旨在提高系统的稳定性,使用多个MongoDB存储节点,当主节点挂掉之后从节点可以立即补充进来保证系统可以正常稳定地运行。

在Kali Linux中是默认安装了MongoDB的,位于/etc/init.d/目录。

这里只在Ubuntu 16.04上进行操作。

Ubuntu安装MongoDB:

导入软件源的公钥:sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv EA312927

为MongoDB创建软件源list文件:echo "deb http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.2.list

更新软件源并安装MongoDB:

sudo apt-get update

sudo apt-get install -y mongodb-org

开启MongoDB:service mongod start

查看端口是否正常开启:



Ubuntu搭建MongoDB群集:

这里直接采取一台主机开放三个不同端口来模拟实现三台主机的效果,先关闭MongoDB服务service mongod stop。

以MongoDB的默认端口27017作为主节点,27018和27019作为从节点,并且在主机上建立三个不同的文件夹作为数据库存储,注意每个文件夹里面都要从创建一个空的data文件夹。



下面开启三个命令行窗口来启动三个不同的MongoDB服务:

mongod --dbpath ~/mongodb-test/mongodb_main/data --replSet repset

mongod --dbpath ~/mongodb-test/mongodb_slave1/data --port 27018 --replSet repset

mongod --dbpath ~/mongodb-test/mongodb_slave2/data --port 27019 --replSet repset



三个服务启动成功,然后需要初始化副本集,随机登录一个服务,另起一个命令行输入mongo,然后输入:



接着输入rs.status()来查看节点信息:


看到如上配置即设置成功。


接下来测试主从节点是否会自动同步,输入:



这时终止对主节点的连接,用mongo 127.0.0.1:27018登录从节点,查看数据是否同步:


发生了错误,原因是MongoDB默认是从主节点读写数据的而从节点上不允许读,需要设置从节点的读权限:


可以看到数据已经同步到从节点了。


最后再测试下故障发生时主从节点能否完成切换,这里直接强制关闭主节点(直接在该命令行control C即可)来测试查看:


完成了正常的切换,没有问题。


使用Python访问MongoDB副本集:

主要使用Python的pymongo库,需要安装:pip install pymongo

#coding=utf-8

from pymongo import MongoClient



client =MongoClient("mongodb://127.0.0.1:27017,127.0.0.1:27018,127.0.0.1:27019", replicaset='repset')

print client.test.testdb.find_one()

运行结果:


猜你喜欢

转载自blog.csdn.net/ski_12/article/details/78837765