分布式专题-分布式缓存技术之MongoDB05-MongoDB高可用

前言

前面的章节,关于分布式缓存技术,我们分析了《分布式缓存技术之Redis的使用以及原理》、在这一节,来说说MongoDB高可用方案。

关于MongoDB,一共六小节内容,分别是:

MongoDB在4.0升级改造以后,支持事务,且对于集群策略进行优化…

笔者使用的mongodb版本是:
在这里插入图片描述
更多细节,就在本节与大家一起学习交流!

MongoDB用户管理

在前面的章节,细心的读者可能会注意到,在所有连接MongoDB的操作中,并没有涉及到用户名密码的权限校验,这样对于一个数据库而言怎么能行呢?接下来看看MongoDB的用户管理~

添加用户

为testdb 添加 tom 用户

use testdb

db.createUser({user:"tom",pwd:"123",roles:[{role:"dbAdmin",db:"testdb"}]})

在这里插入图片描述
具体角色有什么呢?通过命令查看一下:
在这里插入图片描述

角色 权限说明
read 允许用户读取指定数据库
readWrite 允许用户读写指定数据库
dbAdmin 允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问 system.profile
userAdmin 允许用户向 system.users 集合写入,可以找指定数据库里创建、删除和管理用户
clusterAdmin 只在 admin 数据库中可用,赋予用户所有分片和复制集相关函数的管理权限
readAnyDatabase 只在 admin 数据库中可用,赋予用户所有数据库的读权限
readWriteAnyDatabase 只在 admin 数据库中可用,赋予用户所有数据库的读写权限
userAdminAnyDatabase 只在 admin 数据库中可用,赋予用户所有数据库的 userAdmin 权限
dbAdminAnyDatabase 只在 admin 数据库中可用,赋予用户所有数据库的 dbAdmin 权限
root 只在 admin 数据库中可用。超级账号,超级权限

查看所有用户

db.system.users.find()

和用户管理相关的操作基本都要在 admin 数据库下运行,要先 use admin; 如果在某个单一的数据库下,那只能对当前数据库的权限进行操作;

1.3、用户删除操作

db.system.users.remove({user:"tom"});

1.4 查看当前用户权限

db.runCommand({usersInfo:"tom",showPrivileges:true})

1.5 修改密码

use testdb

db.changeUserPassword("tom", "123456")

1.6、启用用户

db.auth("tom","123")

1.7、安全检查 --auth

非testdb 是不能操作数据库的,启用自己的用户才能访问

非admin 数据库的用户不能使用数据库命令,admin 数据库中的数据经过认证为管理员用户

MongoDB高可用方案

详解 RouteServer(路由服务器)、ConfigServer(配置服务器)、 Replica Set(副本集)、Shard(切片)、Chunk(分块)MongDB 启动与关闭

命令行启动

$ ./mongod --fork --dbpath=/data/program/mongodb/data

配置文件启动

$ ./mongod -f mongodb.cfg

mongoDB 基本配置/data/program/mongodb.cfg

dbpath=/data/program/mongodb/data

logpath=/data/program/mongodb/logs/mongodb.log

logappend=true

fork=true

bind_ip=192.168.200.111

port=27017

环境变量配置

export PATH=/data/program/mongodb/bin:$PATH

Mongodb 的三种集群方式的搭建:Master-Slaver/Replica Set / Sharding。

MongoDB主从搭建

这个是最简答的集群搭建,不过准确说也不能算是集群,只能说是主备。并且官方已经不推荐这种方式,所以在这里只是简单的介绍下吧,搭建方式也相对简单。

首先准备三台机器,安装好mongodb并配置好环境变量:
linux1:192.168.200.111 (mongodb:27017)- master
linux2:192.168.200.112 (mongodb:27017)- slave
linux3:192.168.200.113 (mongodb:27017)- slave

然后创建data与log文件夹,存放启动日志

在这里插入图片描述
主机配置
新增master配置文件

/data/program/mongodb/master-slave/master/mongodb.cfg

# 数据存储路径
dbpath=/data/program/mongodb/master-slave/master/data

# 日志存储路径
logpath=/data/program/mongodb/master-slave/master/logs/mongodb.log

logappend=true

fork=true

bind_ip=192.168.200.111

port=27001

master=true

source=192.168.200.111:27002

从机配置
这里linux2与linux3的配置相同
同样地,新增slave配置文件

/data/program/mongodb/master-slave/slave/mongodb.cfg

dbpath=/data/program/mongodb/master-slave/slave/data

logpath=/data/program/mongodb/master-slave/slave/logs/mongodb.log

logappend=true

fork=true

bind_ip=192.168.200.112

port=27002

slave=true

source=192.168.200.112:27001

启动服务

cd /data/program/mongodb/master-slave/master/

mongod --config mongodb.cfg #主节点 

cd /data/program/mongodb/master-slave/slave/

mongod --config mongodb.cfg #从节点

连接测试

#客户端连接主节点
mongo	--host 192.168.200.111 --port 27001

#客户端从节点
mongo	--host 192.168.200.112 --port 27002
mongo	--host 192.168.200.113 --port 27003

基本上只要在主节点和备节点上分别执行这两条命令,Master-Slaver 就算搭建完成了。我没有试过主节点挂掉后备节点是否能变成主节点,这里也不推荐了。

后记

更多架构知识,欢迎关注本套Java系列文章,地址导航Java架构师成长之路

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章