二 启动
首先用命令进入到bin目录下: [C#] 纯文本查看 复制代码 cd /usr/local/mongodb/bin
方式一:直接运行命令启动
[C#] 纯文本查看 复制代码 ./mongod –port 10000 –fork –logpath= logpath=/data/mongodb/log/mongodb.log -- logappend -- dbpath=/data/mongodb/data/db
方式二:通过配置文件方式启动(推荐)。
1.在服务器上新建mongodb.conf配置文件(建议用命令生成,放在mongodb同一个目录下)
内容为:
[C#] 纯文本查看 复制代码 port=10000 #端口号
fork=true #以守护进程的方式运行,创建服务器进程
#master=true #单主从配置时设为主服务器
#salve=true ##单主从配置时设为从服务器
logpath=/data/mongodb/log/mongodb.log #日志输出文件路径
logappend=true #日志输出方式
dbpath=/data/mongodb/data/db #数据库路径
replSet=blort #设置富本集的名字
shardsvr=true #设置是否分片
2.运行[C#] 纯文本查看 复制代码 ./mongod –config ~/.mongodb.conf 命令(--config可以直接写成-f)。 输出:
[C#] 纯文本查看 复制代码 all output going to: /data/mongodb/log/mongodb.log[/p] forked process: 5315
mongodb 启动参数
--quiet # 安静输出
--port arg # 指定服务端口号,默认端口27017
--bind_ip arg # 绑定服务IP,若绑定127.0.0.1,则只能本机访问,不指定默认本地所有IP
--logpath arg # 指定MongoDB日志文件,注意是指定文件不是目录
--logappend # 使用追加的方式写日志
--pidfilepath arg # PID File 的完整路径,如果没有设置,则没有PID文件
--keyFile arg # 集群的私钥的完整路径,只对于Replica Set 架构有效
--unixSocketPrefix arg # UNIX域套接字替代目录,(默认为 /tmp)
--fork # 以守护进程的方式运行MongoDB,创建服务器进程
--auth # 启用验证
--cpu # 定期显示CPU的CPU利用率和iowait
--dbpath arg # 指定数据库路径
--diaglog arg # diaglog选项 0=off 1=W 2=R 3=both 7=W+some reads
--directoryperdb # 设置每个数据库将被保存在一个单独的目录
--journal # 启用日志选项,MongoDB的数据操作将会写入到journal文件夹的文件里
--journalOptions arg # 启用日志诊断选项
--ipv6 # 启用IPv6选项
--jsonp # 允许JSONP形式通过HTTP访问(有安全影响)
--maxConns arg # 最大同时连接数 默认2000
--noauth # 不启用验证
--nohttpinterface # 关闭http接口,默认关闭27018端口访问
--noprealloc # 禁用数据文件预分配(往往影响性能)
--noscripting # 禁用脚本引擎
--notablescan # 不允许表扫描
--nounixsocket # 禁用Unix套接字监听
--nssize arg (=16) # 设置信数据库.ns文件大小(MB)
--objcheck # 在收到客户数据,检查的有效性,
--profile arg # 档案参数 0=off 1=slow, 2=all
--quota # 限制每个数据库的文件数,设置默认为8
--quotaFiles arg # number of files allower per db, requires --quota
--rest # 开启简单的rest API
--repair # 修复所有数据库run repair on all dbs
--repairpath arg # 修复库生成的文件的目录,默认为目录名称dbpath
--slowms arg (=100) # value of slow for profile and console log
--smallfiles # 使用较小的默认文件
--syncdelay arg (=60) # 数据写入磁盘的时间秒数(0=never,不推荐)
--sysinfo # 打印一些诊断系统信息
--upgrade # 如果需要升级数据库
* Replicaton 参数
--------------------------------------------------------------------------------
--fastsync # 从一个dbpath里启用从库复制服务,该dbpath的数据库是主库的快照,可用于快速启用同步
--autoresync # 如果从库与主库同步数据差得多,自动重新同步,
--oplogSize arg # 设置oplog的大小(MB)
* 主/从参数
--------------------------------------------------------------------------------
--master # 主库模式
--slave # 从库模式
--source arg # 从库 端口号
--only arg # 指定单一的数据库复制
--slavedelay arg # 设置从库同步主库的延迟时间
* Replica set(副本集)选项:
--------------------------------------------------------------------------------
--replSet arg # 设置副本集名称
* Sharding(分片)选项
--------------------------------------------------------------------------------
--configsvr # 声明这是一个集群的config服务,默认端口27019,默认目录/data/configdb
--shardsvr # 声明这是一个集群的分片,默认端口27018
--noMoveParanoia # 关闭偏执为moveChunk数据保存?
三 查询进程和关闭数据库
1. 运行 ps -ef|grep mongo 命令查询服务器进程
2. 运行 kill -2 5315命令kill掉5315的进程
四 进入数据库并简单操作数据库
1.运行./mongo –port 1000进入刚刚启动的端口号为10000的数据库
2.使用use test可以切换集合(相当于数据库表),这里切换到了test集合
3.使用db.test.insert("a","b");向集合插入数据
4.使用db.test.find();查询集合里的数据
5.更多shell命令请查阅相关文档
五 注意事项
1. 防火墙设置(测试时可直接关闭linux关闭防火墙:立即但不永久生效:service iptables stop重启永久生效:chkconfig iptables off) 第二节 副本集
简单的说,副本集就是有自动故障恢复功能的主从集群,副本集没有固定的"主节点",集群会通过投票选举一个"主节点"。当主节点岩机时,会变更到其他节点。副本集布在不同机器上时,至少要启动三个(单数)数据库服务器进程,否则启动时投票不成功会一直初始化不了。
一 以配置文件方式启动三台机器上的数据库服务器
1. 三台服务器的配置文件:
[C#] 纯文本查看 复制代码 port=10000 #端口号
fork=true #以守护进程的方式运行,创建服务器进程
logpath=/data/mongodb/log/mongodb.log #日志输出文件路径
logappend=true #日志输出方式
dbpath=/data/mongodb/data/db #数据库路径
replSet=blort #设置富本集的名字为blort,replSet是让服务器知道在这个"blort"副本集中还有别的机器
# replSet=blort /10.10.112.181:10000, 10.10.112.191:10000#设置富本集的名字,这种方式也可以,意思就是"blort"副本集其他机器,位置在10.10.112.181:10000和10.10.112.191:10000,但不推荐
2. 通命令启动三台数据库服务器
[C#] 纯文本查看 复制代码 /usr/local/mongodb/bin/mongod -f /data/mongodb/blort/config.conf
/usr/local/mongodb/bin/mongod -f /data/mongodb/blort2/config.conf
/usr/local/mongodb/bin/mongod -f /data/mongodb/blort3/config.conf
二 初始化副本集(只能初始化一次)
[C#] 纯文本查看 复制代码 /usr/local/mongodb/bin/mongo --port 30001
use admin
方法一:
[C#] 纯文本查看 复制代码 db.runCommand({"replSetInitiate":{"_id":"blort","members":[{"_id":0,"host":"10.10.113.122:30001"},{"_id":1,"host":"10.10.113.122:30002"},{"_id":2,"host":"10.10.113.122:30003","arbiterOnly":true}]}})
方法二:
[C#] 纯文本查看 复制代码 config={_id:'blort',members:[{"_id":0,host:'10.10.113.122:30001},{"_id":1,host:'10.10.113.122:30002'},{"_id":2,"host":"10.10.113.122:30003","arbiterOnly":true}]};
rs.initiate(config); 三 增加和设置副本集
有几种不同类型的节点可以存在于副本集:
Standard :存在于副本,参与投票,有可能成为活跃节点(即主节点)
Passive :存储了完整的数据副本,参与投票,不能成为活跃节点
Arbiter:仲裁者,只参与投票,不能成为活跃节点
Priority:优先级,(投票会投优先级高的,如果相同,则投数据最新的)
以上类型可以通过以下命令对副本集合进行修改或者增加服务器
[C#] 纯文本查看 复制代码 db.runCommand({"replSetReconfig":{"_id":"test3","version":2,"members":[{"_id":0,"host":"10.10.113.122:30001"},{"_id":1,"host":"10.10.113.122:30002"},{"_id":2,"host":"10.10.113.122:30003","arbiterOnly":true}]}})
增加副本服务器
在增加一个从服务器节点
a.以相同副本集名字启动一台服务器
b.通过rs.add命令往system.replset添加新的从服务器成员
[C#] 纯文本查看 复制代码 rs.add("10.10.113.122:30005"); 或者rs.add({"_id":4,"host":"10.10.113.122:30005"}) [/p] 添加仲裁
rs.addArb("10.10.113.122:30004"); 四 读扩展
待研究
五 用户校验
[C#] 纯文本查看 复制代码 未成功
use test;
db.addUser("test","123456");
db.auth("test","123456");
db.system.users.find();
db.system.users.remove("test","123456");
第二节 replica sets + shard (双机方案,单机模拟)
一 准备
[C#] 纯文本查看 复制代码 mkdir -p /data/mongodb/shard1-1/db/
mkdir -p /data/mongodb/shard1-1/log/
/data/mongodb/shard1-1/config.conf
port=30001 #端口号
fork=true #以守护进程的方式运行,创建服务器进程
#nohttpinterface=true # 关闭http接口,默认关闭27018端口访问 port + 1000
rest = true #http接口 启动rest 使能访问 。与nohttpinterface 对应 只开一个
shardsvr=true #启动分片
#oplogSize=100 #复制日志大小 MB
logpath=/data/mongodb/shard1-1/log/shard1-1.log #日志输出文件路径
logappend=true #日志输出方式
dbpath=/data/mongodb/shard1-1/db #数据库路径
directoryperdb=true # 设置每个数据库将被保存在一个单独的目录
replSet=shard1 #设置富本集的名字为shard1,replSet是让服务器知道在这个"shard1"副本集中还有别的机器
#auth=true # 启用验证
mkdir -p /data/mongodb/shard1-1a/db/
mkdir -p /data/mongodb/shard1-1a/log/
/data/mongodb/shard1-1a/config.conf
port=30002 #端口号
fork=true #以守护进程的方式运行,创建服务器进程
#nohttpinterface=true # 关闭http接口,默认关闭27018端口访问 port + 1000
rest = true #http接口 启动rest 使能访问 。与nohttpinterface 对应 只开一个
shardsvr=true #启动分片
#oplogSize=100 #复制日志大小 MB
logpath=/data/mongodb/shard1-1a/log/shard1-1a.log #日志输出文件路径
logappend=true #日志输出方式
dbpath=/data/mongodb/shard1-1a/db #数据库路径
directoryperdb=true # 设置每个数据库将被保存在一个单独的目录
replSet=shard1 #设置富本集的名字为shard1,replSet是让服务器知道在这个"shard1"副本集中还有别的机器
#auth=true # 启用验证
mkdir -p /data/mongodb/shard1-2/db/
mkdir -p /data/mongodb/shard1-2/log/
/data/mongodb/shard1-2/config.conf
port=30003 #端口号
fork=true #以守护进程的方式运行,创建服务器进程
#nohttpinterface=true # 关闭http接口,默认关闭27018端口访问 port + 1000
rest = true #http接口 启动rest 使能访问 。与nohttpinterface 对应 只开一个
shardsvr=true #启动分片
#oplogSize=100 #复制日志大小 MB
logpath=/data/mongodb/shard1-2/log/shard1-2.log #日志输出文件路径
logappend=true #日志输出方式
dbpath=/data/mongodb/shard1-2/db #数据库路径
directoryperdb=true # 设置每个数据库将被保存在一个单独的目录
replSet=shard1 #设置富本集的名字为shard1,replSet是让服务器知道在这个"shard1"副本集中还有别的机器
#auth=true # 启用验证
mkdir -p /data/mongodb/shard2-1/db/
mkdir -p /data/mongodb/shard2-1/log/
/data/mongodb/shard2-1/config.conf
port=32001 #端口号
fork=true #以守护进程的方式运行,创建服务器进程
#nohttpinterface=true # 关闭http接口,默认关闭27018端口访问 port + 1000
rest = true #http接口 启动rest 使能访问 。与nohttpinterface 对应 只开一个
shardsvr=true #启动分片
#oplogSize=100 #复制日志大小 MB
logpath=/data/mongodb/shard2-1/log/shard2-1.log #日志输出文件路径
logappend=true #日志输出方式
dbpath=/data/mongodb/shard2-1/db #数据库路径
directoryperdb=true # 设置每个数据库将被保存在一个单独的目录
replSet=shard2 #设置富本集的名字为shard2,replSet是让服务器知道在这个"shard2"副本集中还有别的机器
#auth=true # 启用验证
mkdir -p /data/mongodb/shard2-1a/db/
mkdir -p /data/mongodb/shard2-1a/log/
/data/mongodb/shard2-1a/config.conf
port=32002 #端口号
fork=true #以守护进程的方式运行,创建服务器进程
#nohttpinterface=true # 关闭http接口,默认关闭27018端口访问 port + 1000
rest = true #http接口 启动rest 使能访问 。与nohttpinterface 对应 只开一个
shardsvr=true #启动分片
#oplogSize=100 #复制日志大小 MB
logpath=/data/mongodb/shard2-1a/log/shard2-1a.log #日志输出文件路径
logappend=true #日志输出方式
dbpath=/data/mongodb/shard2-1a/db #数据库路径
directoryperdb=true # 设置每个数据库将被保存在一个单独的目录
replSet=shard2 #设置富本集的名字为shard2,replSet是让服务器知道在这个"shard2"副本集中还有别的机器
#auth=true # 启用验证
mkdir -p /data/mongodb/shard2-2/db/
mkdir -p /data/mongodb/shard2-2/log/
/data/mongodb/shard2-2/config.conf
port=32003 #端口号
fork=true #以守护进程的方式运行,创建服务器进程
#nohttpinterface=true # 关闭http接口,默认关闭27018端口访问 port + 1000
rest = true #http接口 启动rest 使能访问 。与nohttpinterface 对应 只开一个
shardsvr=true #启动分片
#oplogSize=100 #复制日志大小 MB
logpath=/data/mongodb/shard2-2/log/shard2-2.log #日志输出文件路径
logappend=true #日志输出方式
dbpath=/data/mongodb/shard2-2/db #数据库路径
directoryperdb=true # 设置每个数据库将被保存在一个单独的目录
replSet=shard2 #设置富本集的名字为shard2,replSet是让服务器知道在这个"shard2"副本集中还有别的机器
#auth=true # 启用验证
mkdir -p /data/mongodb/config1/db/
mkdir -p /data/mongodb/config1/log/
/data/mongodb/config1/config.conf
dbpath = /data/mongodb/config1/db
configsvr = true
port = 40001
logpath =/data/mongodb/config1/log/config1.log
logappend = true
fork = true
|