Mongodb主从进行配置+auth


环境介绍

master:172.17.165.245

salve    :172.17.165.230

版本 3.4

注:这里的安装步骤进行省略了 家目录在/usr/local/mongodb


配置key文件


cd /usr/local/mongodb/
openssl rand -base64 741 >>keyfile
chmod 700 keyfile


开启了auth


这里开启了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
}


master配置文件


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


slave 配置文件


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


重启master slave 服务在从的上面执行


rs.slaveOk()


查看主从并进行测试


在主的上面进行创建集合,然后在从的上面进行查看,创建以及删除  从的上面有响应的操作则说明配置成功。


resync

  当slave端落后过多的时候需要进行resync。resync会在master上加一个全局的写锁,会阻塞其它的写操作,直到resync结束。可以使用数据库命令进行resync:


use admin
db.runCommand({"resync":1})


mongodb启动脚本


脚本放在/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 ,因为MongoDB使用mmap方式进行数据文件管理,也就是说写操作基本是在内存中进行,写操作会被每隔60秒(syncdelay设定)的flush到磁盘里。如果在这60秒内flush处于停止事情我们进行kill -9那么从上次flush之后的写入数据将会全部丢失。
如果在flush操作进行时执行kill -9则会造成文件混乱,可能导致数据全丢了,启动时加了repair也无法恢复。