迁移服务器,装mongodb~
安装步骤
1、下载
前往Mongodb下载页面,选择CentOS 7的tgz压缩包,复制地址。
在服务器上用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
/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 # 作为进程运行
pidFilePath: /var/run/mongo.pid # 配置PID文件位置
net:
bindIp: 0.0.0.0 # 开放IP访问
port: 27017 # 端口
security:
authorization: enabled # 开启登录
制作成系统服务
创建文件:
vim /usr/lib/systemd/system/mongodb.service
输入以下内容:
#表示基础信息
[Unit]
#描述
Description=Mongodb
#在哪个服务之后启动
After=syslog.target network.target remote-fs.target nss-lookup.target
#表示服务信息
[Service]
Type=forking
#注意:需要和mongodb.conf配置文件中的信息一致
PIDFile=/var/run/mongodb.pid
#启动服务的命令
ExecStart=/usr/local/mongodb/bin/mongod -f /usr/local/mongodb/bin/mongodb.conf
#重新加载命令
ExecReload=/bin/kill -s HUP $MAINPID
#停止服务的命令
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
#安装相关信息
[Install]
#以哪种方式启动
WantedBy=multi-user.target
#multi-user.target表明当系统以多用户方式(默认的运行级别)启动时,这个服务需要被自动运行。
保存后退出,执行systemctl daemon-reload
命令,使配置生效。生效后可使用下面几个命令来控制redis服务:
- 设置开机启动:
systemctl enable mongodb.service
- 检测是否开机自启:
systemctl is-enabled mongodb.service
- 取消开机自启:
systemctl disable mongodb.service
- 启动:
systemctl start mongodb.service
- 停止:
systemctl stop mongodb.service
- 重启:
systemctl restart mongodb.service
- 查看状态:
systemctl status mongodb.service
最后
外部访问还要记得开放防火墙和安全组的端口。