1. 程式人生 > >MongoDB基礎2 之 復制集篇

MongoDB基礎2 之 復制集篇

快照 add tcp 文件目錄 進程管理 color 數據 進程 oss

接著上篇接續
在單臺服務器資源充分的情況下,可以使用多實例,以便充分使用服務器資源
由於我在虛擬機中做的所以恢復了快照
開啟服務systemctl start mongod.service
netstat -ntap
>show dbs   //查看數據庫
admin  0.000GB
local  0.000GB
config  0.000GB
>use school  //進入school 雖然但是有集合了後會自動創建
> for(var i=1;i<=100;i++)db.users.insert({"id":i,"name":"jack"+i})  //先創建100個玩玩
> show dbs
admin   0.000GB
config  0.000GB
local   0.000GB
school  0.000GB  //就會自動創建
> show collections  //查看集合
users
> show tables   //也是查看集合
users
> db.users.find()  //查看集合內容
{ "_id" : ObjectId("5b49ab2a0bd68f9074b77bb4"), "id" : 1, "name" : "jack1" }
此處省略··········
db.copyDatabase("school","sheare")  //把school 復制成shearer //內容一樣
> show dbs
admin   0.000GB
config  0.000GB
local   0.000GB
school  0.000GB
sheare  0.000GB
克隆對方的集合
創建多實例
mkdir -p /data/mongodb/mongodb2    //創建數據目錄
cd /data/mongodb/ 
mkdir logs
touch logs/mongodb2.log    //創建日誌文件
cd logs/
chmod 777 *.log     //賦予權限
和前面一樣

克隆數據

進入到 mongo --port 27018
> show dbs  //此時完全是獨立的數據
admin   0.000GB
config  0.000GB
local   0.000GB
創建多實例-----------
vim mongod2.conf
systemLog:
省略···
path: /data/mongodb/logs/mongodb2.log //手動添加日誌文件路徑
省略····
storage:
  dbPath: /data/mongodb/mongodb2 //定義數據文件目錄
net:
  port: 27018  //修改端口號
mongod -f /etc/mongod2.conf //開啟多實例2
netstat -ntap | grep 27018
tcp        0      0 0.0.0.0:27018           0.0.0.0:*               LISTEN      9870/mongod 
> db.runCommand({"cloneCollection":"school.user","from":"192.168.100.20.27017"}) 
//復制 school(數據庫中的)uesr(集合)的數據。來自192.168.100.20 27017 裏面的數據
--------------進程管理-----------
> db.currentOp()  //當前進程
省略·····
"currentOpTime" : "2018-07-14T23:01:50.596+0800",
            "opid" : 2206,   //進程編號
> db.killOp(2206)  //結束進程 但是不會退出數據庫釋放到當前進程 

技術分享圖片
技術分享圖片
技術分享圖片
技術分享圖片

復制集

mkdir -p /data/mongodb/mongodb{2,3,4}  //同時創建多個文件數據存放目錄
mkdir -p /data/mongodb/logs  //為其創建數據日誌文件
touch /data/mongodb/logs/mongodb{2,3,4}.log //同時創建多個數據日誌文件
chmod 777 /data/mongodb/logs/*.log  //開放權限
vim /etc/mongod.conf  //修改配置文件開啟用戶
replication: //開啟用戶
        replSetName: abc 
mongod -f /etc/mongod.conf --shutdown  //關閉服務  //正對於莫一個實例 在有多實例的情況下 
mongod -f /etc/mongod.conf  //開啟服務
 cp -p /etc/mongod.conf /etc/mongod2.conf   //創建多端口實現復制集
 mongod -f /etc/mongod4.conf  //挨個開啟實例
 netstat -nata  //查看有沒有開啟 若有錯則檢查配置文件日誌存放路徑以及數據出存放路徑
 mongo --port 27018  //挨個測試一下是否能近入
 mongo //進入默認 27017 定義復制集

復制集配置

 cfg={"_id":"abc","members":[{"_id":0,"host":"192.168.10.5:27017"},{"_id":1,"host":"192.168.10.5:27018"},{"_id":2,"host":"192.168.10.5:27019"}]}  //定義復制集 節點數據
 #初始化配置時保證從節點沒有數據
> rs.initiate(cfg)
 #添加節點
abc:PRIMARY> rs.add("192.168.10.5:27020")

#刪除節點
abc:PRIMARY> rs.remove("192.168.10.5:27019")

------------------故障轉移切換-----------------------

ps aux | grep  mongod  //查看當前進程 就有4個
#手動切換
abc:PRIMARY> rs.freeze(30)      //暫停30s不參與選舉

abc:PRIMARY> rs.stepDown(60,30)   //交出主節點位置,維持從節點狀態不少於60秒,等待30秒使主節點和從節點日誌同步

技術分享圖片
技術分享圖片
技術分享圖片
技術分享圖片
技術分享圖片
技術分享圖片
技術分享圖片
技術分享圖片
技術分享圖片
技術分享圖片

MongoDB基礎2 之 復制集篇