Mongodb tip42 50

737
-1

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
737
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
0
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • 명확하게 오류가 없음을 검증.\narbiter 설정을 변경하거나 기존 설정을 변경하면 안된다. 멤버의 추가/삭제 가능.\n버전을 증가해서 전파되도록 하라.\n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • Mongodb tip42 50

    1. 1. MONGODB TIP 42~50
    2. 2. TIP 42 레플리카 셋은 주 서버 없이도 재설정될 수 있다.
    3. 3. TIP 42 레플리카 셋은 주 서버 없이도 재설정될 수 있다.레플리카 셋에서 과반수가 넘지 않는 서버만 살아 있고 나머지는 죽은 경우
    4. 4. TIP 42 레플리카 셋은 주 서버 없이도 재설정될 수 있다.레플리카 셋에서 과반수가 넘지 않는 서버만 살아 있고 나머지는 죽은 경우공식적인 절차는 local 데이터베이스를 날려버리고, 레플리카셋을 처음부터 재설정해야 한다.
    5. 5. TIP 42 레플리카 셋은 주 서버 없이도 재설정될 수 있다.레플리카 셋에서 과반수가 넘지 않는 서버만 살아 있고 나머지는 죽은 경우공식적인 절차는 local 데이터베이스를 날려버리고, 레플리카셋을 처음부터 재설정해야 한다.레플리케이션을 재구성하고 oplog를 다시 할당하는 동안 시스템이 중단된다.
    6. 6. 애플리케이션을 중단하고 싶지 않은 경우
    7. 7. 애플리케이션을 중단하고 싶지 않은 경우두개이상의 부서버중 하나를 선택하여 중지하고,다른 포트를 사용하여 재시작한다.
    8. 8. 애플리케이션을 중단하고 싶지 않은 경우두개이상의 부서버중 하나를 선택하여 중지하고,다른 포트를 사용하여 재시작한다.mongod --replSet foo --port 5555
    9. 9. 애플리케이션을 중단하고 싶지 않은 경우두개이상의 부서버중 하나를 선택하여 중지하고,다른 포트를 사용하여 재시작한다.mongod --replSet foo --port 5555mongod --port 5556
    10. 10. 설정 적용> use local> config = db.system.replset.findOne(){ “_id”:”foo”, > config.slice(2,1) “version”:2, > config{ “members” : [{ “_id”:”foo”, “_id”:0, “version”:3, “host” : “rs1:5555”},{ “member”:[{ “_id”:1, “_id”:0, “host”:”rs2:5555”, “host”:”rs1:5555”},{ “arbiterOnly”:true},{ “_id”:1, “_id”:2, “host”:”rs2:5555”, “host”:”rs3:5555”},{ “arbiterOnly”:true},{ “_id”:3, “_id”:3, “host”:”rs4:5555”}]} “host”:”rs4:5555”}]}
    11. 11. TIP 43 --SHARDSVR 와 --CONFIGSVR 옵션이 필수는 아니다.
    12. 12. TIP 43 --SHARDSVR 와 --CONFIGSVR 옵션이 필수는 아니다.mongos 프로세스는 27017, 모든 샤드는 27018, 모든 설정 서버는 27019 포트를 사용.
    13. 13. TIP 43 --SHARDSVR 와 --CONFIGSVR 옵션이 필수는 아니다.mongos 프로세스는 27017, 모든 샤드는 27018, 모든 설정 서버는 27019 포트를 사용.--configsvr 는 dialog를 켜는 추가적인 동작을 한다.
    14. 14. TIP 43 --SHARDSVR 와 --CONFIGSVR 옵션이 필수는 아니다.mongos 프로세스는 27017, 모든 샤드는 27018, 모든 설정 서버는 27019 포트를 사용.--configsvr 는 dialog를 켜는 추가적인 동작을 한다.dialog는 설정 데이터베이스가 수행하는 모든 동작을 다시실행할 수 있도록 기록한다.
    15. 15. TIP 43 --SHARDSVR 와 --CONFIGSVR 옵션이 필수는 아니다.mongos 프로세스는 27017, 모든 샤드는 27018, 모든 설정 서버는 27019 포트를 사용.--configsvr 는 dialog를 켜는 추가적인 동작을 한다.dialog는 설정 데이터베이스가 수행하는 모든 동작을 다시실행할 수 있도록 기록한다.--journal 옵션을 사용하면 같은 효과에 성능 저하가 없다.
    16. 16. TIP 44 --NOTABLESCAN옵션은 개발 중에만 사용하라
    17. 17. TIP 44 --NOTABLESCAN옵션은 개발 중에만 사용하라--notablescan 옵션은 쿼리를 수행할 때 테이블 검색이 수반되면 에러를 반환한다. (색인을 사용하는 쿼리는 정상 처리.)
    18. 18. TIP 44 --NOTABLESCAN옵션은 개발 중에만 사용하라--notablescan 옵션은 쿼리를 수행할 때 테이블 검색이 수반되면 에러를 반환한다. (색인을 사용하는 쿼리는 정상 처리.)실 운용중일 경우 관리 작업을 할때 색인되지 않은 테이블을 검색할 경우가 발생한다.
    19. 19. TIP 45 자바스크립트 조금은 배워두라.
    20. 20. TIP 45 자바스크립트 조금은 배워두라.파이썬과 같은 자체 셀을 가진 언어를 사용하거나,MongoDB에 직접 접근할 필요가 없는 Mongoid 같은ODM을 사용하더라도 자바스크립트 쉘에 익숙해져야 한다.
    21. 21. TIP 45 자바스크립트 조금은 배워두라.파이썬과 같은 자체 셀을 가진 언어를 사용하거나,MongoDB에 직접 접근할 필요가 없는 Mongoid 같은ODM을 사용하더라도 자바스크립트 쉘에 익숙해져야 한다.자바스크립트 셀은 MongoDB의 정보에 접근하는 가장 빠르고 좋은 도구이다.
    22. 22. TIP 46 모든 서버와 DB는 하나의 셸에서 관리하라
    23. 23. TIP 46 모든 서버와 DB는 하나의 셸에서 관리하라mongo 는 localhost:27017로 접속.
    24. 24. TIP 46 모든 서버와 DB는 하나의 셸에서 관리하라mongo 는 localhost:27017로 접속.host:port/database 옵션으로 어떤 서버에도 접근 가능.
    25. 25. TIP 46 모든 서버와 DB는 하나의 셸에서 관리하라mongo 는 localhost:27017로 접속.host:port/database 옵션으로 어떤 서버에도 접근 가능.use customers, use game, use customers ...
    26. 26. TIP 46 모든 서버와 DB는 하나의 셸에서 관리하라mongo 는 localhost:27017로 접속.host:port/database 옵션으로 어떤 서버에도 접근 가능.use customers, use game, use customers ...game = db.getSisterDB(“game”)customers = db.getSisterDB(“customers”)
    27. 27. TIP 46 모든 서버와 DB는 하나의 셸에서 관리하라mongo 는 localhost:27017로 접속.host:port/database 옵션으로 어떤 서버에도 접근 가능.use customers, use game, use customers ...game = db.getSisterDB(“game”)customers = db.getSisterDB(“customers”)레플리카 셋이나 샤딩된 클러스터를 사용하는 경우, 접속을 각각 유지 할 수 있다.master=connect(“ny1a:27017/admin”)slave = connect(“ny1b:27017/admin”)
    28. 28. TIP 47 함수에 대해 자세한사항을 보려면 ‘HELP’를 수행
    29. 29. TIP 47 함수에 대해 자세한사항을 보려면 ‘HELP’를 수행자바스크립트 셸안에서 함수의 괄호 없이 수행하면 소스코드를 볼 수 있다.> db.addUserfunction(username, pass, readOnly){ ..... }
    30. 30. TIP 47 함수에 대해 자세한사항을 보려면 ‘HELP’를 수행자바스크립트 셸안에서 함수의 괄호 없이 수행하면 소스코드를 볼 수 있다.> db.addUserfunction(username, pass, readOnly){ ..... }listCommands 만 기억하면 모든 명령어 이름을 볼 수 있다.> db.runCommand({listCommands:1})
    31. 31. TIP 47 함수에 대해 자세한사항을 보려면 ‘HELP’를 수행자바스크립트 셸안에서 함수의 괄호 없이 수행하면 소스코드를 볼 수 있다.> db.addUserfunction(username, pass, readOnly){ ..... }listCommands 만 기억하면 모든 명령어 이름을 볼 수 있다.> db.runCommand({listCommands:1})자바스크립트 셀에는 자동 완성 기능의 제안을 받을 수 있다.
    32. 32. TIP48 구동 파일을 작성하라.
    33. 33. TIP48 구동 파일을 작성하라.셸이 시작할 때 옵션으로 헬퍼 함수 목록인 구동 파일을 지정할 수 있다.$ mongo startup.js
    34. 34. TIP48 구동 파일을 작성하라.셸이 시작할 때 옵션으로 헬퍼 함수 목록인 구동 파일을 지정할 수 있다.$ mongo startup.js실수로 데이터베이스를 삭제하거나 데이터를 지우는 일을방지하고 싶다면 일부 명령을 삭제할 수 있다.// no-delete.jsdelete DBCollection.prototype.drop;delete DBCollection.prototype.remove;delete DB.prototype.dropDatabase;$ mongo no-delete.js> db.foo.drop()TypeError
    35. 35. TIP 49 자신이 만든 함수를 추가하라
    36. 36. TIP 49 자신이 만든 함수를 추가하라스스로 만든 함수를 전역 함수나 클래스 인스턴스, 클래스프로토타입에 추가하여 사용할 수 있다.
    37. 37. TIP 49 자신이 만든 함수를 추가하라스스로 만든 함수를 전역 함수나 클래스 인스턴스, 클래스프로토타입에 추가하여 사용할 수 있다.> DB.prototype.getOplogLength = function() { ... };
    38. 38. TIP 49 자신이 만든 함수를 추가하라스스로 만든 함수를 전역 함수나 클래스 인스턴스, 클래스프로토타입에 추가하여 사용할 수 있다.> DB.prototype.getOplogLength = function() { ... };이미 데이터베이스 인스턴스 rsA, rsB 가 있다면?var f = function() { ... };rsA.getOplogSize = f;rsB.getOplogSize = f;
    39. 39. TIP 49 자신이 만든 함수를 추가하라스스로 만든 함수를 전역 함수나 클래스 인스턴스, 클래스프로토타입에 추가하여 사용할 수 있다.> DB.prototype.getOplogLength = function() { ... };이미 데이터베이스 인스턴스 rsA, rsB 가 있다면?var f = function() { ... };rsA.getOplogSize = f;rsB.getOplogSize = f;전역 함수로도 만들 수 있다.getOplogLength = function(db) { ... };
    40. 40. 파일에서자바스크립트 불러오기
    41. 41. 파일에서 자바스크립트 불러오기load()함수는 셸 컨텍스트하에서 실행된다.// hello.jsprint(“Hello, world!”)> load(“hello.js”)Hello, world!
    42. 42. 파일에서 자바스크립트 불러오기load()함수는 셸 컨텍스트하에서 실행된다.// hello.jsprint(“Hello, world!”)> load(“hello.js”)Hello, world!레플리카 셋이나 샤딩을 구성할 때 사용할 수 있다.
    43. 43. TIP 50 스스로 쓴 것을 다시읽는 명령은 단일 접속을 통 해서 수행하라.
    44. 44. TIP 50 스스로 쓴 것을 다시읽는 명령은 단일 접속을 통 해서 수행하라. client C B A
    45. 45. TIP 50 스스로 쓴 것을 다시읽는 명령은 단일 접속을 통 해서 수행하라. client C B A C B A client F E D
    46. 46. TIP 50 스스로 쓴 것을 다시읽는 명령은 단일 접속을 통 해서 수행하라. client C B A 같은 접속을 통 C B A 해 전송해야 하 client 는 요청들의 묶 음을 지정하는 F E D 방식을 사용

    ×