欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  php教程

Mongodbn集群副本集

程序员文章站 2022-04-18 20:42:48
...
本人菜鸟一个 只是根据自己的需求来订的 ,也是第一次弄mognodb集群。各位大神勿喷。写的有点乱 先凑合看下吧
1,新建以及配置mongodb.conf文件:
vi /etc/mongodb.conf(输入以下内容)

fork=true #以守护进程的方式运行,创建服务器进程
logpath=/alidata/webroot/logs/work.log #日志输出文件路径
logappend=true #日志输出方式
dbpath=/data/db #数据库路径
replSet=firstdb #设置富本集的名字

然后进去mongodb的bin目录下执行以下命令:
注:先杀掉mongod的进程 然后在使用以下命令
./mongod -f /etc/mongodb.conf (启动) 注:etc/rc.lcoal 也要改成这个mongod -f /etc/mongodb.conf

当进入bin目录下执行./mongo 然后show dbs之后会出现问题 liasdatabase

出现这个问题的时候 是因为得初始化:
先试用命令关闭mongodb:
./mongod --dbpath=/alidata/approot/mongodb/mongodb-linux-x86_64-3.2.7/data/db/ --shutdown

在配置文件加上这几个配置:

journal = true
oplogSize = 4096
然后在进mongodb的bin目录下执行:./mongod -f /etc/mongodb.conf
查看是否启动成功:如果启动成功 进入到mongodb的bin目录下
执行命令:./mongo
然后:rs.initiate(
{
_id: "rs0",
version: 1,
members: [
{ _id: 0, host : "ip:27017", priority: 30},
{ _id: 1, host : "ip:27017", priority: 20 },
{ _id: 2, host : "ip:27017", priority: 10 }
]
}
)

然后使用命令:rs.ststus()查看下
{
"info" : "run rs.initiate(...) if not yet done for the set",
"ok" : 0,
"errmsg" : "no replset config has been received",
"code" : 94
}
如果显示出来这样就是另外两台写入过数据 :
停掉两台从的 :把数据清空了 或者换一个文件夹
mv db db.bak
mkdir db
chmod -R 777 db
然后启动
再次执行上面的命令:rs.initiate(
{
_id: "rs0",
version: 1,
members: [
{ _id: 0, host : "ip:27017", priority: 30},
{ _id: 1, host : "ip:27017", priority: 20 },
{ _id: 2, host : "ip:27017", priority: 10 }
]
}
)
然后使用命令:rs.status()
然后去从节点看下logs日志
然后使用命令:top 查看下负载
然后在从节点看下同步进程:必须进入到logs目录下面 才能执行以下面的查看进程的命令
使用命令:tail -f work.log
然后进去到主节点使用命令:use test
然后使用命令:find image_weibo.files.find()
如果有数据,就去从节点的mongo执行命令:
rs.slaveOk()
两个从节点都要执行这个命令:
然后使用命令use test
然后使用命令db.image_weibo.files.find() 查看是否有数据 如果有数据就是同步成功了 OK!
然后在主节点插入数据测试:
db.image_weibo.insert({title: 'MongoDB 教程',
description: 'MongoDB 是一个 Nosql 数据库',
by: 'xx11',
url: 'http://www.baidu.com',
tags: ['mongodb', 'database', 'NoSQL'],
likes: 100
})