CDP 클러스터를 완전히 재구축하면서 외부 PostgreSQL 에 있던 scm, metastore, hue, oozie, ranger, rangerkms, rman, yqm 데이터베이스를 지우고 같은 소유자·인코딩·로케일로 다시 만든 절차다. 롤은 그대로 두므로 비밀번호는 유지된다.
서비스 중지 → 백업 → 연결 정리 → DROP → CREATE → 스키마 초기화 → 서비스 기동 순이다. 연결이 살아 있으면 DROP 이 막힌다.
# 각 노드
systemctl stop cloudera-scm-agent
# CM 서버
systemctl stop cloudera-scm-server
mkdir -p /backup
for db in hue metastore oozie ranger rangerkms rman scm yqm; do
pg_dump -h localhost -U postgres "$db" > "/backup/${db}_$(date +%Y%m%d).sql"
done
\c postgres
SELECT pg_terminate_backend(pid) FROM pg_stat_activity
WHERE datname IN ('hue','metastore','oozie','ranger','rangerkms','rman','scm','yqm') AND pid <> pg_backend_pid();
DROP DATABASE hue WITH (FORCE);
DROP DATABASE metastore WITH (FORCE);
DROP DATABASE oozie WITH (FORCE);
DROP DATABASE ranger WITH (FORCE);
DROP DATABASE rangerkms WITH (FORCE);
DROP DATABASE rman WITH (FORCE);
DROP DATABASE scm WITH (FORCE);
DROP DATABASE yqm WITH (FORCE);
CREATE DATABASE hue OWNER hue ENCODING 'UTF8' LC_COLLATE 'en_US.UTF-8' LC_CTYPE 'en_US.UTF-8' TEMPLATE template0;
CREATE DATABASE metastore OWNER hive ENCODING 'UTF8' LC_COLLATE 'en_US.UTF-8' LC_CTYPE 'en_US.UTF-8' TEMPLATE template0;
CREATE DATABASE oozie OWNER oozie ENCODING 'UTF8' LC_COLLATE 'en_US.UTF-8' LC_CTYPE 'en_US.UTF-8' TEMPLATE template0;
CREATE DATABASE ranger OWNER rangeradmin ENCODING 'UTF8' LC_COLLATE 'en_US.UTF-8' LC_CTYPE 'en_US.UTF-8' TEMPLATE template0;
CREATE DATABASE rangerkms OWNER rangerkms ENCODING 'UTF8' LC_COLLATE 'en_US.UTF-8' LC_CTYPE 'en_US.UTF-8' TEMPLATE template0;
CREATE DATABASE rman OWNER rman ENCODING 'UTF8' LC_COLLATE 'en_US.UTF-8' LC_CTYPE 'en_US.UTF-8' TEMPLATE template0;
CREATE DATABASE scm OWNER scm ENCODING 'UTF8' LC_COLLATE 'en_US.UTF-8' LC_CTYPE 'en_US.UTF-8' TEMPLATE template0;
CREATE DATABASE yqm OWNER yqm ENCODING 'UTF8' LC_COLLATE 'en_US.UTF-8' LC_CTYPE 'en_US.UTF-8' TEMPLATE template0;
\l
WITH (FORCE) 는 PostgreSQL 13 이상이며 잔여 세션을 끊고 드랍한다. 로케일을 지정하려면 TEMPLATE template0 이 필요하다.
빈 DB 만으로는 서비스가 뜨지 않는다. scm 을 가장 먼저 초기화하고 CM 서버를 띄우면, 나머지 서비스 스키마는 CM 의 Add Service 마법사가 대부분 자동 생성한다.
/opt/cloudera/cm/schema/scm_prepare_database.sh postgresql scm scm ${SCM_DB_PASSWORD}
systemctl start cloudera-scm-server
수동으로 해야 할 때는 Hive schematool -dbType postgres -initSchema, Oozie ooziedb.sh create -run, Ranger Admin setup.sh, Ranger KMS db_setup.py(새 마스터키가 생긴다), Hue hue syncdb && hue migrate 를 쓴다.
rangerkms 를 지우지 않는다.pg_dump 백업은 남긴다.