- port = 27017 //监听端口
- fork = true //后台运行
- pidfilepath = /var/run/mongodb/mongodb.pid //进程PID文件
- logpath = /var/log/mongodb/mongodb.log //日志文件
- dbpath =/var/lib/mongodb //db存放目录
- journal = true //存储模式
- nohttpinterface = true //禁用http
- directoryperdb=true //一个数据库一个文件夹
- logappend=true //追加方式写日志
- replSet=repmore //集群名称,自定义
- oplogSize=1000 //oplog大小
sudo vi /etc/mongodb.27017.conf
dbpath = /data/mongo/27017/db #数据文件存放目录
logpath = /data/mongo/logs/mongodb.log #日志文件存放目录
port = 27017 #端口
fork = true #以守护程序的方式启用,即在后台运行
nohttpinterface = true
replSet=repmore
directoryperdb=true
logappend=true
auth=false //不关闭没法同步
sudo vi /etc/mongodb.27018.conf
dbpath = /data/mongo/27018/db #数据文件存放目录
logpath = /data/mongo/logs/mongodb.log #日志文件存放目录
port = 27018 #端口
fork = true #以守护程序的方式启用,即在后台运行
nohttpinterface = true
replSet=repmore
directoryperdb=true
logappend=true
auth=false
sudo vi /etc/mongodb.27019.conf
dbpath = /data/mongo/27019/db #数据文件存放目录
logpath = /data/mongo/logs/mongodb.log #日志文件存放目录
port = 27019 #端口
fork = true #以守护程序的方式启用,即在后台运行
nohttpinterface = true
replSet=repmore
directoryperdb=true
logappend=true
auth=false
同一台机器启动 需要使用numactl命令
numactl --interleave=all mongod -f /etc/mongodb.27017.conf
numactl --interleave=all mongod -f /etc/mongodb.27018.conf
numactl --interleave=all mongod -f /etc/mongodb.27019.conf
连接其中一台
mongo 127.0.0.1:27017
use admin
config={_id:"repmore",members:[{_id:0,host:"127.0.0.1:27017"},{_id:1,host:"127.0.0.1:27018"},{_id:2,host:"127.0.0.1:27019"}]};
rs.initiate(config); 初始化
在这里要注意,rs.initiate初始化也是要一定时间的,刚执行完rs.initiate,我就查看状态,从服务器的stateStr不是SECONDARY,而是stateStr" : "STARTUP2",等一会就好了。
rs.status() 产看状态
rs.remove("127.0.0.1:27019”)//删除
rs.add("127.0.0.1:27019”)//添加
测试
主
- repmore:PRIMARY> show dbs;
- local 1.078125GB
- repmore:PRIMARY> use test
- switched to db test
- repmore:PRIMARY> db.test.insert({'name':'tank','phone':'12345678'});
- repmore:PRIMARY> db.test.find();
- { "_id" : ObjectId("52af64549d2f9e75bc57cda7"), "name" : "tank", "phone" : "12345678” }
从
- [root@localhost mongodb]# mongo 127.0.0.1:27018 //连接
- MongoDB shell version: 2.4.6
- connecting to: 127.0.0.1:27018/test
- repmore:SECONDARY> show dbs;
- local 1.078125GB
- test 0.203125GB
- repmore:SECONDARY> db.test.find(); //无权限查看
- error: { "$err" : "not master and slaveOk=false", "code" : 13435 }
- repmore:SECONDARY> rs.slaveOk(); //从库开启
- repmore:SECONDARY> db.test.find(); //从库可看到主库刚插入的数据
- { "_id" : ObjectId("52af64549d2f9e75bc57cda7"), "name" : "tank", "phone" : "12345678" }
- repmore:SECONDARY> db.test.insert({'name':'zhangying','phone':'12345678'}); //从库只读,无插入权限
- not master
db.createUser({user:'sleliao',pwd:'sleliao',roles:['userAdminAnyDatabase','dbAdminAnyDatabase']}) //可登陆所有db的用户
db.createUser({user:"admin",pwd:"admin",roles:[{role:"root",db:"admin"}]}) //超级管理员
配置完成之后启动认证
#auth=false
keyFile = /home/zhangxd/work/mongodb/keyfiletest
生成key
openssl rand -base64 90 > openssl rand -base64 90 > /root/software/mongodb/keyfiletest
scp /root/software/mongodb/keyfile root@192.168.91.133:/root/software/mongodb/ 复制到其他节点
sudo chmod 600 ./keyfiletest 给600权限
然后重启3台服务器,去客户端测试一下 ok了
mongodb replica set 多服务器 高可用 配置 详解 http://blog.51yip.com/nosql/1580.html
sudo chmod 600 ./keyfiletest
查看读写日志
切到想看日志的db
use test
db.setProfilingLevel(2) 设置读写log
profile级别有三种:
0:不开启
1:记录慢命令,默认为大于100ms
2:记录所有命令
3、查询profiling记录
db.getCollection('system.profile').find({}).sort({ts:-1})