본문 바로가기

전체 글

(70)
MongoDB의 Failover Conclusion MongoDB는 데이터베이스 수준의 Failover를 제공하여 과반수 이상의 서버에 문제가 발생하지 않는 한 가용성이 유지된다. Application에서 MongoDB의 Failover가 발생하더라도 문제가 없도록 Connection String과 Option을 구성하고 Failover 시 발생할 수 있는 에러를 처리하는 로직을 작성해야한다. 이를 검증하기 위해 Failover Test를 진행하며 Application에서 MongoDB에 연결하여 부하를 준 상황에서 rs.stepDown(), db.shutdownServer(), kill -9 MONGODB_PID 를 통해 테스트할 수 있다. Failover 우리가 MongoDB를 사용할 때, 보통 Replica Set의 형태로 사용한..
MongoDB 로그 관리 : logRotate와 로그파일 권한 MongoDB의 경우 mongod.log를 뱉는다. 이 mongod.log는 자동으로 rotate가 되지 않고, rotate를 해주지 않으면 파일의 크기가 계속 커지게 된다. 이때, MongoDB의 admin database에 logRotate 명령을 날려주면 MongoDB가 이쁘게 파일을 변경해준다. replset1:PRIMARY> db.adminCommand({logRotate:1}); { "ok" : 1, "$clusterTime" : { "clusterTime" : Timestamp(1700066060, 1), "signature" : { "hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="), "keyId" : NumberLong(0) } }, "operati..
MongoDB는 1 Petabyte를 저장할 수 있을까? 원문 : https://www.mongodb.com/blog/post/building-inexpensive-petabyte-database-mongodb-and-amazon-web-services-part-1 Building an Inexpensive Petabyte Database with MongoDB and Amazon Web Services: Part 1 | MongoDB Blog Building an Inexpensive Petabyte Database with MongoDB and Amazon Web Services: Part 2 Picking Back Up When we left off in the previous post , we’d chosen a goal of building a pet..
[MongoDB] MongoDB 빌드하기 MongoDB는 오픈소스이므로 코드를 Github에서 확인할 수 있다. MongoDB에 더 깊은 이해를 가지고자 소스를 분석해보고 싶다는 생각을 했다. 그리고 능력이 된다면 Commit까지,,,, Opensource Committor는 내 눈에는 멋있어보인다. 이번에는 소스코드를 다운로드 받고, 소스를 통해 빌드한 뒤 빌드된 바이너리로 MongoDB를 실행시켜보고자 한다. 1. 소스 다운로드 https://github.com/mongodb/mongo GitHub - mongodb/mongo: The MongoDB Database The MongoDB Database. Contribute to mongodb/mongo development by creating an account on GitHub. git..
[MongoDB] 도큐먼트의 배열 필드내 요소 범위를 검사하는 쿼리 MongoDB에서는 $elemMatch 셀렉터를 사용해서 배열 내 요소이 특정 조건을 만족하는 쿼리를 작성할 수 있다. 이 때, $elemMatch로 걸린 조건을 배열 내 하나의 요소라도 만족하면 해당 조건을 가져오게 되는데 다음과 같은 과제가 주어졌을 때에는 어떻게 쿼리를 짜야할 지 모를 수 있다. 배열 안의 모든 요소가 3 ~ 6 사이인 document만 가져와라. db.test.insertMany([ {item: "ABC", ratings: [2, 9], category_id: 10}, {item: "XYZ", ratings: [4, 3], category_id: 10}, {item: "ABC", ratings: [9], category_id: 20}, {item: "ABC", ratings: [9..
VIM 꿀팁 모든 줄 끝에 문자 추가하기 :1,$ㄴ/$/{추가하고 싶은 문자}/
[PICKSHOT] AWS 마이그레이션 후 피드 업로드 안되는 문제 PICKSHOT 어플리케이션의 인프라를 새로운 AWS 계정으로 이전했다. 이후 잘 동작하는 줄 알았더만 피드를 업로드 하는데 문제가 발생했다. 피드 업로드 실패 CS가 올라왔다,,,, 무슨 문제인지 바로 확인해봤다. Production Server의 "The bucket does not allow ACLs" production server에 POST /feeds API를 호출했을 때 "The bucket does not allow ACLs" 메세지와 함께 400 에러가 발생했다. 새로 만든 버킷의 ACLs을 설정해주지 않아 발생한 문제로 판단 해결방법 1. 해당 버킷에 권한을 가진 IAM 유저를 새로 생성해주었다. 2. s3 버킷에 ACL을 사용하도록 편집했다. 3. 개발 서버에 aws key를 해당 I..
[PICKSHOT] AWS 계정 마이그레이션 소프트웨어 마에스트로에서 PICKSHOT 어플리케이션의 지원이 끝나고 AWS 인프라를 개인 계정으로 이전했다. 이전된 항목은 1. PICKSHOT 사진들을 저장하는 S3 Bucket 2. Elastic Beanstalk 서버 3. Database 인스턴스 -> mongodb atlas 서비스로 이전 4. route53 hosting 영역 이다. s3 버킷 이전 기존 s3 버킷을 삭제하고 동일한 버킷을 만들어서 object에 대한 url이 안 바뀌어서 다행히 db의 url을 변경할 필요 없이 db 이전만 하면 되었다. 당연히 s3 버킷을 삭제하고 동일한 이름의 버킷을 바로 생성하는건 불가능했다. 1시간 정도 시간이 지난 후에 동일한 이름의 버킷을 이전하려고 하는 계정에서 만들 수 있었다. Elastic B..