CentOS 7 安装mongodb
in 服务器 with 0 comment 75 views

CentOS 7 安装mongodb

in 服务器 with 0 comment 75 views

迁移服务器,装mongodb~

安装步骤

1、下载
前往Mongodb下载页面,选择CentOS 7的tgz压缩包,复制地址。
mongodb下载页面

在服务器上用wget下载

cd /usr/local/src/
wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-4.4.1.tgz

2、解压并移动到/usr/local/mongodb

tar zxvf mongodb-linux-x86_64-rhel70-4.4.1.tgz
mv mongodb-linux-x86_64-rhel70-4.4.1 /usr/local/mongodb

3、创建存放数据文件夹db和日志文件夹logs

cd /usr/local/mongodb/
mkdir db
mkdir logs

4、创建配置文件

vim /usr/local/mongodb/bin/mongodb.conf

输入以下内容

dbpath=/usr/local/mongodb/db
logpath=/usr/local/mongodb/logs/mongodb.log
bind_ip=0.0.0.0
port=27017
fork=true

5、启动mongodb

/usr/local/mongodb/bin/mongod -f /usr/local/mongodb/bin/mongodb.conf

6、测试

/usr/local/mongodb/bin/mongo

输入show dbs,出现数据库信息就是安装成功了。
mongodb

开启访问验证

mongodb默认是不需要密码访问的,正式环境自然是要密码来保护了,首先创建管理员用户。

# 进入mongodb
/usr/local/mongodb/bin/mongo
# 切换到admin库
use admin
# 创建管理员账号,把user和pwd改为你自己的。
db.createUser({ user: "admin", pwd: "password", roles: [{ role: "userAdminAnyDatabase", db: "admin" }] })

创建完角色后,需要开启验证登录,打开配置文件/usr/local/mongodb/bin/mongodb.conf,在最下面加入一行

auth=true

进入mongodb执行命令db.shutdownServer()关闭mongodb,重新启动。启动后就需要密码才能访问了。

# 进入mongodb
/usr/local/mongodb/bin/mongo
# 切换到admin库
use admin
# 查询集合列表,但此时还未登录会提示登录
show collections
# 登录
db.auth("admin","password")
# 查询集合列表,可正常查询
show collections

也可以在连接mongodb的时候验证

/usr/local/mongodb/bin/mongo 127.0.0.1:27017/admin -u "admin" -p "password"

创建普通数据库用户

# 切换到admin库
use admin
# 登录管理员账号
db.auth("admin","password")
# 切换到想要创建用户的数据库,这里以test为例子
use test
# 创建test库的所有者用户
db.createUser({user: "username",pwd: "password",roles: [ { role: "dbOwner", db: "test" } ]})

这里试了下在admin数据库中创建test的用户,结果发现不能直接登录test,只能在admin库登录后再切换到test库查询。所以如果要创建某库的账号,则需要先切换到那个库。

查看当前数据库的用户以及权限列表

show users

关闭mongodb

开启验证后,db.shutdownServer()权限归hostManager角色所有,加一个吧

# 切换到admin库
use admin
# 登录管理员账号
db.auth("admin","password")
# 添加权限
db.grantRolesToUser( "admin" , [ { role: "hostManager", db: "admin" } ])
# 关闭mongodb
db.shutdownServer()

工具包

因为需要迁移数据库,到bin目录下发现没有mongodump工具,之前装的4.0版本是有附带这些工具的。查了下是新版本将工具分离出来了,需要单独下载。前往工具包下载页面,选择对应的版本,我这下载时的链接是这个:

https://fastdl.mongodb.org/tools/db/mongodb-database-tools-rhel70-x86_64-100.1.1.tgz

下载到服务器后解压移动到mongodb的bin目录下就行。

监控

mongodb工具包里自带了性能监控,需要有clusterMonitor权限才能执行,和上面一样给admin管理员加上吧。

db.grantRolesToUser( "admin" , [ { role: "clusterMonitor", db: "admin" } ])

加完后退出,运行监控

./mongostat -u "admin" -p "password" --authenticationDatabase=admin

内存占用问题

监控不看不知道,一看吓一跳,8G内存的服务器,mongodb占了3.5G内存。查了下官方文档,是mongodb默认的配置cacheSizeGB设置的,有这个么计算规则:

# 默认用这个规则
50% * (RAM - 1 GB) 
# 如果上面的计算出来小于256MB,则按256MB算
256 MB

所以我的服务器mongodb缓存大小:(总内存8GB - 1GB) * 50% = 3.5GB
如果想减小需要设置这个配置,可前往Mongodb官方配置文件说明查看详细介绍。似乎新版推荐用yml格式的,找时间试试看。
最后把配置文件改成了这样

systemLog:
    destination: file # 写入到指定文件而非系统日志
    logAppend: true # 重启后追加日志到原来的文件而非重新创建
    path: /usr/local/mongodb/logs/mongodb.log # 指定的日志文件路径
storage:
    dbPath: /usr/local/mongodb/db # 指定的数据文件存储路径
    journal:
        enabled: true # 开启更新持久化,若为false则每分钟才会做一次全量的持久化
    wiredTiger:
      engineConfig:
        cacheSizeGB: 1 # 配置最大缓存内存,若不配置mongodb会占用服务器近一般的内存
processManagement:
    fork: true # 作为进程运行
net:
    bindIp: 0.0.0.0 # 开放IP访问
    port: 27017 # 端口
security:
    authorization: enabled # 开启登录

最后

外部访问还要记得开放防火墙和安全组的端口。

Responses