Centos安装配置MongoDB数据库实例
系统:centos 5.9
1.安装前准备
这是针对64位系统yum源:
代码如下 | |
echo "[MongoDB] |
这是针对32位系统yum源
代码如下 | |
|
2.安装mongodb
代码如下 | |
yum -y install mongo-10gen mongo-10gen-server |
3.配置mongodb
cat /etc/mongod.conf
# mongo.conf
#where to log
logpath=/var/log/mongo/mongod.log
代码如下 | |
logappend=true #以追加方式写入日志 # fork and run in background fork = true #port = 27017 #端口 dbpath=/var/lib/mongo #数据库文件保存位置 # Enables periodic logging of CPU utilization and I/O wait #启用定期记录CPU利用率和 I/O 等待 #cpu = true # Turn on/off security. Off is currently the default # 是否以安全认证方式运行,默认是不认证的非安全方式 #noauth = true #auth = true # Verbose logging output. # 详细记录输出 #verbose = true # Inspect all client data for validity on receipt (useful for # developing drivers)用于开发驱动程序时的检查客户端接收数据的有效性 #objcheck = true # Enable db quota management 启用数据库配额管理,默认每个db可以有8个文件,可以用quotaFiles参数设置 #quota = true # 设置oplog记录等级 # Set oplogging level where n is # 0=off (default) # 1=W # 2=R # 3=both # 7=W+some reads #oplog = 0 # Diagnostic/debugging option 动态调试项 #nocursors = true # Ignore query hints 忽略查询提示 #nohints = true # 禁用http界面,默认为localhost:28017 # Disable the HTTP interface (Defaults to localhost:27018).这个端口号写的是错的 #nohttpinterface = true # 关闭服务器端脚本,这将极大的限制功能 # Turns off server-side scripting. This will result in greatly limited # functionality #noscripting = true # 关闭扫描表,任何查询将会是扫描失败 # Turns off table scans. Any query that would do a table scan fails. #notablescan = true # 关闭数据文件预分配 # Disable data file preallocation. #noprealloc = true # 为新数据库指定.ns文件的大小,单位:MB # Specify .ns file size for new databases. # nssize = <size> # Accout token for Mongo monitoring server. #mms-token = <token> # mongo监控服务器的名称 # Server name for Mongo monitoring server. #mms-name = <server-name> # mongo监控服务器的ping 间隔 # Ping interval for Mongo monitoring server. #mms-interval = <seconds> # Replication Options 复制选项 # in replicated mongo databases, specify here whether this is a slave or master 在复制中,指定当前是从属关系 #slave = true #source = master.example.com # Slave only: specify a single database to replicate #only = master.example.com # or #master = true #source = slave.example.com |
以上是默认的配置文件中的一些参数,更多参数可以用 mongod -h 命令来查看
代码如下 | |
[root@test ~]# mongod -h Allowed options: General options: -h [ --help ] show this usage information --version show version information -f [ --config ] arg configuration file specifying additional options 指定启动配置文件路径 -v [ --verbose ] be more verbose (include multiple times for more verbosity e.g. -vvvvv) --quiet quieter output --port arg specify port number 端口 --bind_ip arg comma separated list of ip addresses to listen on - all local ips by default 绑定ip,可以多个 --maxConns arg max number of simultaneous connections 最大并发连接数 --logpath arg log file to send write to instead of stdout - has to be a file, not directory 日志文件路径 --logappend append to logpath instead of over-writing 日志写入方式 --pidfilepath arg full path to pidfile (if not set, no pidfile is created) pid文件路径 --keyFile arg private key for cluster authentication (only for replica sets)集群认证私钥,仅适用于副本集 --unixSocketPrefix arg alternative directory for UNIX domain sockets (defaults to /tmp)替代目录 --fork fork server process --auth run with security 使用认证方式运行 --cpu periodically show cpu and iowait utilization 定期显示的CPU和IO等待利用率 --dbpath arg directory for datafiles 数据库文件路径 --diaglog arg 0=off 1=W 2=R 3=both 7=W+some reads oplog记录等级 --directoryperdb each database will be stored in a separate directory 每个数据库存储到单独目录 --journal enable journaling 记录日志,建议开启,在异常宕机时可以恢复一些数据 --journalOptions arg journal diagnostic options --ipv6 enable IPv6 support (disabled by default) --jsonp allow JSONP access via http (has security implications)允许JSONP通过http访问,该方式存在安全隐患 --noauth run without security 不带安全认证的方式 --nohttpinterface disable http interface 禁用http接口 --noprealloc disable data file preallocation - will often hurt performance 禁用数据文件的预分配,往往会损害性能 --noscripting disable scripting engine 禁用脚本引擎 --notablescan do not allow table scans 不允许表扫描 --nounixsocket disable listening on unix sockets禁止unix sockets监听 --nssize arg (=16) .ns file size (in MB) for new databases 为新数据设置.ns文件的大小 --objcheck inspect client data for validity on receipt 检查在收到客户端的数据的有效性 --profile arg 0=off 1=slow, 2=all --quota limits each database to a certain number of files (8 default)启用数据库配额管理,默认每个db可以有8个文件,可以用quotaFiles参数设置 --quotaFiles arg number of files allower per db, requires --quota --rest turn on simple rest api 开启rest api --repair run repair on all dbs 修复所有数据库 --repairpath arg root directory for repair files - defaults to dbpath修复文件的根目录,默 认为dbpath指定的目录 --slowms arg (=100) value of slow for profile and console log --smallfiles use a smaller default file size --syncdelay arg (=60) seconds between disk syncs (0=never, but not recommended)与硬盘同步数据的时间,默认60秒,0表示不同步到硬盘(不建议) --sysinfo print some diagnostic system information打印一些诊断系统信息 --upgrade upgrade db if needed 如果必要,将数据库文件升级到新的格式 (<=1.0到1.1+升级时所需的) Replication options: 复制选项 --fastsync indicate that this instance is starting from a dbpath snapshot of the repl peer 从一个dbpath快照开始同步 --autoresync automatically resync if slave data is stale 自动同步,如果从机的数据不是新的 自动同步 --oplogSize arg size limit (in MB) for op log oplog的大小 Master/slave options: 主/从配置选项 --master master mode 主模式 --slave slave mode 从属模式 --source arg when slave: specify master as <server:port>从属服务器上指定主服务器地址 --only arg when slave: specify a single database to replicate从属服务器上指定要复制的 数据库 --slavedelay arg specify delay (in seconds) to be used when applying master ops to slave 指定从主服务器上同步数据的时间间隔 单位秒 Replica set options: 副本集选项 --replSet arg arg is <setname>[/<optionalseedhostlist>] 参数:<名称>[<种子主机列表>] Sharding options: 分片设置选项 --configsvr declare this is a config db of a cluster; default port 27019; default dir /data/configdb 声明这是一个集群的配置数据库, 默认的端口是27019 默认的路径是/data/configdb --shardsvr declare this is a shard db of a cluster; default port 27018 声明这是集群的一个分片数据库,默认端口为27018 --noMoveParanoia turn off paranoid saving of data for moveChunk. this is on by default for now, but default will switch 关闭偏着保存大块数据。现在它是默认的,但是会变换 |
5.启动mongodb
代码如下 | |
service mongod start chkconfig mongod on |
如果启动显示成功后,可以在命令行输入:
mongo
测试和操作数据库.
构造查询数据。
代码如下 | |
> db.test.findOne()
--指定不返回的文档键值对。下面的示例将返回除name之外的所有键值对。 |
2. 查询条件:
代码如下 | |
MongoDB提供了一组比较操作符:$lt/$lte/$gt/$gte/$ne,依次等价于</<=/>/>=/!=。 --下面的示例返回符合条件age >= 18 && age <= 40的文档。 > db.test.find({"age":{"$gte":18, "$lte":40}}) { "_id" : ObjectId("4fd58ecbb9ac507e96276f1a"), "name" : "stephen", "age" : 35,"genda" : "male", "email" : "stephen@hotmail.com" } --下面的示例返回条件符合name != "stephen1" > db.test.find({"name":{"$ne":"stephen1"}}) { "_id" : ObjectId("4fd58ecbb9ac507e96276f1a"), "name" : "stephen", "age" : 35,"genda" : "male", "email" : "stephen@hotmail.com" } --$in等同于SQL中的in,下面的示例等同于SQL中的in ("stephen","stephen1") > db.test.find({"name":{"$in":["stephen","stephen1"]}}) { "_id" : ObjectId("4fd58ecbb9ac507e96276f1a"), "name" : "stephen", "age" : 35,"genda" : "male", "email" : "stephen@hotmail.com" } --和SQL不同的是,MongoDB的in list中的数据可以是不同类型。这种情况可用于不同类型的别名场景。 > db.test.find({"name":{"$in":["stephen",123]}}) { "_id" : ObjectId("4fd58ecbb9ac507e96276f1a"), "name" : "stephen", "age" : 35,"genda" : "male", "email" : "stephen@hotmail.com" } --$nin等同于SQL中的not in,同时也是$in的取反。如: > db.test.find({"name":{"$nin":["stephen2","stephen1"]}}) { "_id" : ObjectId("4fd58ecbb9ac507e96276f1a"), "name" : "stephen", "age" : 35,"genda" : "male", "email" : "stephen@hotmail.com" } --$or等同于SQL中的or,$or所针对的条件被放到一个数组中,每个数组元素表示or的一个条件。 --下面的示例等同于name = "stephen1" or age = 35 > db.test.find({"$or": [{"name":"stephen1"}, {"age":35}]}) { "_id" : ObjectId("4fd58ecbb9ac507e96276f1a"), "name" : "stephen", "age" : 35,"genda" : "male", "email" : "stephen@hotmail.com" } --下面的示例演示了如何混合使用$or和$in。 > db.test.find({"$or": [{"name":{"$in":["stephen","stephen1"]}}, {"age":36}]}) { "_id" : ObjectId("4fd58ecbb9ac507e96276f1a"), "name" : "stephen", "age" : 35,"genda" : "male", "email" : "stephen@hotmail.com" } --$not表示取反,等同于SQL中的not。 > db.test.find({"name": {"$not": {"$in":["stephen2","stephen1"]}}}) { "_id" : ObjectId("4fd58ecbb9ac507e96276f1a"), "name" : "stephen", "age" : 35,"genda" : "male", "email" : "stephen@hotmail.com" } |
注意:默认mongodb的数据目录对应的是/data/db下面。日志目录对于到/data/logs/mongodb.log,如果是目录结构有调整需要重新指定配置的路径