Mongodb4.2.3 主从安装

一、Mongo副本集架构

二、系统目录配置

配置及安装项标准数据库服务器*3
Mongo虚拟服务器标准配置1、主机CPU:8   内存:16G  硬盘:存储100G系统盘  IP:192.168.0.1
  存储100G数据盘
2、从机CPU:8   内存:16G  硬盘:存储100G系统盘  IP:192.168.0.2
  存储100G数据盘
3、仲裁CPU:2   内存:4G  硬盘:存储100G系统盘  IP:192.168.0.3
Mongo版本4.2.3 
Mongo端口(默认)27017
Mongo软件安装路径/app/mongodb/
Mongo服务名服务名=数据库名
Mongo配置文件/app/mongodb/conf/mongodb.conf
Mongo数据路径/db/mongodata
Mongo日志路径/log/mongolog

三、系统目录划分

四、安装依赖

yum install openssl openssl-devel libcurl -y

五、创建用户

groupadd -g 2300 mongo
useradd -g mongo -u 2300 mongo 

六、下载安装包,并解压安装包

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 192.168.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


#IPV6 配置
#bind_ip=xxx.xxx.xxx.xxx               #注释绑定ip
bind_ip_all=true                       #绑定本地所有IP
ipv6=true                              #启用IPV6


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" ]; 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/mongod.service

[root@centos ~]cat > /usr/lib/systemd/system/mongod.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 mongod

systemctl start mongod

十:创建数据库用户(三台主机都执行)

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://192.168.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 192.168.0.1:27017
> use adminuse admin
switched to db admin
>
cfg=({_id:"rsXXX","members":[
{_id : 1, host : "192.168.0.1:27017", priority: 10},
{_id : 2, host : "192.168.0.2:27017", priority: 5},
{_id : 3, host : "192.168.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到另外两台主机的相同位置(Key文件权限一样,400)

scp /app/mongodb/KeyFile.file 192.168.0.2:/app/mongodb/KeyFile.file
scp /app/mongodb/KeyFile.file 192.168.0.3:/app/mongodb/KeyFile.file

并在mongodb.conf文件中插入

keyFile=/db/mongodata/KeyFile.file

auth=true

完成后重启mongod服务

附1、MongoDB主从仲裁(Replica-Set)安装配置

 版本需求

mongodb-linux-x86_64-rhel62-4.2.3.GZ

 主节点配置

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=192.168.0.1    #本机IP
port=27017
oplogSize=10000
fork=true


#IPV6配置
#bind_ip=xxx.xxx.xxx.xxx               #注释绑定ip
bind_ip_all=true                       #绑定本地所有IP
ipv6=true                              #启用IPV6

4. 注意替换IP、端口、路径

5. 启动数据库

/app/mongodb/bin/mongod -f /app/mongodb/conf/mongodb.conf

 从节点配置

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=192.168.0.2       #绑定IP
port=27017
oplogSize=10000
fork=true

4. 注意替换IP、端口、路径

5.启动数据库

/app/mongodb/bin/mongod -f /app/mongodb/conf/mongodb.conf

 仲裁节点配置

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=192.168.0.3       #绑定IP
port=27017
oplogSize=10000
fork=true

4. 注意替换IP、端口、路径

5. 启动数据库

/app/mongodb/bin/mongod -f /app/mongodb/conf/mongodb.conf

 使用主节点创建集群

1.登录主库

/app/software/mongo/bin/mongo 192.168.0.1:27017

2.进入admin库

use admin

3. 配置集群

cfg=( {_id : "hstr",members : [
{_id : 1, host : "192.168.0.1:27017", priority: 10},
{_id : 2, host : "192.168.0.2:27017", priority: 5},
{_id : 3, host : "192.168.0.3:27017", priority: 0, "arbiterOnly": true}
]
} );

4. 启用集群

rs.initiate(cfg)

5. 查看集群状态

rs.status()

附2、备份与恢复

mongodump -h IP --port 端口 -u 用户 -p 密码 -d 数据库名    -o 备份路径

mongodump -h 192.168.0.1 --port 27017 -u root -p 123456 -d test -o /bak/

mongorestore -h IP --port 端口 -u 用户 -p 密码 -d 数据库名   --drop 备份路径

mongorestore -h 192.168.0.1  --port 27017 -u root  -p 123456 -d test   --drop /bak/test

mongorestore -h 192.168.0.1  --port 27017 --drop /bak/test   全库恢复

参考:MongoDB 备份(mongodump)与恢复(mongorestore) | 菜鸟教程

附3、IPV6登录 

 查看是否支持IPv6
netstat -nlp|grep 27017 

登录mongo

./mongo --ipv6 [ipv6地址]:27017
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

楚枫默寒

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值