mongodb复制集学习笔记
conf.conf 如下 bind_ip=192.168.1.100 port = 28001 logpath=/usr/local/mongodb/logs/28001 logappend=true dbpath=/usr/local/mongodb/datas/28001 replSet=imooc fork = true 查看当前复制集状态 rs.status() 或者 use admin; db.adminCommand({replSetGetStatus:1}) 查看当前复制集配置文件 rs.conf() show log rs #查看当前mongodb的日志 rs.stepDown(50) ## 把当前主节点50秒内降级为从节点 rs.isMaster() # 查看节点信息 /usr/local/mongodb/bin/mongo 10.51.105.19:28001/admin //建立配置 config={_id:"imooc",members:[{_id:0,host:"10.51.105.19:28001"}, {_id:1,host:"10.51.105.19:28002"},{_id:2,host:"10.51.105.19:28003"}]} //配置仲裁节点 config.members[2]={"_id":2,"host":"10.51.105.19:28003","arbiterOnly":true} //使配置文件生效,初始化 rs.initiate(config) ### rs.reconfig(config) 重新加载配置文件 测试同步 主节点上 use study imooc:PRIMARY> db.test.insert({"name":"xd"}) 子节点上 imooc:SECONDARY> rs.slaveOk(1) imooc:SECONDARY> use study imooc:SECONDARY> db.test.find() 复制集配置文件参数 _id: 整数0 host:字符串 “127.0.0.1:27017“ arbiterOnly: 布尔值 true priority:整数 0|1 该节点的优先级,如果设置为0,则永远不会升级为主节点 hidden:布尔值 true|false 或者 1|0 ,如果设置为false, 优先级 要设置为0,隐藏节点 votes:整数 0|1 具有投票 slaveDelay 整数 slaveDelay 3600 延迟节点 延迟多少秒进行复制 buildIndexes 布尔值 true|false 或者 1|0 主节点建立索引,子节点是否同步,如果设为false, 优先级 应设置为0 关于oplog Oplog大小及意义 默认大小 64位操作系统linux,windows为当前分区可用空间的5%,体积不会超过50G imooc:PRIMARY> use local imooc:PRIMARY> db.oplog.rs.status() imooc:PRIMARY> db.oplog.rs.find().sort({$natural:-1}).limit(1).pretty() //查看最近的一条数据,pretty()格式化输出 单节点启动复制后,如果要增加机器 rs.add({_id:1,host:" 10.51.105.19:28002"}) 调整oplog大小 imooc:PRIMARY>rs.freeze(100) imooc:PRIMARY>rs.stepDown(100) 然后退出kill掉这个进程,注释掉配置文件的 replSet=imooc,重新启动 >use local >show table ## 可以看到 oplog.rs > db.oplog.rs.find().sort({$natural:-1}).limit(1) >db.temp.save( db.oplog.rs.find().sort({$natural:-1}).limit(1).next()) >db.oplog.rs.drop() >db.createCollection("oplog.rs",{capped:true,size:1024 * 1024 * 1024 * 3}) >db.oplog.rs.save(db.temp.findOne()) 步骤总结 1.将成员以单机模式启动 2.将oplog最新的一条记录保存到临时表中 db.temp.save( db.oplog.rs.find().sort({$natural:-1}).limit(1).next()) 3.删除原来的oplog.rs集合 4.以创建封顶表的形式创建oplog.rs , db.createCollection("oplog.rs",{capped:true,size:1024 * 1024 * 1024 * 3}) 5.将之前保存的原oplog中的最新操作插入到新的oplog.rs集合中 db.oplog.rs.save(db.temp.findOne()) 6.将单节点模式的节点返回到复制集中 复制集状态查看 rs.status() 复制集状态查询 rs.printReplicationInfo() 查看oplog状态 rs.printSlaveReplicationInfo() 查看复制延迟 db.serverStatus() 查看状态详情 mongodb 监控工具 1.mongostat mongostat 常用选项 --host 主机名,或者 主机名:端口 --port 端口 --username 用户(验证) --password 密码(验证) --authenticationDatabase 从哪个数据库进行验证 --discover 发现集群其他节点 重点关注字段 getmore 大量的排序操作在进行 faults 需要的数据不在内存中 locked db 锁比例最高的库 index miss 索引未命中 qr|qw读写产生队列,供求失衡 2.mongotop 监控当前集合读写统计信息 --host 主机名,或者 主机名:端口 --port 端口 --username 用户(验证) --password 密码(验证) --authenticationDatabase 从哪个数据库进行验证 安全篇 开启认证 auth 单点 auth=true keyfile 集群之前认证 集群认证 keyfile文件的生成(内容base64编码集[a-zA-Z+/],长度1000字节,权限chmod 600 keyFile) openssl rand -base64 102 > .keyFile 调整权限 chmod 600 .keyFile 开启认证需要在配置文件中增加 setParameter=enableLocalhostAuthBypass=1 ## 本地例外,mongo localhost:28001 keyFile=/usr/local/mongodb/.keyFile 创建用户(创建第一个用户role要为root,db为admin) db.createUser( { user:'action',#字符串 pwd:'123',#字符串 roles:[{role:'root',db:'admin'}] #数组+对象, }) 创建用户后,然后登录客户端 use admin db.auth('admin','123') 删除用户 db.dropUser(<username>) ###删除某个用户 db.dropAllUsers() ###删除当前库的所有用户 权限 built-in roles 读写 read readWrite 管理员 dbAdmin dbOwner userAdmin clusterAdmin clusterManager clusterMonitor hostManager 备份 backup restore 全局 readAnyDatabase readWriteAnyDatabase userAdminAnyDatabase dbAdminAnyDatabase 超级用户 root 自定义角色 use admin db.createRole( { role:<role_name>, privileges:[ {resource:{db:<db_name>,collection:<coll_name>},actions:[<action_name>]} ], roles:[{role:<role_name>,db:<db_name>}] }) db.runCommand({userInfo:'admin',showPrivileges:1}) ##查看权限详情 修改用户名密码 需要具备 changePassword changeOwnPassword db.changeUserPassword(<user_name>,<new_password>) db.updateUser(<user_name>,{update_object}) 权限伸缩 如何增加权限 db.grantRolesToUser( <user_name>, [{role:<role_name>,db:<db_name>}] ) 如何收缩权限 db.revokeRolesFromUser( <user_name>, [{role:<role_name>,db:<db_name>}] )
文章属性
- 文章热度:534
- 文章标签:标签: mongodb 复制集
- 生产日期:2017-9-26 18:02 Tuesday
- « thinkphp的nginx重写兼容配置 | mac下ssh登录记录账号»
精彩评论