메타데이터 마이그레이션

메타데이터 마이그레이션 (Metadata Migration)

내장 Derby 메타데이터 저장소를 쓰는 평가용 드루이드(Druid) 클러스터를 MySQL이나 PostgreSQL 같은 운영용 메타데이터 저장소로 옮기는 방법을 설명하는 문서예요. 내보내기, 새 저장소 초기화, 테이블 생성, 가져오기, 재시작 단계를 다루어요.

출처: 문서

본문

내장 Derby 메타데이터 저장소를 사용하는 평가용 Druid 클러스터를 운영하다가 MySQL이나 PostgreSQL 같은 더 운영 친화적인 메타데이터 저장소로 마이그레이션하고 싶다면, 이 문서가 필요한 단계를 설명해 줘요.

클러스터 서비스 종료 (Shut down cluster services)

깨끗한 마이그레이션을 보장하려면, 마이그레이션을 수행하는 동안 메타데이터 상태가 변하지 않도록 coordinator가 아닌 서비스들을 종료하세요.

Derby에서 마이그레이션할 때는 coordinator 프로세스가 Derby 데이터베이스를 호스팅하므로 처음에는 계속 실행 중이어야 해요.

메타데이터 내보내기 (Exporting metadata)

Druid는 Derby에서 메타데이터를 내보내서 새 메타데이터 저장소로 가져올 수 있는 CSV 파일을 만드는 Export Metadata 도구를 제공해요.

이 도구는 세그먼트의 딥 스토리지 위치를 재작성하는 옵션도 제공하는데, 이는 딥 스토리지 마이그레이션에 유용해요.

기존 클러스터에서 export-metadata 도구를 실행하고 생성된 CSV 파일을 저장하세요. 내보내기가 성공하면 coordinator를 종료할 수 있어요.

새 메타데이터 저장소 초기화 (Initializing the new metadata store)

데이터베이스 생성 (Create database)

기존 클러스터 메타데이터를 가져오기 전에 새 메타데이터 저장소를 설정해야 해요.

MySQL 익스텐션과 PostgreSQL 익스텐션 문서에 초기 데이터베이스 설정 지침이 있어요.

설정 업데이트 (Update configuration)

Druid 런타임 프로퍼티를 새 메타데이터 구성으로 업데이트하세요.

Druid 테이블 생성 (Create Druid tables)

druid.metadata.storage.connector.createTables를 true로 설정했다면(기본값), 그리고 메타데이터 연결 사용자에게 DDL 권한이 있다면 이 섹션은 무시하고 시작 시 Druid가 메타데이터 테이블을 자동으로 생성하게 할 수 있어요.

Druid는 메타데이터 테이블을 생성하는 metadata-init 도구를 제공해요. Druid 데이터베이스를 초기화한 후 Druid 패키지 루트에서 아래 명령을 실행해 테이블을 초기화할 수 있어요.

아래 예시 명령에서:

  • lib는 Druid lib 디렉터리예요.
  • extensions는 Druid extensions 디렉터리예요.
  • base는 설정의 druid.metadata.storage.tables.base 값에 대응하며, 기본값은 druid예요.
  • --connectURI 파라미터는 druid.metadata.storage.connector.connectURI 값에 대응해요.
  • --user 파라미터는 druid.metadata.storage.connector.user 값에 대응해요.
  • --password 파라미터는 druid.metadata.storage.connector.password 값에 대응해요.

MySQL

cd ${DRUID_ROOT}
java -classpath "lib/*" -Dlog4j.configurationFile=conf/druid/cluster/_common/log4j2.xml -Ddruid.extensions.directory="extensions" -Ddruid.extensions.loadList="[\"mysql-metadata-storage\"]" -Ddruid.metadata.storage.type=mysql -Ddruid.node.type=metadata-init org.apache.druid.cli.Main tools metadata-init --connectURI="<mysql-uri>" --user <user> --password <pass> --base druid

PostgreSQL

cd ${DRUID_ROOT}
java -classpath "lib/*" -Dlog4j.configurationFile=conf/druid/cluster/_common/log4j2.xml -Ddruid.extensions.directory="extensions" -Ddruid.extensions.loadList="[\"postgresql-metadata-storage\"]" -Ddruid.metadata.storage.type=postgresql -Ddruid.node.type=metadata-init org.apache.druid.cli.Main tools metadata-init --connectURI="<postgresql-uri>" --user <user> --password <pass> --base druid

Druid 테이블을 최신 호환 스키마로 업데이트 (Update Druid tables to latest compatible schema)

위와 같은 명령을 사용해 Druid 메타데이터 테이블을 최신 버전으로 업데이트할 수 있어요. 이미 존재하는 테이블은 다시 생성되지 않지만, 필요한 ALTER 문은 여전히 실행돼요.

메타데이터 가져오기 (Import metadata)

테이블 초기화 후에는 대상 데이터베이스에 맞는 가져오기 명령을 참고하세요.

클러스터 재시작 (Restart cluster)

메타데이터 가져오기에 성공하면 이제 클러스터를 다시 시작할 수 있어요.

더 알아보기 (Learn more)