最近在做mongoDB的一些配置 也就玩玩的 照着已有事例做的
这里就总结一下做的过程 顺便就当做个人的笔记了 内容不怎么好 做完之后的简单总结 需要的可以看看
哪里有错希望能提出 谢谢^_^
笔记中的 --参数 都是在mongod时使用.
一份通用的配置文件 笔记中记录用:
使用直接用 mongod -f 配置文件位置
#日志存放位置 logpath=/cc/mongodb/log/mongodb.log #数据库文件位置 dbpath=/cc/data/master #每次启动覆盖日志,true为不覆盖 logappend=false #不打印CPU详细信息 cpu=false journal=true journalCommitInterval=100 rest=true #以守护进程启动 fork=true auth=false #不添加新建一个会占用4G左右 添加这个参数占用会变小 smallfiles=true port=27017
更多参数请看:http://www.cnblogs.com/WilliamWang/archive/2012/10/20/configuration-options.html
Replication
简单点说是主从节点的复制
存在一个master node和一些slave node
master node可以做增删改查的操作 而slave node只能做查找 实际应用的时候就可以用多个从节点做读的负载
主从节点建立:
1、建立启动主节点:
--master(表示主节点)
--port 端口(port可以记录在配置文件里)
2、建立启动从节点:
--port 确定个端口(在同一台机子上别弄重了)
--slave(表示从节点)
--source 指向主节点(本机的话localhost:主节点端口)
查看复制情况:
db.printReplicationInfo()
ReplSet:
副本集里 没有主从之分
由一个活动节点和N个备份节点组成
一旦活动节点挂了 备份节点中会选取一个接管活动节点(成为新的活动节点)
创建(还是一样 同机上多节点 --port 要不一样 可以在配置文件中指定):
1、建立节点并为副本集取名
--replSet 名字(同一副本集的节点名要相同)
2、初始化
初始化命令只执行一次:
mongo 进入对应的节点(随便进入哪一个都行 地位是平等的)
参数={"_id":"副本集名称(和--replSet的名字相同)",members:[{_id:0,host:"127.0.0.1:1111"},{_id:1,host:"127.0.0.1:2222"},....]}
用rs.initiate(参数)
查看状态 rs.status()
备份节点无法查询和其他操作 因为不是活动节点 不提供服务
节点类型:
standard:常规节点 有数据副本 可以参与投票 可以成为活动节点
passive:有数据副本 参与投票 但不能成为活跃节点
arbiter:只参与投票 不接受复制数据 不能成为活跃节点
Shard:
(图中的node 取名叫s1纯粹是乱起 叫 node1 也行 s没有任何意思 请不要在意)
分片:将数据拆分,将其分散到不同机器上的过程
mongodb支持自动分片
片键的选择(该键值作为数据拆分的依据)
建立分片:
1、选片键
2、建立并启动分片节点(mongod)
3、创建并启动配置服务器(configdb 就是一个node 和普通node建立无差别)
4、启动mongos路由进程(用mongos)
5、添加分片(详见以下的)
(生产环境至少多个mongos 3个配置服务器 开发时各用一个就够了)
第4步过程:
mongos --port XXXX --configdb localhost:port(对应的configdb的ip和端口)
添加:登陆到mongos上添加(用mongo --port mongos的端口)
注意要先 use admin 不然命令执行也许会有错误
db.runCommand({addshard:"地址:端口",allowLocal:true})
启动分片功能:
db.runCommand({"enablesharding":"数据库名"})
启动片键:
db.runCommand({"shardcollection":"数据库名.集合名",key:{"userName":1}})
使用时连接mongos所在端口
各个切片(Shard都可以读写数据 在mongos上都可以查到各个分片的数据)