Centos7 使用Yum源安裝MongoDB4.2 補:單機副本集搭建以支持事務

Centos7 使用Yum源安裝MongoDB4.2版本數據庫

前置:修改yum安裝源對mongodb的支持

可查看官方文檔:

本文也是參照官方文檔搭建的

https://docs.mongodb.com/manual/tutorial/install-mongodb-on-red-hat/#configure-the-package-management-system-yum

正式操作

(1)修改yum安裝mongoDB的repo源文件

vi /etc/yum.repos.d/mongodb-org-4.2.repo

在文件中添加如下信息

[mongodb-org-4.2]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.2/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-4.2.asc

(2)安裝並啓動mongo

yum install mongodb-org -y

此操作需要一定時間 ,當執行完畢後

使用如下命令進入客戶端

mongo

禁用mongo自動升級,修改/etc/yum.conf文件

vim /etc/yum.conf
#在文件中加入下方配置
exclude=mongodb-org,mongodb-org-server,mongodb-org-shell,mongodb-org-mongos,mongodb-org-tools
保存退出

exmple :操作mongo的命令如下 (開,關,從啓 ,查看狀態)

啓動:systemctl start mongod
重啓:systemctl restart mongod
關閉:systemctl stop mongod
查看運行狀態:systemctl status mongod

執行 systemctl start mongod 命令啓動Mongo

(3)查看mongo是否開啓

systemctl status mongod

#出現如下信息則說明mongo已開啓
● mongod.service - MongoDB Database Server
   Loaded: loaded (/usr/lib/systemd/system/mongod.service; enabled; vendor preset: disabled)
   Active: active (running) since Fri 2020-01-17 19:37:33 CST; 5s ago
     Docs: https://docs.mongodb.org/manual
  Process: 18740 ExecStart=/usr/bin/mongod $OPTIONS (code=exited, status=0/SUCCESS)
  Process: 18738 ExecStartPre=/usr/bin/chmod 0755 /var/run/mongodb (code=exited, status=0/SUCCESS)
  Process: 18734 ExecStartPre=/usr/bin/chown mongod:mongod /var/run/mongodb (code=exited, status=0/SUCCESS)
  Process: 18733 ExecStartPre=/usr/bin/mkdir -p /var/run/mongodb (code=exited, status=0/SUCCESS)
 Main PID: 18743 (mongod)
   CGroup: /system.slice/mongod.service
           └─18743 /usr/bin/mongod -f /etc/mongod.conf

查看mongo日誌

more /var/log/mongodb/mongod.log

(4)啓動可能遇到的問題

啓動後出現或日誌中出現 錯誤代碼 code=14 則說明之前服務器上安裝過Mongo 但是數據並沒有完全清除

解決命令: (清除之前文件並從啓)

cd /tmp
rm -rf mongodb-27017.sock
systemctl restart mongod

(5)開啓mongo庫遠程訪問權限

首先關閉mongo庫 (之前啓動時未修改配置文件)

systemctl stop mongod

進入mongo配置文件

cd /etc/
ll
vim mongod.conf

如沒有vim命令可用以下命令進行安裝

sudo yum install -y vim

修改文件如下位置 (將127.0.0.1改爲0.0.0.0)

# network interfaces
net:
  port: 27017
  bindIp: 127.0.0.1  # Enter 0.0.0.0,:: to bind to all IPv4 and IPv6 addresses or, alternatively, use the net.bindIpAll setting.

保存後退出

(6)防火牆設置

cenos7 最好使用firewall

如未安裝則用以下命令進行安裝

yum install firewalld firewalld-config

查看防火牆是否開啓

 firewall-cmd --state

如沒有開啓且確定不需要開啓則略過下面

查看開啓的防火牆端口列表

firewall-cmd --permanent --list-port

如沒有27017端口則將其開啓

firewall-cmd --zone=public --add-port=27017/tcp --permanent
firewall-cmd --zone=public --add-port=27017/udp --permanent

重啓防火牆

firewall-cmd --reload

如果是雲服務器則需要在在安全組配置中加入27017端口配置

(7)從新啓動mongo並連接

systemctl start mongod

查看是否開啓

systemctl status mongod
netstat -untlp

使用navicat12 或者studio3T 連接測試

至此 無密碼版Mongodb數據庫搭建完畢

------------------------------------------------------Mongodb 配置密碼----------------------------------------------------------------------

(8)補:mongodb配置密碼(超級用戶,普通用戶)

(1)進入mongo庫
[root@alibyleilei /]# mongo
#或者
[root@alibyleilei /]# mongo --port 27017
(2)創建超級用戶(可查看所有數據庫信息)

進入mongo後切換到自帶的admin數據庫

use admin

創建超級用戶語句

db.createUser(
  {
    user: "root",
    pwd: "123456",
    roles: [ { role: "userAdminAnyDatabase", db: "admin" }, "readWriteAnyDatabase" ]
  }
)

ctrl+c退出mongodb

(3)啓用身份驗證

​ 修改Mongodb的配置文件 使用yum源其位置在/etc/mongod.conf

修改配置

vim /etc/mongod.conf

#放開下方的security:
#修改配置如下
security:
  authorization: enabled

保存文件從新啓動mongo

:wq
systemctl restart mongod

使用密碼鏈接測試

mongo --port 27017 -u "root" --authenticationDatabase "admin" -p

#輸入密碼後出現數據庫消息則成功 或者使用studio3t進行連接測試
(4)創建普通用戶(只能操作查看對應的一個庫信息)

exmple:我在數據庫中有一個cx_sc數據庫

創建cx_sc對應的普通用戶 leilei: (此用戶鏈接成功後僅可查看以及操作cx_sc數據庫)

use cx_sc
db.createUser({user: "leilei", pwd: "123456", roles: [{role: "readWrite", db: "cx_sc" }]})

使用studio3t 進行鏈接測試

鏈接成功

(5)修改Mongo超級用戶密碼
#首先將需要修改用戶密碼的用戶登錄到admin 數據庫
mongo --port 27017 -u "root" --authenticationDatabase "admin" -p
#輸入密碼進行驗證,成功後進入到admin中
#使用如下命令進行修改密碼  (用戶,需要修改的密碼)
db.changeUserPassword('root','123456');

附上卸載步驟

首先停止服務

systemctl stop mongod

刪除所有相關依賴包

yum erase $(rpm -qa | grep mongodb-org)

再刪除所有日誌以及數據

sudo rm -r /var/log/mongodb
sudo rm -r /var/lib/mongo

註釋掉之前的禁止mongo升級文件 (否則從新下載命令會出錯)
vim /etc/yum.conf

#將下方代碼進行註釋
exclude=mongodb-org,mongodb-org-server,mongodb-org-shell,mongodb-org-mongos,mongodb-org-tools

(9)Mongodb 在springBoot中的使用

Springboot項目yml配置

spring:
  data:
    mongodb:
      uri: mongodb://cx_sc庫用戶:cx_sc庫用戶密碼@47.97.118.22:27017/cx_sc
      	# 上方爲明確指定某個數據的用戶進行連接
      	# 也可以使用admin 數據庫中的用戶進行連接  統一到admin 數據庫進行認證
      	# admin 用戶認證 url 寫法: mongodb://賬戶:密碼%40@ip:端口/數據庫名?authSource=admin&authMechanism=SCRAM-SHA-1

SpringBoot整合MongoDB
SpringBoot整合MongoDB(一)
SpringBoot整合MongoDB(二)多數據源配置,Aggregation管道使用

補:單副本集搭建

先查看 未使用副本集 studio 3T 連接信息
在這裏插入圖片描述
這裏在這裏做一個說明 由於個人目前學習水平有限 並受到服務器數量限制 這裏僅僅做了一個MongoDB4.2單機轉只有一個實例的副本集以支持事務 的事情 ,這種場景滿足於 項目中 可不使用Mongodb集羣 但需要mongodb 事務的場景

(1)先註釋掉 認證信息 然後從新啓動mongodb

vim /etc/mongod.conf

#security:
#  authorization: enabled

systemctl restart mongod

(2)添加新的配置信息
replication:
  oplogSizeMB: 102400
  replSetName: searay7 #searay7 是你要搭建副本集的名字

sharding:
  clusterRole: shardsvr
(3)進入mongo客戶端

由於吧認證信息註釋掉了 所以只需要輸入mongo命令即可

mongo

會出現類似如下 錯誤 ,這個其實就是設置了副本集配置 但並未搭建的提示錯誤
在這裏插入圖片描述
因此,我們開始搭建副本集。
需要先進入 mongo 的admin 數據庫

use admin

在這裏插入圖片描述
初始化副本集,運行rs.initiate命令 就算是有多個副本集節點 也只能選擇一臺機器執行此命令
這裏說明下: _id:“searay7” 內容爲配置文件中 配置的副本集名 hosts是 節點端口IP

> cfg={_id:"searay7",members:[ {_id:0,host:"192.168.10.176:27017"}] }
> rs.initiate(cfg)

在這裏插入圖片描述
出現以下字樣表示副本集設置完成
在這裏插入圖片描述
也會出現 副本集名字 命令提示符
查看副本集配置

>rs.conf()

在這裏插入圖片描述

查看副本集狀態

> rs.status()

可以看檔 當前 此節點爲主節點 (主節點 可讀可寫 從節點僅可讀)
在這裏插入圖片描述
在這裏插入圖片描述
此時我們再使用 show dbs 命令 便可查看數據庫信息了
在這裏插入圖片描述
使用studio 3t 進行連接測試 發現信息變成了 replica
在這裏插入圖片描述
最後一步 還原咱們的連接密碼 即放開咱們 mongod.conf 中 剛剛註釋的security信息即可 連接測試查看
在這裏插入圖片描述
到此 Mongodb4.2單機轉只有一個實例的副本集以支持事務 就完成了!!!
事務測試 我放在了 SpringBoot整合MongoDB(二)多數據源配置,Aggregation管道使用

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