Mongodb 笔记采坑

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 <

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

你可能感兴趣的:(Mongodb 笔记采坑)