서로 다른 서버 간 MongoDB 컬렉션 데이터 마이그레이션(ubuntu)
·
개발 일상
상황특정 백엔드 서버의 추가 기능 개발을 위해 동일한 테스트 환경 구축 작업을 하며, MongoDB에서 특정 컬렉션만 복사해서 옮겨야 할 일이 생겼다이 경우, 써드파티 프로그램을 이용하는 방법도 있지만, 라이센스 이슈나 상업적 이용 이슈로 인해 CLI를 활용하는 것이 나을 수 있다.이번에는 mongodump, mongorestore 명령어를 이용해 서로 다른 서버에 위치한 MongoDB 간 컬렉션 복사를 진행하였다.작업 환경os: Ubuntu 22.04외부의 특정 원격 서버 A(특정 ip)테스트용 로컬 서버 B (localhost)목적서버 A에 있는 MongoDB의 특정 컬렉션을 로컬 서버 B로 동일하게 복사하되, 컬렉션 데이터와 메타데이터(bson + metadata.json)를 그대로 가져와야 한다...
대량의 파일, 효율적으로 압축 & 전송하기 – 우분투 기반 백업 최적화
·
개발 일상
문제 상황회사 업무로 외부 네트워크와 완전히 분리된 환경(망 분리 환경)에 설치된 특정 솔루션을 점검하러 방문했다. 해당 사이트에서 수집된 정보(이미지, 영상, 로그 등)를 반출해야 하는 상황이었는데, 이러한 환경에서는 외부와의 통신이 차단되어 있기 때문에 SSH, SFTP, 클라우드 업로드 등의 일반적인 데이터 백업 수단을 사용할 수 없었다.물리적인 외장 스토리지를 이용한 데이터 반출이 유일한 방법이었다.이번 작업의 목적은 해당 솔루션에 저장된 다량의 이미지, 로그, 영상 등 이력 데이터를 외장 SSD를 통해 수집하고 반출하는 것이었다.데이터는 날짜별로 수많은 폴더로 나뉘어 저장되어 있으며, 총 파일 수는 약 3만 건 이상, 용량은 약 30GB에 달했다.초기에는 단순하게 GUI를 이용해 마우스로 복사를..
주기적인 MongoDB 서비스 Down 증상 해결
·
개발 일상
문제 발견최근에 사내에서 호스팅하는 서버 중 하나에 접근이 안되어서 서버를 확인해보니 해당 서버 내의 MongoDB 서버가 일정 주기로 다운되는 현상을 발견했다. 문제 원인을 찾기 위해서 mongodb 로그를 확인해보니 다음과 같은 에러 메시지가 있었다참고 환경: ubuntu 22.04 os# mongod.log의 최근 내역 확인sudo tail -n 100 /var/log/mongodb/mongod.log...Failed to write to interim file buffer for full-time diagnostic data capture: /var/lib/mongodb/diagnostic.data/metrics.interim.tempActual exception type: mongo::error..
Ubuntu의 crontab에서 GUI 프로그램 실행 스케쥴 등록하기(ubuntu 22.04 기준)
·
개발 일상
Ubuntu의 crontab에서 GUI 프로그램 실행 스케쥴 등록하기(ubuntu 22.04 기준) 고객사 쪽의 요청으로 자사의 프로그램이 항상 켜져있도록 기능 개발을 해야했다. 24시간 항상 켜져있어야 하는 관제 프로그램이라서 비정상 종료시에도 켜질 수 있도록, 앱이 시스템에서 작동하는지 확인 후, 꺼져 있으면 자동으로 실행하는 스크립트를 python으로 구현하였다. 그리고 그 python이 살아있는지 주기적으로 확인하고 죽었으면 살리는 쉘 스크립트(.sh)를 작성하고 이를 crontab에 등록하여 주기적으로 쉘 스크립트를 실행시키도록 스케쥴링을 걸었다. 참고: electron 기반으로 구동되는 프로그램(javascript 기반) 스크립트의 작동 구조 쉘스크립트.sh(python 스크립트가 살아있는지 ..