Warning: WP_Syntax::substituteToken(): Argument #1 ($match) must be passed by reference, value given in /var/www/bezhaco/data/www/bezha.od.ua/wp-content/plugins/wp-syntax/wp-syntax.php on line 383
Лекция целиком и полностью посвящена Replication
Создадим тестовые папки
# mkdir 1 2 3
Запускаем реплику
# mongod --dbpath 1 --port 27001 --smallfiles --oplogSize 50 --replSet S1 # mongod --dbpath 2 --port 27002 --smallfiles --oplogSize 50 --replSet S1 # mongod --dbpath 3 --port 27003 --smallfiles --oplogSize 50 --replSet S1 [rsStart] replSet can't get local.system.replset config from self or any seed (EMPTYCONFIG) [rsStart] replSet info you may need to run replSetInitiate -- rs.initiate() in the shell
Запускаем в бэкграунде, форкаем
# mongod --dbpath 1 --port 27001 --smallfiles --oplogSize 50 --replSet S1 --fork --logpath log.1 # mongod --dbpath 2 --port 27002 --smallfiles --oplogSize 50 --replSet S1 --fork --logpath log.2 # mongod --dbpath 3 --port 27003 --smallfiles --oplogSize 50 --replSet S1 --fork --logpath log.3 [rsStart] replSet can't get local.system.replset config from self or any seed (EMPTYCONFIG) [rsStart] replSet info you may need to run replSetInitiate -- rs.initiate() in the shell
Необходимо
1. Создать Config 2. Инициализировать данные: replSetInitiate или -- rs.initiate()
Создаем Config
# mongo --port 27001 --shell > cfg ={ _id: "S1" , members : [ { _id:0 , host: "mongod.bezha.od.ua:27001"}, { _id:1 , host: "mongod.bezha.od.ua:27002"}, { _id:2 , host: "mongod.bezha.od.ua:27003"} ] } cfg { "_id" : "S1", "members" : [ { "_id" : 0, "host" : "mongod.bezha.od.ua:27001" }, { "_id" : 1, "host" : "mongod.bezha.od.ua:27002" }, { "_id" : 2, "host" : "mongod.bezha.od.ua:27003" } ] }
Инициализируем данные
> rs.initiate(cfg) { "info" : "Config now saved locally. Should come online in about a minute.", "ok" : 1 } > S1:STARTUP2> S1:SECONDARY> db.isMaster() { "setName" : "S1", "ismaster" : false, "secondary" : true, "hosts" : [ "mongod.bezha.od.ua:27001", "mongod.bezha.od.ua:27003", "mongod.bezha.od.ua:27002" ], "me" : "mongod.bezha.od.ua:27001", "maxBsonObjectSize" : 16777216, "localTime" : ISODate("2012-11-18T01:56:08.073Z"), "ok" : 1 }
S1:PRIMARY> rs.status() { "set" : "S1", "date" : ISODate("2012-11-18T01:58:19Z"), "myState" : 1, "members" : [ { "_id" : 0, "name" : "mongod.bezha.od.ua:27001", "health" : 1, "state" : 1, "stateStr" : "PRIMARY", "uptime" : 281, "optime" : Timestamp(1353203756000, 1), "optimeDate" : ISODate("2012-11-18T01:55:56Z"), "self" : true }, { "_id" : 1, "name" : "mongod.bezha.od.ua:27002", "health" : 1, "state" : 2, "stateStr" : "SECONDARY", "uptime" : 141, "optime" : Timestamp(1353203756000, 1), "optimeDate" : ISODate("2012-11-18T01:55:56Z"), "lastHeartbeat" : ISODate("2012-11-18T01:58:18Z"), "pingMs" : 0 }, { "_id" : 2, "name" : "mongod.bezha.od.ua:27003", "health" : 1, "state" : 2, "stateStr" : "SECONDARY", "uptime" : 141, "optime" : Timestamp(1353203756000, 1), "optimeDate" : ISODate("2012-11-18T01:55:56Z"), "lastHeartbeat" : ISODate("2012-11-18T01:58:18Z"), "pingMs" : 0 } ], "ok" : 1 }
# mongo --port 27002 --shell S1:SECONDARY> show collections Sun Nov 25 14:02:47 uncaught exception: error: { "$err" : "not master and slaveOk=false", "code" : 13435 } S1:SECONDARY> rs.slaveOk() S1:SECONDARY> show collections S1:SECONDARY>
Опции которые можно устанавливать при Replica Set Configuration
Синтаксис
cfg ={ _id: "S1" , members : [ { _id:0 , host: "mongod.bezha.od.ua:27001",}, { _id:1 , host: "mongod.bezha.od.ua:27002", }, { _id:2 , host: "mongod.bezha.od.ua:27003", } ] }
Опции могут быть
<arbiterOnly : <boolean>,> <priority: <priority>,> <hidden : <boolean>,> <slaveDelay : <number>,> <tags: { <document> },> <votes : <number>> |
Добавим опций в Replica
S1:PRIMARY> cfg = rs.conf() { "_id" : "S1", "version" : 1, "members" : [ { "_id" : 0, "host" : "mongod.bezha.od.ua:27001" }, { "_id" : 1, "host" : "2mongod.bezha.od.ua:27002" }, { "_id" : 2, "host" : "mongod.bezha.od.ua:27003" } ] } S1:PRIMARY> cfg.members[2].slaveDelay = 8 * 3600 28800 S1:PRIMARY> cfg.members[2].hidden = true true S1:PRIMARY> cfg.members[2].priority = 0 0 S1:PRIMARY> rs.reconfig(cfg) DBClientCursor::init call() failed query failed : admin.$cmd ... trying reconnect to 127.0.0.1:27001 reconnect 127.0.0.1:27001 ok reconnected to server after rs command (which is normal)
Результат
S1:PRIMARY> rs.conf() { "_id" : "S1", "version" : 2, "members" : [ { "_id" : 0, "host" : "mongod.bezha.od.ua:27001" }, { "_id" : 1, "host" : "mongod.bezha.od.ua:27002" }, { "_id" : 2, "host" : "mongod.bezha.od.ua:27003", "priority" : 0, "hidden" : true } ] }