CM 업그레이드 전에 SCM(Cloudera Manager Server) PostgreSQL DB 를 백업하는 절차다. SCM DB 는 서비스 구성·롤 배치·설정 이력을 담고 있어 클러스터 복구에 가장 중요한 DB 이며, 임베디드·외부 PostgreSQL 모두 절차가 같다.
cat /etc/cloudera-scm-server/db.properties
com.cloudera.cmf.db.type=postgresql
com.cloudera.cmf.db.host=<DB_HOST>:<PORT>
com.cloudera.cmf.db.name=scm
com.cloudera.cmf.db.user=scm
com.cloudera.cmf.db.password=${PASSWORD}
임베디드 PostgreSQL 기본 포트는 7432, 외부 DB 는 보통 5432 다. 이 파일에는 평문 비밀번호가 있으므로 화면 캡처·티켓에 노출하지 않는다.
완전한 정지 상태 백업을 원하면 cloudera-scm-server 를 잠시 중지한다(에이전트는 실행 중이어도 무방). 업그레이드·복구 용도로는 커스텀 포맷(-F c) 이 선택적 복원과 압축에 유리하다.
# plain SQL
pg_dump -h <DB_HOST> -p 7432 -U scm scm > /backup/scm_server_db_backup.$(date +%Y%m%d).sql
# 커스텀 포맷 (권장)
pg_dump -F c -h <DB_HOST> -p 7432 -U scm scm > /backup/scm_db_backup-$(date +%Y%m%d).dump
비밀번호는 명령줄에 넣지 말고 프롬프트 입력 또는 ~/.pgpass(권한 600, 형식 host:port:db:user:password) 를 쓴다.
임베디드 → 외부 DB 이관이나 전체 복구를 대비해 롤 정보도 덤프한다. 비밀번호는 md5 해시로 내보내진다.
pg_dumpall -h <DB_HOST> -p 7432 -U scm --roles-only -f /backup/cloudera_user_roles.sql
Reports Manager(rman), Hive Metastore, Hue, Oozie, Ranger, Ranger KMS, Schema Registry, SMM 등 관리형 서비스 DB 도 같은 방식으로 백업한다.
pg_dump -F c -h <DB_HOST> -p 7432 -U <roleuser> <dbname> > /backup/<dbname>-$(date +%Y%m%d).dump
CM 서버·에이전트 설정과 Management Service 상태 디렉터리도 함께 보관한다.
export CM_BACKUP_DIR="$(date +%F)-CM"; mkdir -p $CM_BACKUP_DIR
sudo -E tar -cf $CM_BACKUP_DIR/cloudera-scm-server.tar /etc/cloudera-scm-server /etc/default/cloudera-scm-server
# 모든 호스트
sudo -E tar -cf $CM_BACKUP_DIR/cloudera-scm-agent.tar --exclude=*.sock \
/etc/cloudera-scm-agent /etc/default/cloudera-scm-agent /var/run/cloudera-scm-agent /var/lib/cloudera-scm-agent
# Service Monitor / Host Monitor / Event Server 호스트
sudo cp -rp /var/lib/cloudera-service-monitor /var/lib/cloudera-service-monitor-$(date +%F)-CM
sudo cp -rp /var/lib/cloudera-host-monitor /var/lib/cloudera-host-monitor-$(date +%F)-CM
sudo cp -rp /var/lib/cloudera-scm-eventserver /var/lib/cloudera-scm-eventserver-$(date +%F)-CM
config.ini 는 에이전트 업그레이드 뒤 복원하는 절차가 있으므로 반드시 백업한다.
덤프 파일 크기가 0 이 아닌지, 종료 코드가 0 인지 확인하고 가능하면 테스트 인스턴스에 복원해 본다.
pg_restore -C -h <DB_HOST> -p 5432 -d postgres -U scm -v /backup/scm_db_backup-YYYYMMDD.dump
pg_dump 버전은 대상 PostgreSQL 서버 버전 이상이어야 한다.