zoukankan      html  css  js  c++  java
  • [DataBase] MongoDB (8) 副本集

    MongoDB  创建副本集

    MongoDB复制是将数据同步在多个服务器的过程。

    复制提供了数据的冗余备份,并在多个服务器上存储数据副本,提高了数据的可用性, 并可以保证数据的安全性。

    复制还允许您从硬件故障和服务中断中恢复数据。

    1. 建立配置文件

    mongodb.conf
    
      1 # Start MongoDB as a daemon on port 5568                                                                                                                   
      2 
      3 port = 5568
      4 fork = true
      5 replSet = test_replica_set
      6 dbpath = /datatest/db
      7 logpath = /datatest/db/test.log
      8 logappend = true
      9 
    
    mongodb2.conf
    
      2 
      3 port = 5569
      4 fork = true
      5 replSet = test_replica_set
      6 dbpath = /datatest/db2
      7 logpath = /datatest/db/test2.log
      8 logappend = true
      9 
    
    mongodb3.conf
    
      2 
      3 port = 5570
      4 fork = true
      5 replSet = test_replica_set
      6 dbpath = /datatest/db3
      7 logpath = /datatest/db/test.log
      8 logappend = true
      9 
    

     2. 启动数据库

    mac-abeen:bin abeen$ sudo ./mongod -f mongodb.conf 
    about to fork child process, waiting until server is ready for connections.
    forked process: 37181
    child process started successfully, parent exiting
    mac-abeen:bin abeen$ sudo ./mongod -f mongodb2.conf 
    about to fork child process, waiting until server is ready for connections.
    forked process: 37185
    child process started successfully, parent exiting
    mac-abeen:bin abeen$ sudo ./mongod -f mongodb3.conf 
    about to fork child process, waiting until server is ready for connections.
    forked process: 37189
    child process started successfully, parent exiting
    

     3. 初始化副本集

    mac-abeen:bin abeen$ ./mongo --nodb
    MongoDB shell version: 3.2.8
    > config = {}
    { }
    > config = {"_id": "test_replica_set", "members": [
    ... {"_id": 0, "host": "localhost:5568"}, {"_id": 1, "host": "localhost:5569"}, {"_id": 2, "host": "localhost:5570"}]}
    {
    	"_id" : "test_replica_set",
    	"members" : [
    		{
    			"_id" : 0,
    			"host" : "localhost:5568"
    		},
    		{
    			"_id" : 1,
    			"host" : "localhost:5569"
    		},
    		{
    			"_id" : 2,
    			"host" : "localhost:5570"
    		}
    	]
    }
    > db = (new Mongo("localhost:5568")).getDB("test")
    test
    > rs.initiate(config)
    { "ok" : 1 }
    test_replica_set:OTHER> 
    
    
    test_replica_set:PRIMARY> rs.config()
    {
    	"_id" : "test_replica_set",
    	"version" : 1,
    	"protocolVersion" : NumberLong(1),
    	"members" : [
    		{
    			"_id" : 0,
    			"host" : "localhost:5568",
    			"arbiterOnly" : false,
    			"buildIndexes" : true,
    			"hidden" : false,
    			"priority" : 1,
    			"tags" : {
    				
    			},
    			"slaveDelay" : NumberLong(0),
    			"votes" : 1
    		},
    		{
    			"_id" : 1,
    			"host" : "localhost:5569",
    			"arbiterOnly" : false,
    			"buildIndexes" : true,
    			"hidden" : false,
    			"priority" : 1,
    			"tags" : {
    				
    			},
    			"slaveDelay" : NumberLong(0),
    			"votes" : 1
    		},
    		{
    			"_id" : 2,
    			"host" : "localhost:5570",
    			"arbiterOnly" : false,
    			"buildIndexes" : true,
    			"hidden" : false,
    			"priority" : 1,
    			"tags" : {
    				
    			},
    			"slaveDelay" : NumberLong(0),
    			"votes" : 1
    		}
    	],
    	"settings" : {
    		"chainingAllowed" : true,
    		"heartbeatIntervalMillis" : 2000,
    		"heartbeatTimeoutSecs" : 10,
    		"electionTimeoutMillis" : 10000,
    		"getLastErrorModes" : {
    			
    		},
    		"getLastErrorDefaults" : {
    			"w" : 1,
    			"wtimeout" : 0
    		},
    		"replicaSetId" : ObjectId("5850f445c8cacd70496883b0")
    	}
    }
    

     4. 写入数据并查看副本集数据

    test_replica_set:PRIMARY> 
    test_replica_set:PRIMARY> for (i=0; i < 100; i++){db.coll.insert({"count": i})}
    WriteResult({ "nInserted" : 1 })
    test_replica_set:PRIMARY> db.coll.count()
    100
    test_replica_set:PRIMARY> db.coll.find().limit(5)
    { "_id" : ObjectId("5850f5f35f1a7d82c0b45b51"), "count" : 0 }
    { "_id" : ObjectId("5850f5f35f1a7d82c0b45b52"), "count" : 1 }
    { "_id" : ObjectId("5850f5f35f1a7d82c0b45b53"), "count" : 2 }
    { "_id" : ObjectId("5850f5f35f1a7d82c0b45b54"), "count" : 3 }
    { "_id" : ObjectId("5850f5f35f1a7d82c0b45b55"), "count" : 4 }
    
    
    查看副本集是否有数据
    mac-abeen:bin abeen$ ./mongo --port 5569 --host localhost
    MongoDB shell version: 3.2.8
    connecting to: localhost:5569/test
    
    test_replica_set:SECONDARY> db.coll.find().limit(5)
    Error: error: { "ok" : 0, "errmsg" : "not master and slaveOk=false", "code" : 13435 }
    设置连接可读取数据
    test_replica_set:SECONDARY> db.setSlaveOk()
    副本中已有数据 
    test_replica_set:SECONDARY> db.coll.find().limit(5)
    { "_id" : ObjectId("5850f5f35f1a7d82c0b45b53"), "count" : 2 }
    { "_id" : ObjectId("5850f5f35f1a7d82c0b45b55"), "count" : 4 }
    { "_id" : ObjectId("5850f5f35f1a7d82c0b45b52"), "count" : 1 }
    { "_id" : ObjectId("5850f5f35f1a7d82c0b45b54"), "count" : 3 }
    { "_id" : ObjectId("5850f5f35f1a7d82c0b45b51"), "count" : 0 }
    
  • 相关阅读:
    Java的静态块与实例块(转)
    Programming Ability Test学习 1031. Hello World for U (20)
    Programming Ability Test学习 1011. World Cup Betting (20)
    Programming Ability Test学习 1027. Colors in Mars (20)
    Programming Ability Test学习 1064. Complete Binary Search Tree (30)
    Programming Ability Test学习 1008. Elevator (20)
    【maven详解-生命周期】Maven的生命周期和插件
    【maven详解-插件】maven插件学习之源码插件Source Xref
    $(document).ready(){}、$(fucntion(){})、(function(){})(jQuery)onload()的区别
    你还没真的努力过,就轻易输给了懒惰
  • 原文地址:https://www.cnblogs.com/abeen/p/6179705.html
Copyright © 2011-2022 走看看