zoukankan      html  css  js  c++  java
  • MongoDB基础之九 replication复制集

    准备工作:创建目录

    1 mkdir -p /home/m17 //home/m18 /home/m19 /home/mlog

    1:启动3个实例,且声明实例属于某复制集

    1 # ./bin/mongod --dbpath /home/m17 --logpath /home/mlog/m17.log --fork --port 27017 --replSet rs2 --smallfiles
    2 # ./bin/mongod --dbpath /home/m18 --logpath /home/mlog/m18.log --fork --port 27018 --replSet rs2 --smallfiles
    3 # ./bin/mongod --dbpath /home/m19 --logpath /home/mlog/m19.log --fork --port 27019 --replSet rs2 --smallfiles

    注:--smallfiles 最小文件创建实例   

    2:配置复制级

     1 var rsconf = {
     2 _id:'rs2',
     3 members:
     4 [
     5 {_id:0,
     6 host:'127.0.0.1:27017'
     7 },
     8 {_id:1,
     9 host:'127.0.0.1:27018'
    10 },
    11 {_id:2,
    12 host:'127.0.0.1:27019'
    13 } 
    14 
    15 ]
    16 }
     1 > printjson(rsconf)
     2 {
     3 "_id" : "rs2",
     4 "members" : [
     5 {
     6 "_id" : 0,
     7 "host" : "127.0.0.1:27017"
     8 },
     9 {
    10 "_id" : 1,
    11 "host" : "127.0.0.1:27018"
    12 },
    13 {
    14 "_id" : 2,
    15 "host" : "127.0.0.1:27019"
    16 }
    17 ]
    18 }

    3: 根据配置做初始化

     1 > rs.initiate(rsconf)
     2 ;
     3 {
     4 "info" : "Config now saved locally. Should come online in about a minute.",
     5 "ok" : 1
     6 }
     7 rs2:SECONDARY> rs.status();
     8 {
     9 "set" : "rs2",
    10 "date" : ISODate("2016-05-26T00:43:57Z"),
    11 "myState" : 2,
    12 "members" : [
    13 {
    14 "_id" : 0,
    15 "name" : "127.0.0.1:27017",
    16 "health" : 1,
    17 "state" : 2,
    18 "stateStr" : "SECONDARY",
    19 "uptime" : 1183,
    20 "optime" : Timestamp(1464223391, 1),
    21 "optimeDate" : ISODate("2016-05-26T00:43:11Z"),
    22 "self" : true
    23 },
    24 {
    25 "_id" : 1,
    26 "name" : "127.0.0.1:27018",
    27 "health" : 1,
    28 "state" : 5,
    29 "stateStr" : "STARTUP2",
    30 "uptime" : 46,
    31 "optime" : Timestamp(0, 0),
    32 "optimeDate" : ISODate("1970-01-01T00:00:00Z"),
    33 "lastHeartbeat" : ISODate("2016-05-26T00:43:54Z"),
    34 "lastHeartbeatRecv" : ISODate("2016-05-26T00:43:52Z"),
    35 "pingMs" : 189
    36 },
    37 {
    38 "_id" : 2,
    39 "name" : "127.0.0.1:27019",
    40 "health" : 1,
    41 "state" : 5,
    42 "stateStr" : "STARTUP2",
    43 "uptime" : 46,
    44 "optime" : Timestamp(0, 0),
    45 "optimeDate" : ISODate("1970-01-01T00:00:00Z"),
    46 "lastHeartbeat" : ISODate("2016-05-26T00:43:44Z"),
    47 "lastHeartbeatRecv" : ISODate("2016-05-26T00:43:53Z"),
    48 "pingMs" : 0
    49 }
    50 ],
    51 "ok" : 1
    52 }
    View Code

    4: 添加节点

     1 rs2:PRIMARY> rs.add('127.0.0.1:27018')
     2 { "down" : [ "127.0.0.1:27018" ], "ok" : 1 }
     3 rs2:PRIMARY> rs.status
     4 function () { return db._adminCommand("replSetGetStatus"); }
     5 rs2:PRIMARY> rs.status()
     6 {
     7 "set" : "rs2",
     8 "date" : ISODate("2016-05-26T00:51:01Z"),
     9 "myState" : 1,
    10 "members" : [
    11 {
    12 "_id" : 0,
    13 "name" : "127.0.0.1:27017",
    14 "health" : 1,
    15 "state" : 1,
    16 "stateStr" : "PRIMARY",
    17 "uptime" : 1607,
    18 "optime" : Timestamp(1464223853, 1),
    19 "optimeDate" : ISODate("2016-05-26T00:50:53Z"),
    20 "self" : true
    21 },
    22 {
    23 "_id" : 2,
    24 "name" : "127.0.0.1:27019",
    25 "health" : 1,
    26 "state" : 2,
    27 "stateStr" : "SECONDARY",
    28 "uptime" : 85,
    29 "optime" : Timestamp(1464223853, 1),
    30 "optimeDate" : ISODate("2016-05-26T00:50:53Z"),
    31 "lastHeartbeat" : ISODate("2016-05-26T00:51:00Z"),
    32 "lastHeartbeatRecv" : ISODate("2016-05-26T00:50:59Z"),
    33 "pingMs" : 0,
    34 "lastHeartbeatMessage" : "syncing to: 127.0.0.1:27017",
    35 "syncingTo" : "127.0.0.1:27017"
    36 },
    37 {
    38 "_id" : 3,
    39 "name" : "127.0.0.1:27018",
    40 "health" : 1,
    41 "state" : 2,
    42 "stateStr" : "SECONDARY",
    43 "uptime" : 8,
    44 "optime" : Timestamp(1464223853, 1),
    45 "optimeDate" : ISODate("2016-05-26T00:50:53Z"),
    46 "lastHeartbeat" : ISODate("2016-05-26T00:50:59Z"),
    47 "lastHeartbeatRecv" : ISODate("2016-05-26T00:51:00Z"),
    48 "pingMs" : 0,
    49 "lastHeartbeatMessage" : "syncing to: 127.0.0.1:27017",
    50 "syncingTo" : "127.0.0.1:27017"
    51 }
    52 ],
    53 "ok" : 1
    54 }
    View Code

    5:查看状态

    1 rs.status();

    6:删除节点

     1 rs2:PRIMARY> rs.remove('127.0.0.1:27018');
     2 Thu May 26 08:49:36.621 DBClientCursor::init call() failed
     3 Thu May 26 08:49:36.621 Error: error doing query: failed at src/mongo/shell/query.js:78
     4 Thu May 26 08:49:36.622 trying reconnect to 127.0.0.1:27017
     5 Thu May 26 08:49:36.622 reconnect 127.0.0.1:27017 ok
     6 rs2:PRIMARY> rs.status();
     7 {
     8 "set" : "rs2",
     9 "date" : ISODate("2016-05-26T00:49:38Z"),
    10 "myState" : 1,
    11 "members" : [
    12 {
    13 "_id" : 0,
    14 "name" : "127.0.0.1:27017",
    15 "health" : 1,
    16 "state" : 1,
    17 "stateStr" : "PRIMARY",
    18 "uptime" : 1524,
    19 "optime" : Timestamp(1464223776, 1),
    20 "optimeDate" : ISODate("2016-05-26T00:49:36Z"),
    21 "self" : true
    22 },
    23 {
    24 "_id" : 2,
    25 "name" : "127.0.0.1:27019",
    26 "health" : 1,
    27 "state" : 2,
    28 "stateStr" : "SECONDARY",
    29 "uptime" : 2,
    30 "optime" : Timestamp(1464223776, 1),
    31 "optimeDate" : ISODate("2016-05-26T00:49:36Z"),
    32 "lastHeartbeat" : ISODate("2016-05-26T00:49:38Z"),
    33 "lastHeartbeatRecv" : ISODate("2016-05-26T00:49:37Z"),
    34 "pingMs" : 0,
    35 "lastHeartbeatMessage" : "syncing to: 127.0.0.1:27017",
    36 "syncingTo" : "127.0.0.1:27017"
    37 }
    38 ],
    39 "ok" : 1
    40 }
    View Code

    7:主节点插入数据

     1 rs2:PRIMARY> show dbs
     2 local 4.029296875GB
     3 rs2:PRIMARY> 
     4 rs2:PRIMARY> 
     5 rs2:PRIMARY> use test
     6 switched to db test
     7 rs2:PRIMARY> 
     8 rs2:PRIMARY> db.stu.insert({title:'hello'});
     9 rs2:PRIMARY> 
    10 rs2:PRIMARY> 
    11 rs2:PRIMARY> show tables;
    12 stu
    13 system.indexes
    View Code

    8:连接secondary查询同步情况

    1 # ./bin/mongo -port 27019
    2 MongoDB shell version: 2.4.9
    3 connecting to: 127.0.0.1:27019/test
    4 rs2:SECONDARY> use test
    5 switched to db test
    6 rs2:SECONDARY> show tables
    7 Thu May 26 08:59:57.272 error: { "$err" : "not master and slaveOk=false", "code" : 13435 } at src/mongo/shell/query.js:128

    8.1 出现上述错误,是因为slave默认不许读写

    1 rs2:SECONDARY> rs.slaveOk();
    2 rs2:SECONDARY> show tables
    3 stu
    4 system.indexes
    5 rs2:SECONDARY> db.stu.find();
    6 { "_id" : ObjectId("57464a73c79dad862e06cd3b"), "title" : "hello" }

    #看到与primary 一致的数据

     9 主节点down机器 ,primary节点自动漂移

     1 rs2:PRIMARY> use admin
     2 switched to db admin
     3 rs2:PRIMARY> db.shutdownServer();
     4 Thu May 26 09:19:33.316 DBClientCursor::init call() failed
     5 
     6 
     7 rs2:SECONDARY> rs.status()
     8 {
     9 "set" : "rs2",
    10 "date" : ISODate("2016-05-26T01:19:38Z"),
    11 "myState" : 2,
    12 "syncingTo" : "127.0.0.1:27018",
    13 "members" : [
    14 {
    15 "_id" : 0,
    16 "name" : "127.0.0.1:27017",
    17 "health" : 0,
    18 "state" : 8,
    19 "stateStr" : "(not reachable/healthy)",
    20 "uptime" : 0,
    21 "optime" : Timestamp(1464224372, 1),
    22 "optimeDate" : ISODate("2016-05-26T00:59:32Z"),
    23 "lastHeartbeat" : ISODate("2016-05-26T01:19:38Z"),
    24 "lastHeartbeatRecv" : ISODate("2016-05-26T01:19:33Z"),
    25 "pingMs" : 0
    26 },
    27 {
    28 "_id" : 2,
    29 "name" : "127.0.0.1:27019",
    30 "health" : 1,
    31 "state" : 2,
    32 "stateStr" : "SECONDARY",
    33 "uptime" : 3195,
    34 "optime" : Timestamp(1464224372, 1),
    35 "optimeDate" : ISODate("2016-05-26T00:59:32Z"),
    36 "errmsg" : "syncing to: 127.0.0.1:27018",
    37 "self" : true
    38 },
    39 {
    40 "_id" : 3,
    41 "name" : "127.0.0.1:27018",
    42 "health" : 1,
    43 "state" : 1,
    44 "stateStr" : "PRIMARY",
    45 "uptime" : 1725,
    46 "optime" : Timestamp(1464224372, 1),
    47 "optimeDate" : ISODate("2016-05-26T00:59:32Z"),
    48 "lastHeartbeat" : ISODate("2016-05-26T01:19:38Z"),
    49 "lastHeartbeatRecv" : ISODate("2016-05-26T01:19:36Z"),
    50 "pingMs" : 0,
    51 "syncingTo" : "127.0.0.1:27017"
    52 }
    53 ],
    54 "ok" : 1
    55 }
    56 
    57  
  • 相关阅读:
    yum工具及Linux中jdk,tomcat安装
    SSH工作机制和网络配置
    Linux目录,权限,用户管理的命令
    安装Linux服务及其网络配置
    使用Jedis,JedisPool,JedisCluster链接redis
    springboot项目整合定时任务
    pageHelper分页原理及实战
    Net异步委托-泛型委托Action<T>与Func<T,TResult>及 异步调用AsyncCallback
    Oracle 数据库操作相关脚本
    运行npm报错:无法加载文件 D: odejs ode_globalwebpack.ps1,因为在此系统上禁止运行脚本
  • 原文地址:https://www.cnblogs.com/chinesern/p/5529944.html
Copyright © 2011-2022 走看看