복붙노트

[MONGODB] MongoDB를, 복제 및 오류 : { "$ ERR": "하지 마스터와 slaveOk = 거짓", "코드"13435}

MONGODB

MongoDB를, 복제 및 오류 : { "$ ERR": "하지 마스터와 slaveOk = 거짓", "코드"13435}

나는 처음으로 몽고 복제 세트를 시도했다.

내가 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 사이트에 갈 때 나는 차, seconday 및 arbitor있는 것을 알 수있다.

좋아, 이제 테스트.

기본이에서 데이터베이스를 생성에 코드입니다 :

use tt
db.tt.save( { a : 123 } )

보조에, 나는 그 때이 작업을 수행하고 오류가 아래를 얻을 :

db.tt.find()
error: { "$err" : "not master and slaveOk=false", "code" : 13435 }

나는 MongoDB를하고 복제 아주 새로운 오전하지만 난 하나에 뭔가를 할 경우, 그것은 다른 간다 생각했다. 그래서, 내가 기계에 걸쳐 복제해야 할 일을 하나의 기록을 추가하면?

해결법

  1. ==============================

    1.당신은 설정해야 당신이 차에서 읽을 수 있도록하고있는 몽고 쉘 노하우를 수 있도록 모드 "괜찮 슬레이브". 이것은 결국 일관된 사고로 읽어 수행에서 당신과 당신의 응용 프로그램을 보호하는 것입니다. 당신과 쉘에서이 작업을 수행 할 수 있습니다 :

    당신은 설정해야 당신이 차에서 읽을 수 있도록하고있는 몽고 쉘 노하우를 수 있도록 모드 "괜찮 슬레이브". 이것은 결국 일관된 사고로 읽어 수행에서 당신과 당신의 응용 프로그램을 보호하는 것입니다. 당신과 쉘에서이 작업을 수행 할 수 있습니다 :

    rs.slaveOk()
    

    그 후 당신은 세컨더리에서 일반적으로 조회 할 수 있습니다.

    "최종 일관성"에 대한주의 사항 : 정상적인 상황에서, 복제 세트 2 차측은 이하 두 번째 내에서 예비 선거와 같은 모든 동일한 데이터를 가지고있다. 매우 높은 부하에서, 당신이 차에 작성한 것으로 데이터를 보조에 복제하는 데 시간이 걸릴 수 있습니다. 새로 기록 된 데이터가 (기타 네트워크 장애를 금지) 어떤 시점에서 표시됩니다 동안 때문 "복제 지연"로 알려진, 그리고 "결국 일관성"로 알려져 보조 후행하는 것은 읽기에서 읽기, 그것은하지 않을 수 있습니다 즉각 가능.

    편집 : 보조 노드에서 쿼리 할 때 당신은 단지 세션 당 한 번, 세트 slaveok해야합니다.

  2. ==============================

    2.rs.slaveOk () 할 때마다 입력하지 않도록하려면 다음을 수행하십시오

    rs.slaveOk () 할 때마다 입력하지 않도록하려면 다음을 수행하십시오

    ) (rs.slaveOk : 한 줄을 포함, replStart.js라는 이름의 파일을 만듭니다

    그런 다음 몽고 쉘을 시작 --shell replStart.js을 포함한다. 단일 인스턴스에 로컬로 연결하는 경우 물론,이 모든 입력 저장하지 않습니다.

  3. ==============================

    3.mongodb2.0에서

    mongodb2.0에서

    당신은 입력해야

    rs.slaveOk()
    

    보조 MongoDB의 노드에서

  4. ==============================

    4.루비 드라이버를 사용하여이 문제를 다루는 누구 FOR THIS IS 단지 참고

    루비 드라이버를 사용하여이 문제를 다루는 누구 FOR THIS IS 단지 참고

    루비 보석을 사용할 때이 같은 문제가 있었다.

    이 같은 클라이언트를 만들 때 루비에 slaveOk을 설정하려면, 당신은 단지 인수로 전달 :

    mongo_client = MongoClient.new("localhost", 27017, { slave_ok: true })
    

    https://github.com/mongodb/mongo-ruby-driver/wiki/Tutorial#making-a-connection

    mongo_client = MongoClient.new # (optional host/port args)
    

    '인수'는 세 번째 선택적 인수는 것을 알 수 있습니다.

  5. ==============================

    5.slaveOk 더 이상 작동하지 않습니다. 한 요구 readPreference https://docs.mongodb.com/v3.0/reference/read-preference/#primaryPreferred 사용

    slaveOk 더 이상 작동하지 않습니다. 한 요구 readPreference https://docs.mongodb.com/v3.0/reference/read-preference/#primaryPreferred 사용

    EG

    const client = new MongoClient(mongoURL + "?readPreference=primaryPreferred", { useUnifiedTopology: true, useNewUrlParser: true });
    
  6. ==============================

    6.난 그냥 DB 공급자 어색한 상황이 답변을 추가하고있다.

    난 그냥 DB 공급자 어색한 상황이 답변을 추가하고있다.

    무엇을 우리의 경우에 발생하는 것은 기본 및 보조 DB는 (반대의 차와 그 1 차) 역으로 이동하고 우리는 같은 오류를 얻고있다.

    그래서 당신을 도움이 될 수 데이터베이스 상태에 대한 구성 설정에서 확인하시기 바랍니다.

  7. from https://stackoverflow.com/questions/8990158/mongodb-replicates-and-error-err-not-master-and-slaveok-false-code by cc-by-sa and MIT license