mongo非关系性数据库 查询性能好,数据性不是特别重要的情况下使用
[root@test ~]# tar xf mongodb-linux-x86_64-rhel70-5.0.7.tgz
[root@test ~]# mv mongodb-linux-x86_64-rhel70-5.0.7 /usr/local/mongodb
[root@test ~]# cd /usr/local/mongodb
[root@test mongodb]# ls
bin LICENSE-Community.txt MPL-2 README THIRD-PARTY-NOTICES
[root@test mongodb]# mkdir data logs
[root@test mongodb]# touch /usr/local/mongodb/logs/mongodb.log
[root@test mongodb]# vim /etc/mongodb.conf
dbpath=/usr/local/mongodb/data #数据库路径
logpath=/usr/local/mongodb/logs/mongodb.log #MongoDB日志文件
logappend=true # 使用追加的方式写日志
port=27017 #端口号
bind_ip=0.0.0.0 #绑定服务IP,若绑定127.0.0.1,则只能本机访问,不指定则默认本地所有IP
fork=true # 以守护进程的方式运行MongoDB,创建服务器进程
#auth=true #启用用户验证
[root@test mongodb]# vim /etc/profile
export MONGODB_HOME=/usr/local/mongodb
export PATH=$MONGODB_HOME/bin:$PATH
[root@test mongodb]# source /etc/profile
[root@test ~]# mongod -f /etc/mongodb.conf
about to fork child process, waiting until server is ready for connections.
forked process: 1094
child process started successfully, parent exiting
[root@test ~]# mongo
# MongoDB 自带的交互式 Javascript shell,用来对 MongoDB 进行操作和管理的交互式环境。
MongoDB shell version v5.0.7
connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("cd90aabc-f30e-4ea7-be0d-76c6039ffab8") }
MongoDB server version: 5.0.7
================
> use admin;
switched to db admin
> db.createUser({user:'root', pwd:'123456', roles:[{role:'root', db:'admin'}]});
Successfully added user: {
"user" : "root",
"roles" : [
{
"role" : "root",
"db" : "admin"
}
]
}
> exit
bye
[root@test ~]# mongo
> use admin
switched to db admin
> db.createUser({ user: "test",pwd: "1234",customData:{name:"test"},roles:[{ role: "userAdminAnyDatabase",db: "admin" }]})
Successfully added user: { //创建带密码的角色test
> db.auth('test','12345')
Error: Authentication failed.
0
> db.auth('test','1234')
1
> mongodb://test:1234@localhost/test //使用用户名和密码连接登录到指定数据库
...
> use testdb //如果数据库不存在,则创建数据库
switched to db testdb
> db //当前库
testdb
> show dbs //查看所有数据库,插入数据时才会显示创建的库
admin 0.000GB
config 0.000GB
local 0.000GB
> db.testdb.insert({"name":"dachui"}) //插入数据
WriteResult({ "nInserted" : 1 })
> show dbs
admin 0.000GB
config 0.000GB
local 0.000GB
testdb 0.000GB //新增的库
> use testdb //选中库
switched to db testdb
> db.dropDatabase() //删除库
{ "ok" : 1 }
> show dbs
admin 0.000GB
config 0.000GB
local 0.000GB
> use testdb
switched to db testdb
> db.createCollection("table") //创建集合,注意区分大小写
{ "ok" : 1 }
> show collections //查看集合
table
> use table //使用集合
switched to db table
创建带有参数的 createCollection()
> db.createCollection("mycol",{capped:true,autoIndexId:true,size:10000,max:9999})
{
"note" : "The autoIndexId option is deprecated and will be removed in a future release",
"ok" : 1
}
可以是以下参数:
字段 | 类型 | 描述 |
---|---|---|
capped | 布尔 | (可选)如果为 true,则创建固定集合。固定集合是指有着固定大小的集合,当达到最大值时,它会自动覆盖最早的文档。 当该值为 true 时,必须指定 size 参数。 |
autoIndexId | 布尔 | 3.2 之后不再支持该参数。(可选)如为 true,自动在 _id 字段创建索引。默认为 false。 |
size | 数值 | (可选)为固定集合指定一个最大值,即字节数。 如果 capped 为 true,也需要指定该字段。 |
max | 数值 | (可选)指定固定集合中包含文档的最大数量。 |
> use testdb
switched to db testdb
> show collections //查看
table
> db.table.drop() //删除集合table
true
> show collections
> db.mycol.insert({name:"dachui",sex:"boy"}) //插入数据
WriteResult({ "nInserted" : 1 })
> show collections
mycol
> db.mycol.find() //查看数据
{ "_id" : ObjectId("62676e80a3c1f22ef0404878"), "name" : "dachui", "sex" : "boy" }
主从配置方法
1. 主机器(master) 192.168.1.11
2. 从机器(slave) 192.168.1.12
mongodb home: /usr/local/mongodb/
data file: /usr/local/mongodb/data
log file: /usr/local/mongodb/logs
3. 启动master
mongod --dbpath=/usr/local/mongodb/data --logpath=/usr/local/mongodb/logs
--master --oplogSize 64 --logappend --port=27017 --fork
4. 启动slave
mongod --dbpath=/usr/local/mongodb/data --logpath=/usr/local/mongodb/logs
--slave --source 192.168.1.11 --only test --slavedelay 10
--logappend --port=27017 --fork
互为主从
启动master
mongod --dbpath=/usr/local/mongodb/data --logpath=/usr/local/mongodb/logs \
--master --slave --source 192.168.1.12 --logappend --port=27017 --fork
启动slave
mongod --dbpath=/usr/local/mongodb/data --logpath=/usr/local/mongodb/logs \
--master --slave --source 192.168.1.11 --only test --slavedelay 10 \
--logappend --port=27017 --fork
测试
在主机器上添加数据
db.foo.save({"id":123456,"name":'dachui'});
在从服务器看数据:
db.foo.find({"id":123})
Replica Pairs的配置方法
master
cd /usr/local/mongodb/
./bin/mongod --dbpath=/usr/local/mongodb/data --logpath=/usr/local/mongodb/logs\
--pairwith 192.168.1.11 --arbiter --logappend --port=27017 --fork
4. 启动slave
cd /usr/local/mongodb/
./bin/mongod --dbpath=/usr/local/mongodb/data --logpath=/usr/local/mongodb/logs\
--pairwith 192.168.1.12 --arbiter --logappend --port=27017 --fork
三 参数解释
参数解释: --dbpath 数据库路径(数据文件)
--logpath 日志文件路径
--master 指定为主机器
--slave 指定为从机器
--source 指定主机器的IP地址
--pologSize 命令行参数(与--master一同使用)配置用于存储给从节点可用的更新信息占用的磁盘空间(M为单位),如果不指定这个参数,默认大小为当前可用磁盘空间的5%(64位机器最小值为1G,32位机器为50M)。
--logappend 日志文件末尾添加
--port 启用端口号
--fork 在后台运行
--only 指定只复制哪一个数据库
--slavedelay 指从复制检测的时间间隔
--auth 是否需要验证权限登录(用户名和密码)
-h [ --help ] show this usage information
--version show version information
-f [ --config ] arg configuration file specifying additional options
--port arg specify port number
--bind_ip arg local ip address to bind listener - all local ips
bound by default
-v [ --verbose ] be more verbose (include multiple times for more
verbosity e.g. -vvvvv)
--dbpath arg (=/data/db/) directory for datafiles 指定数据存放目录
--quiet quieter output 静默模式
--logpath arg file to send all output to instead of stdout 指定日志存放目录
--logappend appnd to logpath instead of over-writing 指定日志是以追加还是以覆盖的方式写入日志文件
--fork fork server process 以创建子进程的方式运行
--cpu periodically show cpu and iowait utilization 周期性的显示cpu和io的使用情况
--noauth run without security 无认证模式运行
--auth run with security 认证模式运行
--objcheck inspect client data for validity on receipt 检查客户端输入数据的有效性检查
--quota enable db quota management 开始数据库配额的管理
--quotaFiles arg number of files allower per db, requires --quota 规定每个数据库允许的文件数
--appsrvpath arg root directory for the babble app server
--nocursors diagnostic/debugging option 调试诊断选项
--nohints ignore query hints 忽略查询命中率
--nohttpinterface disable http interface 关闭http接口,默认是28017
--noscripting disable scripting engine 关闭脚本引擎
--noprealloc disable data file preallocation 关闭数据库文件大小预分配
--smallfiles use a smaller default file size 使用较小的默认文件大小
--nssize arg (=16) .ns file size (in MB) for new databases 新数据库ns文件的默认大小
--diaglog arg 0=off 1=W 2=R 3=both 7=W+some reads 提供的方式,是只读,只写,还是读写都行,还是主要写+部分的读模式
--sysinfo print some diagnostic system information 打印系统诊断信息
--upgrade upgrade db if needed 如果需要就更新数据库
--repair run repair on all dbs 修复所有的数据库
--notablescan do not allow table scans 不运行表扫描
--syncdelay arg (=60) seconds between disk syncs (0 for never) 系统同步刷新磁盘的时间,默认是60s
Replication options:
--master master mode 主复制模式
--slave slave mode 从复制模式
--source arg when slave: specify master as 当为从时,指定主的地址和端口
--only arg when slave: specify a single database to replicate 当为从时,指定需要从主复制的单一库
--pairwith arg address of server to pair with
--arbiter arg address of arbiter server 仲裁服务器,在主主中和pair中用到
--autoresync automatically resync if slave data is stale 自动同步从的数据
--oplogSize arg size limit (in MB) for op log 指定操作日志的大小
--opIdMem arg size limit (in bytes) for in memory storage of op ids指定存储操作日志的内存大小
Sharding options:
--configsvr declare this is a config db of a cluster 指定shard中的配置服务器
--shardsvr declare this is a shard db of a cluster 指定shard服务器