MongoDB配置及一般操作 - MongoDB从入门到删库

2019/04/19 22:42
阅读数 10

安装MongoDB

1、mongo文件说明

名称 说明
mongod 是数据库服务端,不能暴露再公共网络,主要实现服务器端数据库的数据处理、数据访问管理及其他后台管理。
mongo 客户端 shell 程序。
mongos 路由管理程序,用于分片集群环境下系统访问的路由管理。
mongostat 运行状态监控工具。
mongotop 监控工具,对读写数据进行统计。
mongodump 导出备份工具(二进制)。
mongorestore 备份数据恢复工具,跟mongodump一起使用(二进制)。
mongoexport 以JSON或CSV格式导出数据库数据。
mongoimport 备份数据恢复工具,跟mongoexport一起使用。
bsondump 将BSON文件转换为可阅读的格式。
mongofiles 把任何数据类型文件上传到MongoDB中。
mongooplog 以Oplog轮询方式,实现对远程服务器上的数据同步到本地磁盘。
mongoperf 测试磁盘IO性能的工具。

2、安装mongo

# 添加yum源
[root@gz-tencent ~]# cat > /etc/yum.repos.d/mongodb-org-4.0.repo << EOF
[mongodb-org-4.0]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.0/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-4.0.asc
EOF

# 安装mongo
[root@gz-tencent ~]# sudo yum install -y mongodb-org
[root@gz-tencent ~]# sudo service mongod start
[root@gz-tencent ~]# sudo chkconfig mongod on

# 连接shell
[root@gz-tencent ~]# mongo

3、docker运行mongo,so easy !

# 新建绑定目录
[root@gz-tencent]# mkdir -p ~/mongo/{mongod-1,mongos-1}/{etc,data}
# 运行mongod
docker run --name mongod-1 -p 27017:27017 -v /mongo/mongod-1/etc:/etc/mongo -v ~/mongo/mongod-1/data:/data/db -d mongo

MongoDB常用配置

如何使用配置文件运行mongodb?直接修改配置文件/etc/mongod.conf/etc/mongos.conf就可以了。

1、网络配置说明:

net: 
   port: localhost
   # 绑定可访问的IP地址,IP地址用","隔开,默认localhost
   bindIp: <string>
   # 是否绑定所有IP,默认 false
   bindIpAll: false
   # 最大并发连接数,默认65536
   maxIncomingConnections: 65536
   # 客户端请求内容验证,默认true
   wireObjectCheck: true
   compression:
      # 数据压缩,默认:snappy,还支持zlib。zlib压缩率高,但是慢。
      # snappy 比 zlib 更快,但文件相对要大 20% 到 100%。
      compressors: snappy
   serviceExecutor: <string>

2、存储配置说明

storage:
   # 实例存储数据的目录,不要随意修改,需要和安装时一直。
   dbPath: /data/db
   # 索引重建,Mongod重启会删除不完整索引,然后尝试重建不完整索引 
   indexBuildRetry: true
   # 数据库修复临时存储路径
   repairPath: <string>
   # 数据操作记录日志,只适用于Mongod
   journal:
      enabled: true
      # Mongod从内存想数据操作记录日志提交数据的最大间隔时间(ms)
      commitIntervalMs: <num>
   # 给每个数据库建立独立的子文件路径
   directoryPerDB: false
   # 数据刷新到数据库文件的间隔时间(秒)
   syncPeriodSecs: 60
   # 数据库存储引擎(wiredTiger/MMAPv1/inMemory)
   engine: wiredTiger
   # 相对于MMAPv1,wiredTiger可以压缩最大80%的空间
   wiredTiger:
      engineConfig:
         # 数据在内存中的缓存空间,默认:50%RAM-1G或256M
         cacheSizeGB: <number>
         # 压缩方式(none/snappy/zlib),压缩wiredTiger日志
         journalCompressor: snappy
         # Mongod是否将索引和集合文件分开存放
         directoryForIndexes: false
      collectionConfig:
         # 集合数据的压缩方式(none/snappy/zlib)
         blockCompressor: snappy
      indexConfig:
         # 启用索引数据的前缀压缩功能
         prefixCompression: true

3、审计日志说明

auditLog:
   # syslog:以json格式保存身份验证到syslog
   # console:以json格式输出信息到标准输出
   # file:以json格式输出信息到文件
   destination: <string>
   # JSON:输出json格式文件;BSON:输出bson二进制格式文件
   format: <string>
   path: <string>
   filter: <string>

审计filter的相关配置:

{
  atype: <String>,
  ts : { "$date": <timestamp> },
  local: { ip: <String>, port: <int> },
  remote: { ip: <String>, port: <int> },
  users : [ { user: <String>, db: <String> }, ... ],
  roles: [ { role: <String>, db: <String> }, ... ],
  param: <document>,
  result: <int>
}
字段 类型 记录描述
atype string 记录审计事件的行动,详细信息和结果。
ts document 文档包含”$date”日期键值对,其中是以时间戳格式的值
local document 文档包含ip键值对,及port键值对
remote document 文档包含与事件相关联的远程连接ip键值对和port键值对
users array 用户识别文档数组。由于MongoDB允许登录不同的用户数据库,该数组可以有一个以上的用户。每个文档包含用户名的user字段和该用户身份验证数据库的db字段。
roles array 指定给用户的角色的文档数组,每个文档包含角色名称的role字段和该角色关联的数据库的db字段。
param document 定义审计事件的具体细节, 审计事件操作、细节和结果
result integer 错误代码

查看示例:审计创建集合和删除掉集合

auditLog:
   destination: file
   format: BSON
   path: /var/lib/mongo/auditLog.bson
   filter: ‘{ atype : {$in: [“createCollection”,”dropCollection” ] } }’
展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部