安装和配置
官网获取当前稳定版本
4.0.3
配置文件示例
1 | systemLog: # 日志文件路径 |
启动mongo服务,这里第一次启动没加认证,创建用户后加上 --auth
启动用户认证
1 | cd /usr/local/mongodb |
停止 mongo
1 | cd /usr/local/mongodb |
mongo 的日志轮转,旧的日志会重命名成日志名加时间的文件。
1 | 系统命令方式 |
Mongo的使用
连接mongo
1 | 连接单节点 |
CUDR操作
创建 db 和 collection 并插入数据。
1 | 进入mongo终端 |
用户管理
内置角色说明 参考官档
数据库用户角色(Database User Roles):
- read:授予 User 只读数据的权限
- readWrite:授予 User 读写数据的权限
数据库管理角色(Database Administration Roles):
- dbAdmin:在当前 DB 中执行管理操作
- dbOwner:在当前 DB 中执行任意操作
- userAdmin:在当前 DB 中管理 User
备份和还原角色(Backup and Restoration Roles):
- backup
- restore
跨库角色(All-Database Roles):
- readAnyDatabase:授予在所有数据库上读取数据的权限
- readWriteAnyDatabase:授予在所有数据库上读写数据的权限
- userAdminAnyDatabase:授予在所有数据库上管理User的权限
- dbAdminAnyDatabase:授予管理所有数据库的权限
集群管理角色(Cluster Administration Roles):
- clusterAdmin:授予管理集群的最高权限
- clusterManager:授予管理和监控集群的权限,A user with this role can access the config and local databases, which are used in sharding and replication, respectively.
- clusterMonitor:授予监控集群的权限,对监控工具具有readonly的权限
- hostManager:管理 Server
超级用户角色
- root:提供对 readWriteAnyDatabase、dbAdminAnyDatabase、userAdminAnyDatabase、clusterAdmin、restore 和 backup 组合的操作和所有资源的访问。
操作示例
1 | 创建管理用户,对所有db有管理权限(按角色分配,userAdminAnyDatabase有所有库的userAdmin权限,也就是可以给其他用户授权) |
备份和恢复
mongodump备份,-h 指定主机地址,-d 指定 database,-c 指定 collection,-o 指定备份文件保存路径
1 | ./bin/mongodump -u an00 -p '111111' --authenticationDatabase ac -h 127.0.0.1:27017 -d ac -o dump/ |
恢复备份,–drop 表示先删除数据,然后恢复备份,慎用。-d 指定 database,最后跟上有 bson、json 备份数据的路径
(有副本集时指定PRIMARY节点)
1 | ./bin/mongorestore -u an00 -p '111111' --authenticationDatabase ac -h 127.0.0.1:27018 -d ac dump/ac/ |
副本集
若 mongo 提供给非本机连接,副本集的成员 IP 不应该设成 127.0.0.1,当客户端连接副本集时,使用的是副本集中配置的 IP,127.0.0.1 会导致客户端连接自己本地的端口
使用文章最开始的配置文件,打开注释
副本集成员配置可以用 rs.config()
查看,配置中的 members 是一个列表,可以包含多个成员。
副本集成员常用的配置选项如下,参考官档
_id 数值,0-255之间,副本集中每个成员的标识符,不可重复,设置后不可修改
host 字符串,通常是 IP 或 IP 加指定端口的形式,如:”192.168.1.2:28011”
priority 数值,选举 primary 时的优先级,值为0时该成员不会被选举成 primary 节点
hidden 布尔值,对客户端隐藏,通常给延时节点和仲裁节点配上
slaveDelay 数值,设置此成员落后 primary 的秒数,成员成为延时节点
arbiterOnly 布尔值,为 true 时,节点将不存数据,只用于选举时投票用
votes 数值,表示成员选举时的票数,通常是 0 或 1,当为 0 时不具备选举权(无选举权的成员必须priority=0),一个副本集最多有 7 个投票选举的成员,如果超过 7 个可以将部分成员此值设为 0
配置示例
1 | cfg = rs.conf() // 获取当前配置对象,修改成员ip,重设成员列表 |