分佈式專題-分佈式緩存技術之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架構師成長之路

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