1 比较 数字大小用的是字符串的话,需要也转为 字符串
2 所有的类型
Type | Number | Alias | Notes |
---|---|---|---|
Double | 1 | “double” | |
String | 2 | “string” | |
Object | 3 | “object” | |
Array | 4 | “array” | |
Binary data | 5 | “binData” | |
Undefined | 6 | “undefined” | Deprecated. |
ObjectId | 7 | “objectId” | |
Boolean | 8 | “bool” | |
Date | 9 | “date” | |
Null | 10 | “null” | |
Regular Expression | 11 | “regex” | |
DBPointer | 12 | “dbPointer” | Deprecated. |
JavaScript | 13 | “javascript” | |
Symbol | 14 | “symbol” | Deprecated. |
JavaScript (with scope) | 15 | “javascriptWithScope” | |
32-bit integer | 16 | “int” | |
Timestamp | 17 | “timestamp” | |
64-bit integer | 18 | “long” | |
Decimal128 | 19 | “decimal” | New in version 3.4. |
Min key | -1 | “minKey” | |
Max key | 127 | “maxKey” |
3 启动服务命令
nohup ./mongod --port 27071 --dbpath data/db --fork --logpath log/mongo.log
不加 --fork 关闭服务台自动关闭的会--fork 为了关闭客户端是不退出
但加了--fork就需要加 logpath, 否则 失败
3 mongodb 集群分片副本集搭建
临时关闭大内存页面的方法
echo never >> /sys/kernel/mm/transparent_hugepage/enabled
echo never >> /sys/kernel/mm/transparent_hugepage/defrag下载 redhat 4.0
wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-4.0.10.tgz更新系统时间
/usr/sbin/ntpdate ntp1.aliyun.com cd /opt为目录创建超链接
ln -s mongodb-linux-x86_64-rhel70-4.0.10 mongodb修改文件的组名和用户名,用户名在前
chown -R root.root mongodb chown -R root.root /data/mongodb查看用户组 groups查看用户组 groups root (root:root)为添加的用户指定相应的用户组# useradd -g root ttln -s mongodb-linux-x86_64-rhel70-4.0.10 mongodb
添加用户修改密码的方法1、在root下添加用户用 adduser 命令 # 添加用户 admin [root@flm] #sudo adduser admin2、添加用户登录密码
# 为用户 admin 修改密码 [root@flm] #sudo passwd admin然后输入密码就可以了分类: Linux覆盖文件的方法,多行的数据
cat > /root/test.txt <<EOFcat >/data/mongodb/config/mongo.conf <<"EOF"
dbpath=/data/mongodb/config/data/logpath=/data/mongodb/config/log/config.loglogappend=trueport=21000fork=truerest=falsehttpinterface=trueconfigsvr=truereplSet=cfgReplSetEOF竟然 mongodb 一般放在了mongodb的目录下了
分配大内存方式启动 命令对于一口气吃掉内存大半的MongoDB,我的配置是:# numactl --interleave=all mongod -f /etc/mongod.conf
1 即分配所有的node供其使用,这也是官方推荐的用法。 numastat 查看内存状态yum install numactl
配置集群前需要先启动 mongodb的服务
numactl --interleave=all /opt/mongodb/bin/mongod -f /data/mongodb/config/mongo.conf4.0变化,下面两个都去掉
启动服务是无法识别 rest=true,需要去掉才可以不识别 httpinterface 也要去掉 。。。。。numactl --interleave=all /opt/mongodb/bin/mongo --host localhost --port 21000启动后添加副本集连不上,我猜测是因为另外两个没有启动造成的,需要把另外两个也安装号才可以
rs.initiate({_id:"cfgReplSet",configsvr:true,members:[{_id:0,host:"127.0.0.1:21000"},{_id:1,host:"127.0.0.1:31000"},{_id:2,host:"127.0.0.1:41000"}]})
创建服务的顺序
先 config,然后 分片 shard,最后 mongos因为机器数码的限制,目前3个机器也变成了一个
目前 mongos 20000 30000 40000 config 21000 31000 41000 shard1 22000 32000 42000开始配置 shard1 EOF 输入后自动结束 记得 cat >后面没有空格
cat >/data/mongodb/shard1/mongo.conf <<"EOF"dbpath=/data/mongodb/shard1/datalogpath=/data/mongodb/shard1/log/shard1.loglogappend=trueport=22001fork=truereplSet=shard1ReplSetshardsvr=truejournal=false启动失败因为上次一场关闭了
[root@VM_0_10_centos bin]# find / -name mongod.lock
/data/mongodb/shard1/data/mongod.lock/data/mongodb/config/data/mongod.lock
//设置时间和 基础特殊查询 if(startdate==0||enddate==0){// enddate = new Date().getTime();// startdate = enddate = 24*7*60*60*1000; LocalDateTime now = LocalDateTime.now(); LocalDateTime bef = now.minusHours(24*7); enddate = Date.from(now.atZone(ZoneId.systemDefault()).toInstant()).getTime(); startdate = Date.from(bef.atZone(ZoneId.systemDefault()).toInstant()).getTime(); } BasicDBObject condition = new BasicDBObject(); condition.put("aaaa",new BasicDBObject("$lte",enddate).append("$gte",startdate)); condition.put("bbb",statistic.getFloor()); condition.put("loadClass",new BasicDBObject("$in",getLoads(statistic.getLoadclasses()))); BasicDBObject resultFields=new BasicDBObject(); resultFields.put("timestamp",1); resultFields.put("floor",1); resultFields.put(Constants.map.get(statistic.getDrivingsituation()), 1); Query query=new BasicQuery(condition.toJson(),resultFields.toJson());
查看当前目录下所有目录的占用大小
du -h --max-depth=1查看文件大小 结果用MK这些单位来表示 ls -alh后台启动默认数据库路径, 记得改端口 不能有--forknohup ./mongod --port 27071 --dbpath data/db & 这句只适用于 自动安装的sudo service mongod stop
如果是配置不是 shard 使用命令会失败 ,因为不是 master/slave
关闭服务的方法
> use admin;switched to db admin> db.shutdownServer();
8
添加新用户的root和sudo权限
新建用户:
useradd username修改密码:
passwd username
根据提示重复输入两遍userpwd.
赋予sudo权限:
visudo
找到 root ALL=(ALL)ALL
在下面添加 username ALL=(ALL)ALL
赋予root权限,苏四日没作用
usermod -a -G root mary.lee 切换用户命令su gene
9 配置环境变量,将会非常简洁
vim /etc/profile
# 内容export MONGODB_HOME=/opt/mongodbexport PATH=$MONGODB_HOME/bin:$PATH# 使立即生效,在安装用户下(youknow)执行source /etc/profile10 分片的副本原则,然后启动
只改4个文件, 副本的都不变,除了路径和端口
此时原则是,第一个分片副本是
shard1 shard2 shard3 分别端口是22000 32000 42000numactl --interleave=all mongod --config /data/mongodb/shard2/mongo.confnumactl --interleave=all mongo localhost:32000numactl --interleave=all mongod --config /data/mongodb/shard3/mongo.confnumactl --interleave=all mongo localhost:42000
mongo localhost:22000
#使用admin数据库use admin#定义副本集配置config = { _id : "shard1",members : [{_id : 0, host : "localhost:22000" },{_id : 1, host : "localhost:32000" },{_id : 2, host : "localhost:42000" }]}#初始化副本集配置rs.initiate(config);#查看分区状态rs.status();
配置第二个副本集
#查看分区状态rs.status();numactl --interleave=all mongod --config /data/mongodb/shard12/mongo.conf
numactl --interleave=all mongo localhost:22001numactl --interleave=all mongod --config /data/mongodb/shard22/mongo.confnumactl --interleave=all mongo localhost:32001numactl --interleave=all mongod --config /data/mongodb/shard32/mongo.confnumactl --interleave=all mongo localhost:42001 use admin#定义副本集配置config = { _id : "shard2",members : [{_id : 3, host : "localhost:22001" },{_id : 4, host : "localhost:32001" },{_id : 5, host : "localhost:42001" }]}记得mongo.conf配置再 data/mongodb/shard1/下面
配置需要改3个地方才行
config = {
_id : "shard3",members : [{_id : 6, host : "localhost:22002" },{_id : 7, host : "localhost:32002" },{_id : 8, host : "localhost:42002" }]}
启动和查看config的 服务numactl --interleave=all mongod --config /data/mongodb/config/mongo.confnumactl --interleave=all mongo localhost:21000 启动和查看mongos的 服务numactl --interleave=all mongod --config /data/mongodb/mongos/mongo.confnumactl --interleave=all mongo localhost:20000
配置mongos失败了
systemLog:
destination: file logAppend: true path: /data/mongodb/mongos/log/mongos.logprocessManagement: fork: true# pidFilePath: /data/mongodb/mongos/log/mongos.pid# network interfacesnet: port: 20000 bindIp: localhost#监听的配置服务器,只能有1个或者3个 configs为配置服务器的副本集名字sharding: configDB: config/localhost:21000