본문 바로가기
서버/네트워크 및 인프라

[Oracle Cloud] DB 데이터가 초기화 될 경우

by 방구쟁이 2022. 11. 21.
728x90

 Oracle Cloud 서버에 생성한 데이터베이스에 저장한 정보들이 간혹 초기화 되는 경우에 시도해 볼 만한 방법이 있습니다.

  1. READ__ME_TO_RECOVER_YOUR_DATA로 DB명이 변경되었을 경우 인바운드 규칙 확인하기
  2. 리눅스에서 스케줄러(crontab)를 사용하여 일정 시간에 캐시를 지워주기 (Oracle Cloud 무료버전은 메모리의 용량이 작아 정기적으로 지워 캐시로 인한 메모리 초과를 방지하기)

 

1. 인바운드 규칙 확인

 데이터베이스 명이 READ__ME_TO_RECOVER_YOUR_DATA바뀐 경우는 누군가가 진입하여 DB를 조작한 것으로 인바운드 규칙이 0.0.0.0으로 되어 있는지 확인합니다.

 Oracle Cloud의 경우에는 다음과 같이 확인합니다.

 1) Oracle Cloud 인스턴스 접속하여 인스턴스 선택

인스턴스 접속 화면

2) 인스턴스 정보 오른쪽 부분의 기본 VNIC 중 서브넷 선택 

서브넷 선택

3)보안 목록 중 해당 보안 선택

4) 수신 규칙 목록 확인

5) MongoDB 포트(기본값 : 27012)의 소스 값이 0.0.0.0/0 으로 되어있을 경우 다음과 같이 수신 규칙 추가

  • 소스CIDR :  {특정 ip}/32 
  • IP 프로토콜 : TCP
  • 대상 포트 범위 : 27012 (mongo db port)

 

6) 추가된 수신 규칙 확인

추가된 수신 규칙

 

해당 방법으로 인바운드 규칙을 설정해주면 특정 IP 외에는 DB를 접근할 수 없기 때문에 임의로 'READ__ME_TO_RECOVER_YOUR_DATA' 로 변경되지 않을 것이다.

 

 

2. 캐시 초기화 방법

 1) CentOs를 설치하면 기본적으로 설치되어있으나 없을 경우 yum으로 설치합니다.

yum -y install cronie



 2) 다음 명령어로 crontab 파일을 새로 만들거나 편집합니다.

crontab -e

 

3) 편집창에서 일정 시간마다 캐시를 초기화하도록 하단 명령어를 입력 후 저장합니다.

0 3 * * * sync && echo 3 > /proc/sys/vm/drop_caches

 명령어 : 오전 3시마다 PageCache , dentries  inodes를 초기화

 - page cache : 동일한 데이터에 접근할 경우 메모리에서 바로 가져오도록 하여 I/O 성능을 높이는 cache

 - inodes, dentries파일의 자료구조로 보다 빠른 데이터 접근을 위한 cache

crontab 편집창에 캐시 초기화 스케줄 입력



4) 다음 명령어를 사용하여 crontab 내용을 확인해 입력된 스케줄을 확인합니다.

crontab -l

crontab 스케줄 확인

 

 5) 적용이 확인 되었으면 스케줄러 동작 이전과 이후를 비교

free -m

 

 



참고자료

 [crontab] : https://docs.oracle.com/cd/E24846_01/html/E23088/sysrescron-24589.html#scrolltoc

 [crontab 예시] : https://velog.io/@jay2u8809/Crontab%ED%81%AC%EB%A1%A0%ED%83%AD-%EC%8B%9C%EA%B0%84-%EC%84%A4%EC%A0%95

 [cache] : https://eyeballs.tistory.com/334

감사합니다.

 

728x90

댓글