MongoDB单机和集群安装
下载
下载地址:https://www.mongodb.com/download-center/community
选择合适的版本和系统型号,我这里下载的是社区版tgz的
下载完成后上传到服务器解压即可.
linux单机安装
- 找到想安装的位置解压tgz
我的安装目录是在/opt下,执行
tar -zxvf 安装目录
最终结果是/opt/mongodb/
- 设置环境变量
在/ect/profile中加入如下环境变量后刷新一下(source /etc/profile)使配置生效
- 设置数据存储,日志存储以及配置文件地址
在/opt/mongodb目录下创建
data,logs,etc目录
在etc下创建配置文件mongodb.conf
内容如下:
配置内容解释回头看我另一个博文mongodb配置文件解析 或者 MongoDB配置文件信息
dbpath=/opt/mongodb/data
logpath=/opt/mongodb/logs/mongodb.log
logappend=true
#bind_ip=ip
port=27017
fork=true
auth=true
#master=true
#slave=true
#source=ip:port
- 启动db
mongod --config /opt/mongodb/etc/mongodb.conf
- 设置账号密码
通过客户端进入db
mongo --port 27017
新增root账户
db的roles主要有以下几种:
role | 含义 |
---|---|
read | 允许用户读取指定数据库 |
readWrite | 允许用户读写指定数据库 |
dbAdmin | 允许用户在指定的数据库中执行管理函数,比如说增删改查还有索引,统计,访问system.profile. |
userAdmin | 允许用户向system.users集合写数据,可以在指定数据库中管理用户 |
clusterAdmin | 只在admin数据库中可用,可以管理所有分片,复制集相关函数 |
readAnyDatabase | 只在admin数据库中可用,所有数据库读权限 |
readWriteAnyDatabase | 只在admin数据库中可用,所有数据库读写权限 |
userAdminAnyDatabase | 只在admin数据库中可用,所有数据库userAdmin权限 |
dbAdminAnyDatabase | 只在admin数据库中可用,所有数据库dbAdmin权限 |
root | 只在admin数据库中可用,超级权限 |
use admin;
db.createUser({user:"root",pwd:"root",roles:[{role:"userAdminAnyDatabase",db:"admin"}]});
创建完成后重启一下,可以kill掉这个进程并删除/opt/mongodb/data下的.lock文件
6. 访问db
重新启动db以后继续用mongo --port 27017 进入db
进入db后需要进行授权认证才能进行其他操作
use admin;
db.auth("root","root");
show users;
然后即可进行其他的增删改查操作了.
7. 退出db
kill掉进程即可
linux集群安装
这里主要是自己以前操作过的笔记,等有时间会再搭建一次把内容截图补充完整!
主从集群(不推荐)
两个角色:
master slave
安装过程和上边单机的一样,只不过配置mongodb.conf不同而已
master节点配置
dbpath=/opt/mongodb/data
logpath=/opt/mongodb/logs/mongodb.log
logappend=true
bind_ip=192.168.0.201
port=27017
fork=true
auth=true
master=true
source=192.168.0.202:27017
slave节点配置
dbpath=/opt/mongodb/data
logpath=/opt/mongodb/logs/mongodb.log
logappend=true
bind_ip=192.168.0.201
port=27017
fork=true
auth=true
slave=true
source=192.168.0.201:27017
副本集集群(选举)
三个角色:
master 主节点
slave 从节点,默认不可写,不可读,就是备份
arbiter仲裁节点,不存任何数据,决定谁是主,这个节点挂了,对其他无影响,但是没有了选举主节点的功能,后续会导致整个集群不可用.
比上边多了一个配置
dbpath=/opt/mongodb/data
logpath=/opt/mongodb/logs/mongodb.log
logappend=true
bind_ip=192.168.0.201
port=27017
fork=true
auth=true
replset=nodeName
#允许切片
shardsvr=true
rs.help();
rs.initiate({_id:“nodeName”,members:[{_id:0,host:‘192.168.0.201:27017’,priortity:3},{_id:1,host:‘192.168.0.202:27017’,priortity:2},{_id:2,host:‘192.168.0.203:27017’,arbiterOnly:true}]});
members的参数:
id:序号
host:节点ip:port
priortity:优先级,优先级越大会被选举被主
arbiterOnly:是否是仲裁节点,true/false
rs.status();
去中心化(一主多从)
rs.initiate({_id:“nodeName”,members:[{_id:0,host:‘192.168.0.201:27017’},{_id:1,host:‘192.168.0.202:27017’},{_id:2,host:‘192.168.0.203:27017’}]});
混合模式-大数据模式(路由-配置-副本集)
集群>副本集>切片>块
配置config服务器:
dbpath=/opt/mongodb/data
logpath=/opt/mongodb/logs/mongodb.log
logappend=true
bind_ip=192.168.0.201
port=27017
fork=true
auth=true
replset=configs
#激活配置服务器
configsvr=true
rs.initiate({_id:“configs”,members:[{_id:0,host:‘192.168.0.201:27017’},{_id:1,host:‘192.168.0.202:27017’},{_id:2,host:‘192.168.0.203:27017’}]});
配置路由服务器(没数据,有log即可):
#指定配置服务器副本集
configdb=configs/192.168.0.201:27017,192.168.0.202:27017,192.168.0.203:27017
logpath=/opt/mongodb/logs/mongodb.log
logappend=true
bind_ip=192.168.0.201
port=27017
fork=true
auth=true
replset=routes
mongos
#添加切片
sh.addShard(“副本集名称/ip:port”);
#激活切片
sh.enableSharding(“dbName”);
#分块
sh.shardCollection(“dbName.collectionName”,{name:“shardKey”});
shardKey有很多种,下边常用的两种:
ranged 自定义数据区间
hashed hash区间
插入点数据可以检查是否配置有误
db.
#查看分块详情,区间大小ns($minKey:1 负无穷大,$maxKey:1 正无穷大)
db.chunks.find();