mongodb副本集搭建
mongodb副本集介绍
mongodb副本集的意思就是mongodb的备份数据库,他的作用是当主数据库挂掉的时候,备份数据库就会自动被当做主数据库进行使用。这样做的好处就是不会因为某一台服务器挂掉,导致整个程序无法运行。副本集可以有多个,以防止备份数据库也挂掉的时候,还有另外的备份数据库可以使用。
mongodb副本集的搭建
首先,要安装好mongodb,下面放个传送门,安装mongodb的方法。
http://blog.csdn.net/blog_user_zk/article/details/53325705
安装好mongodb之后,就要进行搭建。我们本次在一台服务器上开启多个mongod 服务,让mongod服务的端口不同,用来模拟多个mongodb服务器。
一. 首先开启多个 mongod 服务(本次实验为3个)
在开启服务之前,首先穿件3个用来存放 mongodb 数据的文件夹
#因为三个 mongod 服务必须要三个存储 data 的文件夹。如果两个服务占用一个 data 文件夹,会报错。mongod 服务在开启的时候,就会锁定开启时所使用的 data文件夹,别的 mongod 服务就不能再这个文件夹中进行写数据。
mkdir /data/mongodb/data1
mkdir /data/mongodb/data2
mkdir /data/mongodb/data3
创建好存储 mongodb data 用的文件夹之后,现在可以开始开启 mongod 服务了。
/usr/mongodb3.2.10/bin/mongod --fork --logpath /data/mongodb/logs/mongodb1.log --dbpath /data/mongodb/data1 --port 12333 --replSet "shard1"
/usr/mongodb3.2.10/bin/mongod --fork --logpath /data/mongodb/logs/mongodb2.log --dbpath /data/mongodb/data2 --port 12334 --replSet "shard1"
/usr/mongodb3.2.10/bin/mongod --fork --logpath /data/mongodb/logs/mongodb3.log --dbpath /data/mongodb/data3 --port 12335 --replSet "shard1"
# --fork
//后台运行 mongod 服务
# --logpath
//存储 log 日志的绝对路径
# --dbpath
//存储 data 的绝对 路径
#红色字体为3次开启服务时候的不同之处,存放 log 的文件名不相同,存放 data 的文件夹不相同,端口号也不相同
# --replSet 后面跟的是副本集的名字。我们要让三台服务器的名字相同,这样的话才能证明这三台服务器是相同的副本集。
二. 服务开启之后要初始化副本集
首先,我们要进入到进入到mongo shell模式下
/usr/mongodb3.2.10/bin/mongo --port 12333
#连接 mongodb 。
cfg = {
"_id": "shard1",
members: [
{"_id": 0,
"host": "127.0.0.1:12333"
},
{"_id": 1,
"host": "127.0.0.1:12334"
},
{"_id": 2,
"host": "127.0.0.1:12335"
}
]
}
# "_id"="shard1" 指定了要操作的副本集的名字。
# member 列表里添加每一个节点的信息。
# "host" 指定了要添加的副本集的地址和端口号。
rs.initiate(cfg)
#初始化副本集
#查看副本集信息rs.status()
现在你就可以看到我们副本集的基本信息了。
我们可以测试一下。
先在数据库里插入数据
use test
db.user.insert({"name":"lily","age":11})
别问我为什么用lily,因为我上初中那时候,只有Lily,Lucy,Jim Green,韩梅梅,李雷。
数据插入之后,就可以将当前的服务关掉。
use admin
db.shutdownServer()
#use admin 进入管理员模式,这样才能在命令行里关闭服务。
现在可以进入另外一个开启服务的数据库
/usr/mongodb3.2.10/bin/mongo --port 12334
现在可以再查看一下副本集的信息
rs.status()
可以查看到之前的12333端口的数据库状态变成了0
表示已经不在工作了。再看一下"stateStr":"PRIMARY"这个服务的端口号。然后就进入到这个端口号的数据库。
现在可以在当前的数据库进行查询。
会出现刚才你在主数据库里插入的那条数据。
这就说明我们搭建已经成功了。如果有疑问可以留言或私信我。
本着开源的精神,我会尽我最大的努力去帮助你,帮助更多的人。