博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Mongodb 笔记采坑
阅读量:5219 次
发布时间:2019-06-14

本文共 6847 字,大约阅读时间需要 22 分钟。

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 tt

ln -s mongodb-linux-x86_64-rhel70-4.0.10 mongodb

添加用户修改密码的方法
1、在root下添加用户用 adduser 命令
# 添加用户 admin
[root@flm] #sudo adduser admin

2、添加用户登录密码

# 为用户 admin 修改密码
[root@flm] #sudo passwd admin
然后输入密码就可以了
分类: Linux

覆盖文件的方法,多行的数据

cat > /root/test.txt <<EOF

cat >/data/mongodb/config/mongo.conf <<"EOF"

dbpath=/data/mongodb/config/data/
logpath=/data/mongodb/config/log/config.log
logappend=true
port=21000
fork=true
rest=false
httpinterface=true
configsvr=true
replSet=cfgReplSet
EOF

竟然 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.conf

4.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/data
logpath=/data/mongodb/shard1/log/shard1.log
logappend=true
port=22001
fork=true
replSet=shard1ReplSet
shardsvr=true
journal=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

 

后台启动默认数据库路径, 记得改端口 不能有--fork
nohup ./mongod --port 27071 --dbpath data/db &

这句只适用于 自动安装的
sudo service mongod stop

 

如果是配置不是 shard 使用命令会失败 ,因为不是 master/slave

关闭服务的方法

> use admin;
switched to db admin
> db.shutdownServer();

 

添加新用户的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/mongodb
export PATH=$MONGODB_HOME/bin:$PATH
# 使立即生效,在安装用户下(youknow)执行
source /etc/profile

10  分片的副本原则,然后启动 

 

只改4个文件, 副本的都不变,除了路径和端口

此时原则是,第一个分片副本是

shard1 shard2 shard3 分别端口是22000 32000 42000
numactl --interleave=all mongod --config /data/mongodb/shard2/mongo.conf
numactl --interleave=all mongo localhost:32000
numactl --interleave=all mongod --config /data/mongodb/shard3/mongo.conf
numactl --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:22001
numactl --interleave=all mongod --config /data/mongodb/shard22/mongo.conf
numactl --interleave=all mongo localhost:32001
numactl --interleave=all mongod --config /data/mongodb/shard32/mongo.conf
numactl --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.conf
numactl --interleave=all mongo localhost:21000

启动和查看mongos的 服务
numactl --interleave=all mongod --config /data/mongodb/mongos/mongo.conf
numactl --interleave=all mongo localhost:20000

 

配置mongos失败了

 

systemLog:

destination: file
logAppend: true
path: /data/mongodb/mongos/log/mongos.log
processManagement:
fork: true
# pidFilePath: /data/mongodb/mongos/log/mongos.pid
# network interfaces
net:
port: 20000
bindIp: localhost
#监听的配置服务器,只能有1个或者3个 configs为配置服务器的副本集名字
sharding:
configDB: config/localhost:21000

 

PHP MongoDB Unrecognized option: sharding.configDB 解决方案

转载于:https://www.cnblogs.com/genestart/p/11195579.html

你可能感兴趣的文章
实用的VMware虚拟机使用技巧十一例
查看>>
监控工具之---Prometheus 安装详解(三)
查看>>
Azure Iaas基础之---创建虚拟机
查看>>
不错的MVC文章
查看>>
网络管理相关函数
查看>>
IOS Google语音识别更新啦!!!
查看>>
20190422 T-SQL 触发器
查看>>
[置顶] Linux终端中使用上一命令减少键盘输入
查看>>
poj1422_有向图最小路径覆盖数
查看>>
BootScrap
查看>>
[大牛翻译系列]Hadoop(16)MapReduce 性能调优:优化数据序列化
查看>>
WEB_点击一百万次
查看>>
CodeForces - 878A Short Program(位运算)
查看>>
路冉的JavaScript学习笔记-2015年1月23日
查看>>
Mysql出现(10061)错误提示的暴力解决办法
查看>>
2018-2019-2 网络对抗技术 20165202 Exp3 免杀原理与实践
查看>>
NPM慢怎么办 - nrm切换资源镜像
查看>>
CoreData 从入门到精通(四)并发操作
查看>>
Swift - UIView的常用属性和常用方法总结
查看>>
Swift - 异步加载各网站的favicon图标,并在单元格中显示
查看>>