MongoDB学习4_CentOS6.5系统下,MongoDB之Replica Set集群搭建

19 篇文章 0 订阅
本文详细介绍了在CentOS6.5系统上搭建MongoDB Replica Set集群的步骤,包括下载安装MongoDB、配置各节点、启动服务以及验证集群状态,旨在确保在主节点故障时,备节点能无缝接替,维持数据服务的连续性。
摘要由CSDN通过智能技术生成

CentOS6.5系统下,MongoDBReplcia Set集群搭建

 

准备工作:

官网介绍地址:http://docs.mongodb.org/manual/


MongoDB:一种NoSQLNot Only SQL)数据库,不仅仅是关系型数据库,它的存储方式是文档式存储。

 

NoSQL:随着互联网web2.0网站的兴起,传统的关系数据库在应付web2.0网站,特别是超大规模和高并发的SNS类型的web2.0纯动态网站已经显得力不从心,暴露了很多难以克服的问题,而非关系型的数据库则由于其本身的特点得到了非常迅速的发展。NoSQL数据库的产生就是为了解决大规模数据集合多重数据种类带来的挑战,尤其是大数据应用难题。

 

Mongodb有三种集群搭建方式:Replica Set / Sharding / Master-Slaver

 

Replica Set:副本集,集群当中包含了多份数据,保证主节点挂掉了,备节点能继续提供数据服务,提供的前提就是数据需要和主节点一致。

 

下载Mongodbhttps://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.0.6.tgz

 

开始配置:

root用户下,对四台机器进行配置:

vim /etc/sysconfig/network

修改主机名

vim /etc/hosts

修改主机和IP地址的映射

 

配置后的结果如下:

192.168.154.156 Master

192.168.154.158 Slave1

192.168.154.159 Slave2

192.168.154.160 Slave3

 

使用U盘将mongodb-linux-x86_64-3.0.6.tgz拷贝到Master/home/hadoop/

 

安装MongoDB

mkdir /usr/local/mongodb

"/usr/local"下创建"mongodb"文件夹

cp /home/hadoop/mongodb-linux-x86_64-3.0.6.tgz /usr/local/mongodb

"mongodb-linux-x86_64-3.0.6.tgz"复制到"/usr/local/mongodb"文件夹中

cd /usr/local/mongodb

打开/usr/local/mongodb文件夹

tar -zxvf mongodb-linux-x86_64-3.0.6.tgz -C  /usr/local/mongodb

解压到/usr/local/mongodb文件夹

mv mongodb-linux-x86_64-3.0.6 mongodb

mongodb-linux-x86_64-3.0.6名字变为mongodb

(注:此时MongoDB的路径为/usr/local/mongodb/mongodb

其实可以直接把mongodb-linux-x86_64-3.0.6.tgz拷贝到/usr/local/下进行解压,

然后再修改名字,这时mongodb的路径就是/usr/local/mongodb

 

建立文件夹:

建立data文件夹:

cd /usr/local/mongodb/

 

mkdir -p /mongodb/data/master   

mkdir -p /mongodb/data/slaver   

mkdir -p /mongodb/data/arbiter 

建立

 

mkdir -p mongodb/data/{master,slaver,arbiter}

 

(附:

rm -rf mongodb/data/{master,slaver,arbiter}

删除命令,这个不是必须的)

 

建立logs文件夹:

mkdir -p /usr/local/mongodb/mongodb/logs

 

建立conf文件夹:

mkdir -p /usr/local/mongodb/mongodb/conf

 

data目录下建立文件夹:

cd /usr/local/mongodb/mongodb/data

touch master.pid

touch slaver.pid

touch arbiter.pid

 

logs目录下建立文件夹:

cd /usr/local/mongodb/mongodb/logs

touch master.log

touch slaver.log

touch arbiter.log

 

conf目录下建立文件夹:

cd /usr/local/mongodb/mongodb/conf

touch mongodb-master.conf

touch mongodb-slaver.conf

touch mongodb-arbiter.conf

 

 

配置mongodb-master.conf

cd /usr/local/mongodb/mongodb/conf

vim mongodb-master.conf

 

#mongodb-master.conf  

dbpath=/usr/local/mongodb/mongodb/data/master  

logpath=/usr/local/mongodb/mongodb/logs/master.log  

pidfilepath=/usr/local/mongodb/mongodb/data/master.pid  

directoryperdb=true  

logappend=true  

replSet=testrs  

bind_ip=192.168.154.156  

port=27017

oplogSize=1000

fork=true  

noprealloc=true

 

配置mongodb-slaver.conf

cd /usr/local/mongodb/mongodb/conf

vim mongodb-slaver.conf

 

#mongodb-slaver.conf 

dbpath=/usr/local/mongodb/mongodb/data/slaver  

logpath=/usr/local/mongodb/mongodb/logs/slaver.log  

pidfilepath=/usr/local/mongodb/mongodb/data/slaver.pid  

directoryperdb=true  

logappend=true  

replSet=testrs   

bind_ip=192.168.154.158

port=27017

oplogSize=1000  

fork=true  

noprealloc=true  

smallfiles=true  

 

配置mongodb-arbiter.conf

cd /usr/local/mongodb/mongodb/conf

vim mongodb-arbiter.conf

 

#mongodb-arbiter.conf 

dbpath=/usr/local/mongodb/mongodb/data/arbiter  

logpath=/usr/local/mongodb/mongodb/logs/arbiter.log  

pidfilepath=/usr/local/mongodb/mongodb/data/arbiter.pid  

directoryperdb=true  

logappend=true  

replSet=testrs  

bind_ip=192.168.154.160

port=27017

oplogSize=1000 

fork=true  

noprealloc=true  

smallfiles=true  

 

配置参数解释:

dbpath:数据存放目录

logpath:日志存放路径

pidfilepath:进程文件,方便停止mongodb

directoryperdb:为每一个数据库按照数据库名建立文件夹存放

logappend:以追加的方式记录日志

replSetreplica set的名字

bind_ipmongodb所绑定的ip地址

portmongodb进程所使用的端口号,默认为27017

oplogSizemongodb操作日志文件的最大大小。单位为Mb,默认为硬盘剩余空间的5%

fork:以后台方式运行进程

noprealloc:不预先分配存储

 

拷贝到其他主机目录下:

cd /usr/local

打开路径

sudo tar -zcf ./mongodb.tar.gz ./mongodb

压缩

scp ./mongodb.tar.gz Slave1:/home/hadoop

复制到Slave1主机上

 

同上,复制到Slave2Slave3

scp ./mongodb.tar.gz Slave2:/home/hadoop

scp ./mongodb.tar.gz Slave3:/home/hadoop

 

在其他主机上进行修改:

sudo tar -zxf /home/hadoop/mongodb.tar.gz -C /usr/local

解压到/usr/local路径下

chown -R hadoop:hadoop /usr/local/mongodb

要给"Slave1"服务器上的用户hadoop添加对"/usr/local/mongodb"读权限

 

注:为了节省空间,意义删除mongodb.tar.gz文件

cd /home/hadoop

打开路径

rm -rf mongodb.tar.gz

删除"mongodb.tar.gz"安装包

 

// 将第二个Slave节点的mongodb-slaver.conf,改为bind_ip=192.168.154.159,即它自己的ip地址

 

给主机的hadoop用户增加sudo权限:

http://blog.csdn.net/wang_zhenwei/article/details/48261321

 

或下面的操作都在root用户下进行

 

启动mongodb

cd /usr/local/mongodb/mongodb/bin

进入每个mongodb节点的bin目录下

sudo ./mongod -f ../conf/mongodb-master.conf  

sudo ./mongod -f ../conf/mongodb-slaver.conf  

sudo ./mongod -f ../conf/mongodb-arbiter.conf  

注意配置文件的路径一定要保证正确,可以是相对路径也可以是绝对路径

 

 

配置主,备,仲裁节点:

可以通过客户端连接mongodb,也可以直接在三个节点中选择一个连接mongodb

 

Master上(192.168.154.156)机器上进行如下操作:

./mongo 192.168.154.156:27017 

显示下面的结果:

[hadoop@Master bin]$ ./mongo 192.168.154.156:27017 
MongoDB shell version: 3.0.6
connecting to: 192.168.154.156:27017/test
Welcome to the MongoDB shell.
For interactive help, type "help".
For more comprehensive documentation, see
http://docs.mongodb.org/
Questions? Try the support group
http://groups.google.com/group/mongodb-user
Server has startup warnings: 
2015-09-07T00:34:15.538-0700 I CONTROL  [initandlisten] ** WARNING: You are running this process as the root user, which is not recommended.
2015-09-07T00:34:15.538-0700 I CONTROL  [initandlisten] 
2015-09-07T00:34:15.539-0700 I CONTROL  [initandlisten] 
2015-09-07T00:34:15.539-0700 I CONTROL  [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'.
2015-09-07T00:34:15.539-0700 I CONTROL  [initandlisten] **        We suggest setting it to 'never'
2015-09-07T00:34:15.539-0700 I CONTROL  [initandlisten] 
2015-09-07T00:34:15.539-0700 I CONTROL  [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'.
2015-09-07T00:34:15.539-0700 I CONTROL  [initandlisten] **        We suggest setting it to 'never'
2015-09-07T00:34:15.539-0700 I CONTROL  [initandlisten] 
> 

 

use admin

运行结果:

> use admin
switched to db admin

</pre><p></p><p> </p><p>cfg={_id:"testrs",members:[{_id:0,host:'192.168.154.156:27017',priority:3},{_id:1,host:'192.168.154.158:27017',priority:2},{_id:2,host:'192.168.154.159:27017',priority:1},{_id:3,host:'192.168.154.160:27017',arbiterOnly:true}]};</p><p>运行结果:</p><p></p><pre name="code" class="html">> cfg={_id:"testrs",members:[{_id:0,host:'192.168.154.156:27017',priority:3},{_id:1,host:'192.168.154.158:27017',priority:2},{_id:2,host:'192.168.154.159:27017',priority:1},{_id:3,host:'192.168.154.160:20111',arbiterOnly:true}]};
{
"_id" : "testrs",
"members" : [
{
"_id" : 0,
"host" : "192.168.154.156:27017",
"priority" : 3
},
{
"_id" : 1,
"host" : "192.168.154.158:27017",
"priority" : 2
},
{
"_id" : 2,
"host" : "192.168.154.159:27017",
"priority" : 1
},
{
"_id" : 3,
"host" : "192.168.154.160:27017",
"arbiterOnly" : true
}
]
}

 

rs.initiate(cfg)

使配置生效

运行结果:

> rs.initiate(cfg)

{ "ok" : 1 }

 

实验:

testrs:OTHER> use test

switched to db test

testrs:PRIMARY> db.user.insert({name:'jack',age:80}); 

WriteResult({ "nInserted" : 1 })

testrs:PRIMARY> db.user.find(); 

{ "_id" : ObjectId("55ed49d8ecafcda794a28e84"), "name" : "jack", "age" : 80 }

testrs:PRIMARY> rs.status();

{

"set" : "testrs",

"date" : ISODate("2015-09-07T08:25:35.328Z"),

"myState" : 1,

"members" : [

{

"_id" : 0,

"name" : "192.168.154.156:27017",

"health" : 1,

"state" : 1,

"stateStr" : "PRIMARY",

"uptime" : 3081,

"optime" : Timestamp(1441614296, 2),

"optimeDate" : ISODate("2015-09-07T08:24:56Z"),

"electionTime" : Timestamp(1441614117, 1),

"electionDate" : ISODate("2015-09-07T08:21:57Z"),

"configVersion" : 1,

"self" : true

},

{

"_id" : 1,

"name" : "192.168.154.158:27017",

"health" : 1,

"state" : 2,

"stateStr" : "SECONDARY",

"uptime" : 220,

"optime" : Timestamp(1441614296, 2),

"optimeDate" : ISODate("2015-09-07T08:24:56Z"),

"lastHeartbeat" : ISODate("2015-09-07T08:25:33.409Z"),

"lastHeartbeatRecv" : ISODate("2015-09-07T08:25:33.520Z"),

"pingMs" : 0,

"syncingTo" : "192.168.154.156:27017",

"configVersion" : 1

},

{

"_id" : 2,

"name" : "192.168.154.159:27017",

"health" : 1,

"state" : 2,

"stateStr" : "SECONDARY",

"uptime" : 220,

"optime" : Timestamp(1441614296, 2),

"optimeDate" : ISODate("2015-09-07T08:24:56Z"),

"lastHeartbeat" : ISODate("2015-09-07T08:25:33.403Z"),

"lastHeartbeatRecv" : ISODate("2015-09-07T08:25:33.599Z"),

"pingMs" : 0,

"syncingTo" : "192.168.154.156:27017",

"configVersion" : 1

},

{

"_id" : 3,

"name" : "192.168.154.160:27017",

"health" : 1,

"state" : 7,

"stateStr" : "ARBITER",

"uptime" : 220,

"lastHeartbeat" : ISODate("2015-09-07T08:25:33.568Z"),

"lastHeartbeatRecv" : ISODate("2015-09-07T08:25:33.597Z"),

"pingMs" : 0,

"configVersion" : 1

}

],

"ok" : 1

}

testrs:PRIMARY> 

 

 

 

附录:

Tab键,补全;

ll,列举;

pwd,显示当前路径;

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值