暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Crv_Mongodb4.2.3_安装手册

原创 枫狐狸 2021-02-22
797

Crv_Mongodb4.2.3_安装手册

目录
一、Mongo副本集架构 4
二、系统目录配置 4
三、系统目录划分 5
四、安装依赖 5
五、创建用户 5
六、下载安装包,并解压安装包 5
七、创建存储目录及日志目录 6
八、创建配置文件 6
九:MongoDB设置为系统服务并且设置开机启动 6
1、Centos6.8环境配置 6
2、Centos7.6环境配置 7
脚本一建安装(集合第四,五,六,七,八,九步) 8
十:创建数据库用户(三台主机都执行) 8
十一、添加环境变量,方便shell操作 10
十二、副本集 10
十三:生成密钥文件 10
十四、Mongo数据库统一用户 11
附1、MongoDB主从仲裁(Replica-Set)安装配置 11
15.1 版本需求 11
15.2 主节点配置 11
15.3 从节点配置 11
15.4 仲裁节点配置 12
15.5 使用主节点创建集群 12
附2、备份与恢复 13

一、Mongo副本集架构

二、系统目录配置
配置及安装项 标准数据库服务器*3
Mongo虚拟服务器标准配置 1、主机CPU:8 内存:16G 硬盘:存储100G系统盘 IP:127.0.0.1
存储100G数据盘
2、从机CPU:8 内存:16G 硬盘:存储100G系统盘 IP:127.0.0.2
存储100G数据盘
3、仲裁CPU:2 内存:4G 硬盘:存储100G系统盘 IP:127.0.0.3
Mongo版本 4.2.3
Mongo端口(默认) 27017
Mongo软件安装路径 /app/mongodb/
Mongo数据库名 正式环境如:XXXX
SIT,UAT环境:XXXXSIT,XXXXUAT
Mongo服务名 服务名=数据库名
Mongo配置文件 /app/mongodb/conf/mongodb.conf
Mongo数据路径 /db/mongodata
Mongo日志路径 /log/mongolog
Mongo统一用户ID及组ID root 0 0

Mongo数据库用户权限标准 参照文档末尾的数据库统一用户权限
三、系统目录划分
系统安装参考《CRV-IT-Centos6.8安装标准及部署手册V1.0.docx》

四、安装依赖
yum install openssl openssl-devel libcurl -y
五、创建用户
groupadd -g 2300 mongo
useradd -g mongo -u 2300 mongo
六、下载安装包,并解压安装包
wget http://10.239.150.40/software/database/mongodb/mongodb-linux-x86_64-rhel62-4.2.3.GZ
tar -zxvf mongodb-linux-x86_64-rhel62-4.2.3.GZ
cp -a mongodb-linux-x86_64-rhel62-4.2.3 /app/mongodb
chown mongo:mongo /app/mongodb -R
七、创建存储目录及日志目录
mkdir -p /db/mongodata
mkdir -p /log/mongolog
touch /log/mongolog/mongodb.log
chown mongo:mongo /db/mongodata -R
chown mongo:mongo /log/mongolog -R
chown mongo:mongo /log/mongolog/mongodb.log
八、创建配置文件
Centos6.X
##创建mongodb配置文件
hostip=ifconfig -a|grep inet|grep -v 127.0.0.1|grep -v inet6|awk '{print $2}'|tr -d "addr:"
mkdir /app/mongodb/conf
echo “dbpath=/db/mongodata/ #数据库存放位置(之前创建的)
logpath=/log/mongolog/mongodb.log #数据库日志存放位置(之前创建的)
pidfilepath=/app/mongodb/mongodb.pid #PID文件位置
directoryperdb=true #启用数据库的目录
logappend=true #日志追加
#replSet=rs0 #副本集名称
bind_ip=”$hostip" #修改bind_ip=绑定公网IP(本机IP)
port=27017 #端口
fork=true #后台运行
oplogSize=10000 #日志大小
#journal=false #开启恢复日志 Centos7取消此项
#maxConns=5000 #最大连接数
#auth=true #初次配置先关了权限验证登陆模式
#keyFile=/app/mongodb/KeyFile.file #密钥文件位置
" > /app/mongodb/conf/mongodb.conf

chown mongo:mongo /app/mongodb/conf/mongodb.conf
九:MongoDB设置为系统服务并且设置开机启动
1、Centos6.8环境配置
保存并添加脚本执行权限:chmod +x /etc/rc.d/init.d/mongod;
#!/bin/sh

chkconfig: 2345 80 90

description: myservice …

### BEGIN INIT INFO

Short-Description: mongodb

Description: mongo db server

END INIT INFO

#注意这里的路径设置为你的mongod的位置
PROGRAM=/app/mongodb/bin/mongod
MONGOPID=ps -ef | grep 'mongod' | grep -v grep | awk '{print $2}'

test -x $PROGRAM || exit 0

case “1" in start) echo "Starting MongoDB server" #注意这里的路径设置为你的mongodb的配置文件的位置 su - mongo -c "PROGRAM --fork --quiet -f /app/mongodb/conf/mongodb.conf”
echo “Started MongoDB server”
;;
stop)
echo “Stopping MongoDB server”
if [ ! -z “MONGOPID"];thensumongoc"MONGOPID" ]; then su - mongo -c "PROGRAM --shutdown --dbpath=/db/mongodata/”
fi
echo “Stopped MongoDB server”
;;
status)
;;
*)
echo “Usage: mongodb {start|stop|status}”
exit 1
esac

exit 0
服务注册、启动
chkconfig --add mongod
chkconfig mongod on
现在使用service mongod [start|stop|restart|try-restart|reload|force-reload| status]来直接管理MongoDB服务;
开启服务
[root@centos init.d]# service mongod start
about to fork child process, waiting until server is ready for connections.
forked process: 6875
关闭服务
[root@centos init.d]# service mongod stop
2020-04-17T10:42:57.555+0800 I CONTROL [main] log file “/log/mongolog/mongodb.log” exists; moved to “/log/mongolog/mongodb.log.2020-04-17T02-42-57”.
killing process with pid: 6875
2、Centos7.6环境配置
保存并添加脚本执行权限:/usr/lib/systemd/system/mongodb.service
[root@centos ~]cat > /usr/lib/systemd/system/mongodb.service << EOF
[Unit]
Description=MongoDB Database Server
Documentation=https://docs.mongodb.org/manual
After=network.target

[Service]
Type=forking
User=mongo
Group=mongo
ExecStart=/app/mongodb/bin/mongod -f /app/mongodb/conf/mongodb.conf
ExecStop =/app/mongodb/bin/mongod --shutdown --dbpath=/db/mongodata

[Install]
WantedBy=multi-user.target
EOF

服务载入、开启、启动
systemctl daemon-reload
systemctl enable mongodb
systemctl start mongodb
脚本一建安装(集合第四,五,六,七,八,九步)
cd /app
wget http://10.239.150.40/software/database/mongodb/setup-mongo.sh
sh +x setup-mongo.sh
十:创建数据库用户(三台主机都执行)
1.启动mongo:
su - mongo -c “/app/mongodb/bin/mongod -f /app/mongodb/conf/mongodb.conf”
2.进入数据库管理命令界面:
mongo
3.选择数据库: (注意一定要先选择数据库在创建角色)
use admin
4.创建数据库管理角色
给角色设置为超级管理员
db.createUser({user:‘root’,pwd:‘123456’,roles:[{‘role’:‘root’,‘db’:‘admin’}]})
运行结果
[root@centos mongodb]# su - mongo
[mongo@centos ~]$ /app/mongodb/bin/mongod -f /app/mongodb/conf/mongodb.conf
about to fork child process, waiting until server is ready for connections.
forked process: 4037
child process started successfully, parent exiting
[mongo@centos ~]$ ps -ef|grep mongo
root 4006 2464 0 15:27 pts/0 00:00:00 su - mongo
mongo 4007 4006 0 15:27 pts/0 00:00:00 -bash
mongo 4037 1 12 15:27 ? 00:00:00 /app/mongodb/bin/mongod -f /app/mongodb/conf/mongodb.conf
mongo 4067 4007 0 15:27 pts/0 00:00:00 ps -ef
mongo 4068 4007 0 15:27 pts/0 00:00:00 grep mongo
[mongo@centos ~]$ mongo
MongoDB shell version v4.2.3
connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb
Implicit session: session { “id” : UUID(“1c3156e7-a31b-4a23-8ee7-96755e5ffc2c”) }
MongoDB server version: 4.2.3
Welcome to the MongoDB shell.
For interactive help, type “help”.
For more comprehensive documentation, see
http://docs.mongodb.org/
Questions? Try the support group
http://groups.google.com/group/mongodb-user
Server has startup warnings:
2020-07-06T15:27:20.316+0800 I STORAGE [initandlisten]
2020-07-06T15:27:20.316+0800 I STORAGE [initandlisten] ** WARNING: Using the XFS filesystem is strongly recommended with the WiredTiger storage engine
2020-07-06T15:27:20.316+0800 I STORAGE [initandlisten] ** See http://dochub.mongodb.org/core/prodnotes-filesystem
2020-07-06T15:27:21.035+0800 I CONTROL [initandlisten]
2020-07-06T15:27:21.035+0800 I CONTROL [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is ‘always’.
2020-07-06T15:27:21.035+0800 I CONTROL [initandlisten] ** We suggest setting it to ‘never’
2020-07-06T15:27:21.035+0800 I CONTROL [initandlisten]
2020-07-06T15:27:21.035+0800 I CONTROL [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is ‘always’.
2020-07-06T15:27:21.035+0800 I CONTROL [initandlisten] ** We suggest setting it to ‘never’
2020-07-06T15:27:21.035+0800 I CONTROL [initandlisten]

Enable MongoDB’s free cloud-based monitoring service, which will then receive and display
metrics about your deployment (disk utilization, CPU, operation statistics, etc).

The monitoring data will be available on a MongoDB website with a unique URL accessible to you
and anyone you share the URL with. MongoDB may use this information to make product
improvements and to suggest MongoDB products and deployment options to you.

To enable free monitoring, run the following command: db.enableFreeMonitoring()
To permanently disable this reminder, run the following command: db.disableFreeMonitoring()

use admin
switched to db admin

db.createUser({user:‘root’,pwd:‘123456’,roles:[{‘role’:‘root’,‘db’:‘admin’}]})db.createUser({user:‘root’,pwd:‘123456’,roles:[{‘role’:‘root’,‘db’:‘admin’}]})
Successfully added user: {
“user” : “root”,
“roles” : [
{
“role” : “root”,
“db” : “admin”
}
]
}

补充:MongoDB基本的角色
1.数据库用户角色:read、readWrite;
2.数据库管理角色:dbAdmin、dbOwner、userAdmin;
3.集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager;
4.备份恢复角色:backup、restore;
5.所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
6.超级用户角色:root
退出服务,谨慎使用kill直接去杀掉mongodb进程,可以使用db.shutdownServer()关闭.
使用权限方式启动MongoDB,在配置文件中添加:auth=true , 然后启动:mongod -f /app/mongodb/conf/mongodb.conf
进入mongo shell,使用admin数据库use admin并进行验证db.auth(‘root’,‘123456’),验证成功返回1失败返回0;如果不验证或验证失败,是做不了任何操作的
十一、添加环境变量,方便shell操作
1、在/etc/profile文件中,添加 export PATH=/app/mongodb/bin:$PATH;
2、执行source /etc/profile,使系统环境变量立即生效
十二、副本集
三个节点都完成mongo安装后,在主节点上执行
[root@centos ~]# mongo 127.0.0.1:27017

use adminuse admin
switched to db admin

cfg=({_id:“rsXXX”,“members”:[
{_id : 1, host : “127.0.0.1:27017”, priority: 10},
{_id : 2, host : “127.0.0.2:27017”, priority: 5},
{_id : 3, host : “127.0.0.3:27017”, priority: 0, “arbiterOnly”: true},]});
rs.initiate(cfg)
exit
十三:生成密钥文件
#在一台机上执行,然后复制到另外两台主机上
openssl rand -base64 756 > /app/mongodb/KeyFile.file
chmod 400 /app/mongodb/KeyFile.file
chown mongo:mongo /app/mongodb/KeyFile.file
复制KeyFile.file到另外两台主机的相同位置
并在mongodb.conf文件中插入
keyFile=/db/mongodata/KeyFile.file
auth=true
完成后衙启mongod服务
十四、Mongo数据库统一用户
Mongo数据库统一用户
用户名 用户类型 备注 角色权限 OS层权限 数据库权限 涉及范围
root DBA   admin 无 ALL  
XXXX 业务、应用、传单用户 XXXX为业务名 dbOwner 无 自身业务库 业务数据修改,提取,删除
附1、MongoDB主从仲裁(Replica-Set)安装配置
15.1 版本需求
mongodb-linux-x86_64-rhel62-4.2.3.GZ
15.2 主节点配置

  1. tar -zxvf ./mongodb-linux-x86_64-rhel62-4.2.3.GZ -C /app/software/
  2. mv /app/mongodb-linux-x86_64-rhel62-4.2.3 /app/software/mongo
  3. touch /app/mongodb/master.conf && vim /app/mongodb/conf/mongodb.conf
    dbpath=/data/mongodb/master
    logpath=/log/mongolog/mongodb.log
    pidfilepath= /app/mongodb/mongodb.pid
    directoryperdb=true
    logappend=true
    replSet=hstr
    bind_ip=10.204.0.23 #本机IP
    port=27017
    oplogSize=10000
    fork=true
  4. 注意替换IP、端口、路径
  5. /app/mongodb/bin/mongod -f /app/mongodb/conf/mongodb.conf

15.3 从节点配置

  1. tar -zxvf ./ mongodb-linux-x86_64-rhel62-4.2.3.GZ -C /app/software/
  2. mv /app/mongodb-linux-x86_64-rhel62-4.2.3 /app/software/mongo
  3. touch /app/mongodb/slave.conf && vim /app/mongodb/conf/mongodb.conf
    dbpath=/data/mongodb/slave
    logpath=/log/mongolog/mongodb.log
    pidfilepath= /app/mongodb/mongodb.pid
    directoryperdb=true
    logappend=true
    replSet=hstr
    bind_ip=10.204.0.27
    port=27017
    oplogSize=10000
    fork=true
  4. 注意替换IP、端口、路径
  5. /app/mongodb/bin/mongod -f /app/mongodb/conf/mongodb.conf

15.4 仲裁节点配置

  1. tar -zxvf ./ mongodb-linux-x86_64-rhel62-4.2.3.GZ -C /app/software/
  2. mv /app/mongodb-linux-x86_64-rhel62-4.2.3 /app/software/mongo
  3. touch /app/mongodb/arbiter.conf && vim /app/mongodb/conf/mongodb.conf
    dbpath=/data/mongodb/arbiter
    logpath=/log/mongolog/mongodb.log
    pidfilepath= /app/mongodb/mongodb.pid
    directoryperdb=true
    logappend=true
    replSet=hstr
    bind_ip=10.204.0.28
    port=27017
    oplogSize=10000
    fork=true
  4. 注意替换IP、端口、路径
  5. /app/mongodb/bin/mongod -f /app/mongodb/conf/mongodb.conf
    15.5 使用主节点创建集群
  6. /app/software/mongo/bin/mongo 10.204.0.23:27017
  7. use admin
  8. cfg=( {_id : “hstr”,members : [
    {_id : 1, host : “10.204.0.23:27017”, priority: 10},
    {_id : 2, host : “10.204.0.27:27017”, priority: 5},
    {_id : 3, host : “10.204.0.28:27017”, priority: 0, “arbiterOnly”: true}
    ]
    } );
  9. rs.initiate(cfg)
  10. 查看集群状态:rs.status()

附2、备份与恢复
mongodump -h IP --port 端口 -u 用户 -p 密码 -d 数据库名 -o 备份路径
mongodump -h 10.204.0.23 --port 27017 -u test -p 123456 -d testdb -o /bak/

mongorestore -h IP --port 端口 -u 用户 -p 密码 -d 数据库名 --drop 备份路径
mongorestore -h 10.204.0.23 --port 27017 -u test -p 123456 -d testdb --drop /bak/test
mongorestore -h 10.204.0.23 --port 27017 --drop /bak/test 全库恢复

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论