MongoDB環境配置及集羣一鍵部署

1、MongoDB在Linux下的安裝配置
  • 應用shutdown kill -2/-4
  • use admin; db.shutdownServer();
  • kill -9 可能會導致數據丟失、文件損壞、之後需要進行修復;
2、MongoDB體系結構解讀
  • 跨平臺數據庫
    • Linux、Unix、Max、Windows
    • 整體架構相同
  • MongoDB Server
    • 實例、數據庫及對應關係
  • 數據邏輯結構(面向用戶的)
    • 文檔、集合、數據庫
  • 數據存儲
    • 元數據、實際數據
    • 數據庫數據組成:db.ns、db.0、db.1.....
    • 數據存儲預分配空間(2倍增加,最小64MB、最大文件2G)
    • 命名空間(集合、索引、*.ns、*.0、*.1存儲表及索引)
    • 命名空間分配大小遞增
3、MongoDB生態系統
  • 集羣構成
    • mongod
    • mongos
    • config server
    • arbiter server
  • 主從複製模式(Master、Slave or Slaves),支持任意節點從節點,備份;人工故障轉移、故障恢復困難;oplog僅存在主節點上
  • 副本集模式(Arbiter、Primary、Secondary);自動話管理(故障轉移、活躍節點選舉、讀擴展、智能化);
  • 分片模式(數據拆分、分散存儲到多臺機器上、手工分片(自動分片));意義:單機性能瓶頸,內存
  • 部署方式(Master-Slave:不推薦、實驗部署;Replica Set:推薦方式、數據量不大;ReplicatSet+Sharding方式:推薦部署方式、數據量大、需要分片);
  • MongoDB集羣部署實踐
    • 數據量大
    • 可靠性較高;
    • 併發讀寫;
    • Replica Set+Sharding
    • 動態增加ShardingServer
    • 讀寫分離
    • 故障轉移
    • 庫級sharding(move primary)
    • 表級是手動sharding
    • auto-sharding(凌晨)
_____________________________________________________________________________________
1、創建配置文件及相關目錄
環境簡介:因爲手頭沒有虛擬機,所以在windows下單機完成部署要求,並編寫bat運行腳本
腳本如下:
rem m1
start mongod.exe --config=../config/m1/s1_1
start mongod.exe --config=../config/m1/s1_2
start mongod.exe --config=../config/m1/c1_1
start mongod.exe --config=../config/m1/a1_1
start mongod.exe --config=../config/m1/a1_2

rem m2
start mongod.exe --config=../config/m2/s2_1
start mongod.exe --config=../config/m2/s2_2
start mongod.exe --config=../config/m2/c2_1
start mongod.exe --config=../config/m2/a2_1
start mongod.exe --config=../config/m2/a2_2

rem m3
start mongod.exe --config=../config/m3/s3_1
start mongod.exe --config=../config/m3/s3_2
start mongod.exe --config=../config/m3/c3_1
start mongod.exe --config=../config/m3/a3_1
start mongod.exe --config=../config/m3/a3_2


start mongos.exe --config=../config/m1/s1
start mongos.exe --config=../config/m2/s2
start mongos.exe --config=../config/m3/s3
2、進行分片相應設置
use admin
config = {_id: 'shard1', members:[{_id:0, host: 'localhost:8442'},{_id:1, host:'localhost:8542'},{_id:2, host:'localhost:8642',slaveDelay:7200,priority:0},{_id:3, host:'localhost:8451',arbiterOnly:true},{_id:4, host:'localhost:8551',arbiterOnly:true},{_id:5, host:'localhost:8651',arbiterOnly:true}]};
rs.initiate(config);
config = {_id: 'shard2', members:[{_id:0, host: 'localhost:8443'},{_id:1, host:'localhost:8543'},{_id:2, host:'localhost:8643',slaveDelay:7200,priority:0},{_id:3, host:'localhost:8452',arbiterOnly:true},{_id:4, host:'localhost:8552',arbiterOnly:true},{_id:5, host:'localhost:8652',arbiterOnly:true}]};
rs.initiate(config);

use admin
db.runCommand( { addshard:"shard1/localhost:8442,localhost:8542",name:"s1"} );
db.runCommand( { addshard:"shard2/localhost:8443,localhost:8543",name:"s2"} );
db.runCommand( { listshards : 1 } )
3、目錄結構及運行情況
配置文件目錄(m1爲例):

文件記錄log

db文件夾

運行程序(15+3個進程)


分片情況:

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