mongodb副本集搭建
2014-02-10 11:52
357 查看
副本集没有固定的“主节点”,整个集群结构会动态选举出一个“主节点”,当其不能工作了,则会动态变更到其他节点。副本集对其节点又特殊的称呼:活跃节点(“主节点”)和 备份节点(“从节点”)。
1.资源有限两台电脑(172.16.0.249,,12.16.0.250),一个主primary,一个secondary(可以称副节点)
2、使用选项--replSet来启动副本集的第一个服务:
(1)采用配置文件的方法
在mongodb目录下新建conf文件夹 并新建文件xx.conf,内容如下
port=10001 -------------------》端口号
fork=true --------------------》以守护进程的方式运行,创建服务器进程
logpath=/home/llp/log.log --------------------》日志文件输出目录
dbpath=/home/llp/db -------------------- 》数据库路径
logappend=true ---------------------》日志输出方式
replSet=blort/172.16.0.250:10002 ----------------------》设置副本集 名字/ip:端口
启动服务
[root@slave1 bin]# ./mongod -config ../conf/llpmongo.conf
all output going to: /home/llp/log.log
forked process: 22703
查看进程
[root@slave1 bin]# ps -ef|grep mongo
root 20063 1 0 Jan03 ? 00:00:03 /usr/local/mongodb/bin/mongod -f /usr/local/mongodb/conf/mongod.conf
root 22703 1 0 10:29 ? 00:00:00 ./mongod -config ../conf/llpmongo.conf ------------------------》启动的进程
root 22742 20283 0 10:30 pts/2 00:00:00 ./mongo localhost:10001/admin
root 22761 19670 0 10:31 pts/1 00:00:00 grep mongo
[root@slave1 bin]# kill -2 22703
[root@slave1 bin]# ps -ef|grep mongo
root 20063 1 0 Jan03 ? 00:00:03 /usr/local/mongodb/bin/mongod -f /usr/local/mongodb/conf/mongod.conf
root 23035 20283 0 10:39 pts/2 00:00:00 ./mongo localhost:10001/admin
root 23088 19670 0 10:42 pts/1 00:00:00 grep mongo
(2)命令模式
[root@slave1 bin]# ./mongod -dbpath /home/llp/db -port 10001 -replSet blort/172.16.0.250:10002 -logpath /home/llp/log.log
all output going to: /home/llp/log.log
3、启动第二个服务
配置文件同上
[root@lvjian3 bin]# ./mongod -dbpath /home/llp/db -port 10002 -replSet blort/172.16.0.249:10001 -logpath /home/llp/log.log -logappend
all output going to: /home/llp/log.log
4、.初始化节点:只初始化一次,随便登陆任何一个节点,但是必须进入admin数据库
[root@slave1 bin]# ./mongo localhost:10001
MongoDB shell version: 2.0.0
connecting to: localhost:10001/test
> use admin
switched to db admin
> conf={
... "_id":"blort",
... "members":
... [
... {
... "_id":0,
... "host":"172.16.0.249:10001"
... },
... {
... "_id":1,
... "host":"172.16.0.250:10002"
... }
... ]}
{
"_id" : "blort",
"members" : [
{
"_id" : 0,
"host" : "172.16.0.249:10001"
},
{
"_id" : 1,
"host" : "172.16.0.250:10002"
}
]
}
> rs.initiate(conf)
{
"info" : "Config now saved locally. Should come online in about a minute.",
"ok" : 1
}
[root@slave1 bin]# ./mongo localhost:10001/admin
MongoDB shell version: 2.0.0
connecting to: localhost:10001/admin
PRIMARY> rs.status()
{
"set" : "blort",
"date" : ISODate("2014-02-10T01:41:26Z"),
"myState" : 1,
"members" : [
{
"_id" : 0,
"name" : "172.16.0.249:10001",
"health" : 1,
"state" : 1,
"stateStr" : "PRIMARY",
"optime" : {
"t" : 1391853169000,
"i" : 1
},
"optimeDate" : ISODate("2014-02-08T09:52:49Z"),
"self" : true
},
{
"_id" : 1,
"name" : "172.16.0.250:10002",
"health" : 1,
"state" : 2,
"stateStr" : "SECONDARY",
"uptime" : 195,
"optime" : {
"t" : 1391853169000,
"i" : 1
},
"optimeDate" : ISODate("2014-02-08T09:52:49Z"),
"lastHeartbeat" : ISODate("2014-02-10T01:41:25Z"),
"pingMs" : 0
}
],
"ok" : 1
}
5、创建完成可看出172.16.0.249为主节点,172.16.0.250为副节点
6、副本集同步原理:如何保持主从节点数据一致性
主节点插入数据
[root@slave1 bin]# ./mongo localhost:10001/admin
MongoDB shell version: 2.0.0
connecting to: localhost:10001/admin
PRIMARY> use testdata
switched to db testdata
PRIMARY> show tables
PRIMARY> db.tt.insert({"x":1})
PRIMARY> db.tt.find()
{ "_id" : ObjectId("52f82edfaeb169a6245d9b4b"), "x" : 1 }
(2)查看副节点172.16.0.250
[root@lvjian3 bin]# ./mongo localhost:10002
MongoDB shell version: 2.0.0
connecting to: localhost:10002/test
SECONDARY> use testdata
switched to db testdata
SECONDARY> db.tt.find()
error: { "$err" : "not master and slaveok=false", "code" : 13435 }
副节点没有权限查看
(3)down掉主节点(172.16.0.249)
[root@slave1 bin]# [root@slave1 bin]# kill -2 22703
查看副节点的状态(172.16.0.250)
[root@lvjian3 bin]# ./mongo localhost:10002
MongoDB shell version: 2.0.0
connecting to: localhost:10002/test
SECONDARY> 还是副节点 只有两个节点的时候一个down掉后无法选举主节点了
重新启动172.16.0.249 查看250的状态
[root@slave1 bin]# ./mongo localhost:10001/admin
MongoDB shell version: 2.0.0
connecting to: localhost:10001/admin
PRIMARY> use testdata
switched to db testdata
PRIMARY> db.tt.find()
{ "_id" : ObjectId("52f82edfaeb169a6245d9b4b"), "x" : 1 }
可看出数据发生同步
1.资源有限两台电脑(172.16.0.249,,12.16.0.250),一个主primary,一个secondary(可以称副节点)
2、使用选项--replSet来启动副本集的第一个服务:
(1)采用配置文件的方法
在mongodb目录下新建conf文件夹 并新建文件xx.conf,内容如下
port=10001 -------------------》端口号
fork=true --------------------》以守护进程的方式运行,创建服务器进程
logpath=/home/llp/log.log --------------------》日志文件输出目录
dbpath=/home/llp/db -------------------- 》数据库路径
logappend=true ---------------------》日志输出方式
replSet=blort/172.16.0.250:10002 ----------------------》设置副本集 名字/ip:端口
启动服务
[root@slave1 bin]# ./mongod -config ../conf/llpmongo.conf
all output going to: /home/llp/log.log
forked process: 22703
查看进程
[root@slave1 bin]# ps -ef|grep mongo
root 20063 1 0 Jan03 ? 00:00:03 /usr/local/mongodb/bin/mongod -f /usr/local/mongodb/conf/mongod.conf
root 22703 1 0 10:29 ? 00:00:00 ./mongod -config ../conf/llpmongo.conf ------------------------》启动的进程
root 22742 20283 0 10:30 pts/2 00:00:00 ./mongo localhost:10001/admin
root 22761 19670 0 10:31 pts/1 00:00:00 grep mongo
[root@slave1 bin]# kill -2 22703
[root@slave1 bin]# ps -ef|grep mongo
root 20063 1 0 Jan03 ? 00:00:03 /usr/local/mongodb/bin/mongod -f /usr/local/mongodb/conf/mongod.conf
root 23035 20283 0 10:39 pts/2 00:00:00 ./mongo localhost:10001/admin
root 23088 19670 0 10:42 pts/1 00:00:00 grep mongo
(2)命令模式
[root@slave1 bin]# ./mongod -dbpath /home/llp/db -port 10001 -replSet blort/172.16.0.250:10002 -logpath /home/llp/log.log
all output going to: /home/llp/log.log
3、启动第二个服务
配置文件同上
[root@lvjian3 bin]# ./mongod -dbpath /home/llp/db -port 10002 -replSet blort/172.16.0.249:10001 -logpath /home/llp/log.log -logappend
all output going to: /home/llp/log.log
4、.初始化节点:只初始化一次,随便登陆任何一个节点,但是必须进入admin数据库
[root@slave1 bin]# ./mongo localhost:10001
MongoDB shell version: 2.0.0
connecting to: localhost:10001/test
> use admin
switched to db admin
> conf={
... "_id":"blort",
... "members":
... [
... {
... "_id":0,
... "host":"172.16.0.249:10001"
... },
... {
... "_id":1,
... "host":"172.16.0.250:10002"
... }
... ]}
{
"_id" : "blort",
"members" : [
{
"_id" : 0,
"host" : "172.16.0.249:10001"
},
{
"_id" : 1,
"host" : "172.16.0.250:10002"
}
]
}
> rs.initiate(conf)
{
"info" : "Config now saved locally. Should come online in about a minute.",
"ok" : 1
}
[root@slave1 bin]# ./mongo localhost:10001/admin
MongoDB shell version: 2.0.0
connecting to: localhost:10001/admin
PRIMARY> rs.status()
{
"set" : "blort",
"date" : ISODate("2014-02-10T01:41:26Z"),
"myState" : 1,
"members" : [
{
"_id" : 0,
"name" : "172.16.0.249:10001",
"health" : 1,
"state" : 1,
"stateStr" : "PRIMARY",
"optime" : {
"t" : 1391853169000,
"i" : 1
},
"optimeDate" : ISODate("2014-02-08T09:52:49Z"),
"self" : true
},
{
"_id" : 1,
"name" : "172.16.0.250:10002",
"health" : 1,
"state" : 2,
"stateStr" : "SECONDARY",
"uptime" : 195,
"optime" : {
"t" : 1391853169000,
"i" : 1
},
"optimeDate" : ISODate("2014-02-08T09:52:49Z"),
"lastHeartbeat" : ISODate("2014-02-10T01:41:25Z"),
"pingMs" : 0
}
],
"ok" : 1
}
5、创建完成可看出172.16.0.249为主节点,172.16.0.250为副节点
6、副本集同步原理:如何保持主从节点数据一致性
主节点插入数据
[root@slave1 bin]# ./mongo localhost:10001/admin
MongoDB shell version: 2.0.0
connecting to: localhost:10001/admin
PRIMARY> use testdata
switched to db testdata
PRIMARY> show tables
PRIMARY> db.tt.insert({"x":1})
PRIMARY> db.tt.find()
{ "_id" : ObjectId("52f82edfaeb169a6245d9b4b"), "x" : 1 }
(2)查看副节点172.16.0.250
[root@lvjian3 bin]# ./mongo localhost:10002
MongoDB shell version: 2.0.0
connecting to: localhost:10002/test
SECONDARY> use testdata
switched to db testdata
SECONDARY> db.tt.find()
error: { "$err" : "not master and slaveok=false", "code" : 13435 }
副节点没有权限查看
(3)down掉主节点(172.16.0.249)
[root@slave1 bin]# [root@slave1 bin]# kill -2 22703
查看副节点的状态(172.16.0.250)
[root@lvjian3 bin]# ./mongo localhost:10002
MongoDB shell version: 2.0.0
connecting to: localhost:10002/test
SECONDARY> 还是副节点 只有两个节点的时候一个down掉后无法选举主节点了
重新启动172.16.0.249 查看250的状态
[root@slave1 bin]# ./mongo localhost:10001/admin
MongoDB shell version: 2.0.0
connecting to: localhost:10001/admin
PRIMARY> use testdata
switched to db testdata
PRIMARY> db.tt.find()
{ "_id" : ObjectId("52f82edfaeb169a6245d9b4b"), "x" : 1 }
可看出数据发生同步
相关文章推荐
- mongodb的架构 副本集搭建
- CentOS 7下Mongodb副本集搭建
- CentOS 7下Mongodb副本集搭建
- MongoDB单机版副本集搭建--测试、开发
- MongoDB 副本集的原理、搭建、应用
- 搭建高可用mongodb集群(二)—— 副本集
- mongodb副本集架构搭建
- 搭建高可用mongodb集群(二)—— 副本集
- MongoDB 3.4 副本集 搭建 + 备份恢复(超详细)
- 搭建高可用mongodb集群—— 副本集
- 【转】搭建高可用mongodb集群(二)—— 副本集
- 搭建高可用mongodb集群(二)—— 副本集
- mongodb3.6集群搭建:分片+副本集
- CentOS 7下Mongodb副本集搭建
- 搭建高可用mongodb集群(二)—— 副本集
- 搭建高可用mongodb集群(二)—— 副本集
- 搭建高可用mongodb集群(二)—— 副本集
- linux下mongodb的副本集搭建(replica Set)
- MongoDB(Docker) 副本集群搭建