mongdb副本集搭建
一:安裝mongodb 常用的有兩種方法:我採用的是方法2:
方法1 安裝包方式,直接下載.tgz檔案,然後解壓即可:
# 下載需要的版本
下載percona for mongodb
-zxvf mongodb-linux-x86_64-3.0.6.tgz # 解壓mv mongodb-linux-x86_64-3.0.6/ /usr/bin/mongodb/bin/mongod # 將解壓包複製到指定目錄
這種啟動方式如下:
/usr/bin/mongodb/bin/mongod -f /etc/mongod.conf
方法2 yum 安裝,然後預設配置檔案在/etc/mongod.conf,這樣安裝的mongodb
的相關命令都在/usr/bin下面的!
安裝yum源(percona自己的yum源)
# yum -y install
yum list | grep mongo #選擇合適版本
[root@beijing-fuli-hadoop-02 bin]# yum install Percona-Server-MongoDB-34-mongos.x86_64
這種方法的啟動方式:
service mongod start
二:生成 keyfile
[root@beijing-fuli-hadoop-02 mongodb]# openssl rand -base64 756 >/data/mongodb/config/mongodb.key
三:編寫配置檔案
1.注意檔案的空格和大小寫都會導致啟動失敗
2.如果配置了配置了clusterAuthMode,那麼一定要提前生成keyfile
3.關於節點的優先順序的設定,具有較高Priority的Secondary相對於較低Priority的Secondary
會更早的發起選舉,也更容易成為新的Primary節點,但是即使優先順序低的Secondary
也可以在段時間內被選舉為Primary節點,重點來了,這種情況發生的時候副本集就會繼續
進行選舉,直到可用的最高優先順序Secondary被選舉為Primary,所以當你想讓特定的
Secondary節點成為主的時候,你才有必要配置不同的Primary,否則你只需要配置成一樣的
Priority(例如都是1即可)
4.關於vote的設定:從mongodb 3.2開始,無投票權的成員必須配置Priority為0,priority大於
0的成員其vote必須配置為1
四:如果你想用非root來啟動mongodb,那麼就建立 mongodb的賬號和屬組
[root@beijing-fuli-hadoop-02 init.d]# groupadd -g 666 mongod
[root@beijing-fuli-hadoop-02 init.d]# useradd -m -s /bin/bash -g mongod -u 666 mongod
五:啟動資料庫:三個節點都啟動
[mongod@beijing-fuli-hadoop-02 db]$ /usr/bin/mongodb/bin/mongod -f /etc/mongod.conf
about to fork child process, waiting until server is ready for connections.
forked process: 89234
child process started successfully, parent exiting
六:轉為複製集架構
> use admin # 切換到 admin 資料庫switched to db admin # 初始化副本集,副本集名稱為 liuhe_rs ,第一個成員為自己本身,然後他會被選舉為主> rs.initiate({_id:'liuhe_rs',members: [{ _id: 0 , host: "10.9.21.178:27017"},{ _id: 1 , host: "10.9.21.179:27017"},{ _id: 2 , host: "10.9.21.114:27017"}]}) { "ok" : 1 }
或者如下:
>config={_id:'liuhe_rs',members: [{ _id: 0 , host: "10.9.21.178:27017"},{ _id: 1 , host: "10.9.21.179:27017"},{ _id: 2 , host: "10.9.21.114:27017"}]}
>rs.initiate(config)
七:啟動報錯:
7.1,引數indexBuildRetry不能在副本集中配置
[root@beijing-fuli-hadoop-02 mongodb]# /usr/bin/mongodb/bin/mongod -f /etc/mongod.conf
2019-11-11T22:36:15.551+0800 F CONTROL [main] Failed global initialization: BadValue: replication.replSetName is not allowed when storage.indexBuildRetry is specified
報錯內容:
Failed global initialization: BadValue: replication.replSetName is not allowed when storage.indexBuildRetry is specified
storage 引數 indexBuildRetry 不能與 副本集共存,當開啟 副本集的時候,就需要將indexBuildRetry 引數註釋。官網連結
Changed in version 4.0: The setting storage.indexBuildRetry cannot be used in conjunction withreplication.replSetName.
7.2.啟動報錯 error number 100
啟動的時候會在資料目錄下生成相應的初始化庫以及特定的問題,所以
要保證這個目錄是空的
[mongod@beijing-fuli-hadoop-02 ~]$ /usr/bin/mongodb/bin/mongod -f /etc/mongod.conf
about to fork child process, waiting until server is ready for connections.
forked process: 89082
ERROR: child process failed, exited with error number 100
To see additional information in this output, start without the "--fork" option.
可能是因為 你的 資料庫目錄下有別的檔案,清空即可!
7.3 啟動報錯:error number 14
[mongod@beijing-fuli-hadoop-04 log]$ /usr/bin/mongodb/bin/mongod -f /etc/mongod.conf
about to fork child process, waiting until server is ready for connections.
forked process: 100524
ERROR: child process failed, exited with error number 14
To see additional information in this output, start without the "--fork" option.
檢視日誌發現如下:
2019-11-16T16:51:37.938+0800 E NETWORK [initandlisten] Failed to unlink socket file /tmp/mongodb-27017.sock Operation not permitted
原來是之前用root賬號啟動的,生成了一個root使用者的mongodb-27017.sock檔案,然後又用mongod
使用者啟動,結果沒有許可權操作,刪除這個檔案即可,然後用mongod使用者啟動會自動生成一個
屬於mongod的檔案,如下:
[root@beijing-fuli-hadoop-02 tmp]# ll mongodb-27017.sock
srwx------ 1 mongod mongod 0 Nov 16 17:12 mongodb-27017.sock
那麼mongodb-27017.sock這個檔案是做什麼的?
伺服器與本地客戶端進行通訊的Unix套接字檔案。
啟動時會開啟。
預設的儲存路徑是/tmp/mongodb-<port>.sock
八:mongodb的基本維護操作命令:
8.1:檢視mongodb 副本集的狀態
MongoDB Enterprise liuhe_rs:PRIMARY> rs.status()
8.2:允許secondary節點可以寫
對於replica set 中的secondary 節點預設是不可讀的,在寫多讀少的應用中,使用Replica Sets來實現讀寫分離。透過在連線時指定或者在主庫指定slaveOk,由Secondary來分擔讀的壓力,Primary只承擔寫操作
第一種方法:db.getMongo().setSlaveOk();#從庫執行,並且是臨時啟作用,
第二種方法:rs.slaveOk(); #從庫執行,並且是臨時啟作用,
上面的兩種方法都是臨時起作用的,下次再透過mongo進入例項的時候,查詢仍然會報錯,為此可以透過下列方式
[mongod@beijing-fuli-hadoop-04 ~]$ vi .mongorc.js
rs.slaveOk();
這樣的話以後每次透過mongo命令進入都可以查詢了
8.3.檢視當前mongodb連線的那個庫
> use liuwenhe
switched to db liuwenhe
> db.stats()
{
"db" : "liuwenhe",
"collections" : 1,
"views" : 0,
"objects" : 1,
"avgObjSize" : 48,
"dataSize" : 48,
"storageSize" : 16384,
"numExtents" : 0,
"indexes" : 1,
"indexSize" : 16384,
"fsUsedSize" : 18297913344,
"fsTotalSize" : 75949613056,
"ok" : 1
}
8.4檢視副本集從庫狀態資訊(延遲、成員等)
MongoDB Enterprise liuhe_rs:PRIMARY> rs.printSlaveReplicationInfo()
source: 10.9.21.179:27017
syncedTo: Sat Nov 16 2019 21:56:29 GMT+0800 (CST)
0 secs (0 hrs) behind the primary
source: 10.9.21.114:27017
syncedTo: Sat Nov 16 2019 21:56:29 GMT+0800 (CST)
0 secs (0 hrs) behind the primary
如上所示,有兩個從庫,分別是10.9.21.179、10.9.21.114,然後同步到了主庫的oplogs
Sat Nov 16 2019 21:56:29 的時間點了,沒有延遲;
8.5:檢視副本集的oplog資訊:
MongoDB Enterprise liuhe_rs:PRIMARY> rs.printReplicationInfo()
configured oplog size: 51200MB
log length start to end: 424168secs (117.82hrs)
oplog first event time: Tue Nov 12 2019 00:10:41 GMT+0800 (CST)
oplog last event time: Sat Nov 16 2019 22:00:09 GMT+0800 (CST)
now: Sat Nov 16 2019 22:00:16 GMT+0800 (CST)
8.6檢視某個庫下的使用者:
MongoDB Enterprise liuhe_rs:PRIMARY> use admin
switched to db admin
MongoDB Enterprise liuhe_rs:PRIMARY> show users
九:建立管理員使用者
use admin
db.createUser(
{
user: "liuwenhe",
pwd: "liuwenhe",
roles: [ { role: "root", db: "admin" } ]
}
)
MongoDB Enterprise liuhe_rs:PRIMARY> db.auth('liuwenhe','liuwenhe')
登入資料庫:
mongo -u liuwenhe -p liuwenhe --authenticationDatabase admin
建立普通賬號:
db.createUser({user:'user', pwd:'123456', roles:[ {role:'readWrite', db:'liuwenhe'}]})
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29654823/viewspace-2664487/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- mongodb 4.0副本集搭建MongoDB
- MongoDB 6.0.3副本集搭建MongoDB
- MongoDB日常運維-04副本集搭建MongoDB運維
- Mongodb3.0.5副本集搭建及spring和java連線副本集配置MongoDBSpringJava
- MongoDB 副本集搭建MongoDB
- mongo副本集搭建Go
- 搭建MongoDB副本集MongoDB
- MongoDB 4.2副本集新增/刪除副本(一主一副一仲裁)MongoDB
- MongoDB日常運維-05副本集故障切換MongoDB運維
- MongoDB 4.2副本集自動故障轉移(一主一副一仲裁)MongoDB
- MongoDB副本集replica set (二)--副本集環境搭建MongoDB
- MongDB
- 使用副本集搭建MongoDB叢集MongoDB
- 手把手教你搭建mongodb副本集MongoDB
- MongoDB 副本集的原理、搭建、應用MongoDB
- 修改mongodb3.0副本集使用者密碼遇到的坑MongoDB密碼
- 第六章 MongoDB副本集搭建MongoDB
- 搭建高可用MongoDB叢集(二): 副本集MongoDB
- linux下Mongodb叢集搭建:分片+副本集LinuxMongoDB
- 【MongoDB】分片(sharding)+副本集(replSet)叢集搭建MongoDB
- 2.MongoDB 4.2副本集環境基於時間點的恢復MongoDB
- MONGDB 安裝與使用
- 04 - Mongdb的集合操作
- MongoDB日常運維-06副本集搭建錯誤彙總MongoDB運維
- 單機Linux下搭建MongoDB副本集-三節點LinuxMongoDB
- 使用Docker搭建MongoDB 5.0版本副本集叢集DockerMongoDB
- Linux C/C++呼叫mongDBLinuxC++
- 搭建高可用MongoDB叢集(三):深入副本集內部機制MongoDB
- MongoDB副本集MongoDB
- MongDB學習筆記(一) 初遇篇筆記
- mongdb的文件結構特點介紹
- MongoDB部署副本集MongoDB
- MongoDB 副本集管理MongoDB
- MongoDB之副本集MongoDB
- 再看MongoDB副本集MongoDB
- 副本集要點
- 副本集選舉
- 副本集部署