Я впервые попробовал наборы реплик mongo.
Я использую ubuntu на ec2 и загрузил три экземпляра. Я использовал частный IP-адрес каждого из экземпляров. Я выбрал в качестве основного, а ниже - код.
mongo --host Private IP Address
rs.initiate()
rs.add(“Private IP Address”)
rs.addArb(“Private IP Address”)
На данный момент все в порядке. Когда я захожу на сайт http://ec2-xxx-xxx-xxx-xxx.compute-1.amazonaws.com:28017/_replSet , я вижу, что у меня есть первичный, второй день и арбитр.
Хорошо, теперь тест.
На первичном сервере создайте базу данных, вот код:
use tt
db.tt.save( { a : 123 } )
на вторичном, я делаю это и получаю следующую ошибку:
db.tt.find()
error: { "$err" : "not master and slaveOk=false", "code" : 13435 }
Я новичок в mongodb и реплицирует, но я подумал, что если я это сделаю что-то в одном, оно переходит в другое. Итак, если я добавлю запись в одну, что мне нужно сделать для репликации на разных машинах?
slaveOk больше не работает. Нужно использовать readPreference https://docs.mongodb.com/v3.0/reference/read-preference/#primaryPreferred
, например,
const client = new MongoClient(mongoURL + "?readPreference=primaryPreferred", { useUnifiedTopology: true, useNewUrlParser: true });