master:172.17.165.245
salve :172.17.165.230
版本 3.4
注:这里的安装步骤进行省略了 家目录在/usr/local/mongodb
cd /usr/local/mongodb/
openssl rand -base64 741 >>keyfile
chmod 700 keyfile
这里开启了auth 需要在相对的数据库里面,创建用户以及分配权限,否则失败。(master 上面进行创建用户操作,这里给的是读写的权限方便操作)
> db.runCommand({usersInfo:"admin"})
{
"users" : [
{
"_id" : "kanfa.admin",
"user" : "admin",
"db" : "kanfa",
"roles" : [
{
"role" : "readWrite",
"db" : "kanfa"
},
{
"role" : "read",
"db" : "kanfa"
}
]
}
],
"ok" : 1
}
port = 27017 #端口
bind_ip = 172.17.165.245 ##允许的地址 为了安全
logpath = /usr/local/mongodb/logs/mongodb.log #日志位置
pidfilepath=/var/run/mongodb/mongodb.pid #pid 位置
dbpath=/data/mongodb #数据存放位置
master = true #确认我是主服务器
fork = true #设置后台运行
logappend = true #日志输入格式
auth = true #开启认证
keyFile=/usr/local/mongodb/keyfile #添加keyfile
port = 27017 #日志位置
bind_ip = 127.0.0.1, 172.17.165.245 #允许的地址为了安全,特别提示!!!逗号后面有空格!
logpath = /usr/local/mongodb/logs/mongodb.log #日志位置
pidfilepath=/var/run/mongodb/mongodb.pid #pid 位置
dbpath=/data/mongodb #数据存放位置
slave = true #确认是从服务
source = 172.17.165.245:27017 #规定从属于哪个ip 注意:ip是主服务器的
fork = true #设置后台运行
logappend = true #日志输入格式
auth = true #开启日志
keyFile=/usr/local/mongodb/keyfile #添加keyfile
rs.slaveOk()
在主的上面进行创建集合,然后在从的上面进行查看,创建以及删除 从的上面有响应的操作则说明配置成功。
当slave端落后过多的时候需要进行resync。resync会在master上加一个全局的写锁,会阻塞其它的写操作,直到resync结束。可以使用数据库命令进行resync:
use admin
db.runCommand({"resync":1})
脚本放在/etc/init.d/ 下面
chmod 755 mongodb
#!/bin/bash
#
#chkconfig: 2345 80 90
#description: mongodb
start() {
/usr/local/mongodb/bin/mongod --config /usr/local/mongodb/mongodb.conf
}
stop() {
/usr/local/mongodb/bin/mongod --config /usr/local/mongodb/mongodb.conf --shutdown
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
*)
echo $"Usage: $0 {start|stop|restart}"
exit 1
esac
正确关闭mongodb的方法
warning:千万不能使用kill -9 <pid>,因为MongoDB使用mmap方式进行数据文件管理,也就是说写操作基本是在内存中进行,写操作会被每隔60秒(syncdelay设定)的flush到磁盘里。如果在这60秒内flush处于停止事情我们进行kill -9那么从上次flush之后的写入数据将会全部丢失。
如果在flush操作进行时执行kill -9则会造成文件混乱,可能导致数据全丢了,启动时加了repair也无法恢复。
原文地址:http://blog.51cto.com/innocence/2094619