Sonar DB 복제 도구

Table of Contents

Sonar 데이터베이스 복제 도구(Sonar DB Copy Tool)은 SonarQube Enterprise EditionSupported in Enterprise Edition에 포함되어 있으며, 서로 다른 데이터베이스 벤더 간 마이그레이션 프로세스를 지원합니다. 만약 Oracle 데이터베이스를 사용하던 SonarQube 인스턴스를 히스토리 데이터의 누락없이 MySQL 데이터베이스로 이전한다고 가정하면 , Sonar 데이터베이스 복제 도구는 매우 유용합니다. 다음 절에서 source 및 target SonarQube 데이터베이스 인스턴스에 대해 이야기합니다. source 인스턴스는 사용을 중지하고자 하는 데이터베이스를 사용하는 인스턴스이며, target 인스턴스는 새로운 데이터베이스를 사용하는 인스턴스입니다.

Sonar 데이터베이스 복제 도구는 다음과 같이 동작합니다:

  • source 데이터베이스와 target 데이터베이스를 연결합니다.
  • source 데이터베이스를 테이블 단위로 읽습니다.
  • target 데이터베이스에 테이블 단위로 기록합니다.
  • target 데이터베이스에 sequences, index 등의 정보를 다시 생성합니다.

설치

Sonar DB Copy Tool은 독립적인 JAR 파일로 제공됩니다. Source 혹은 Target SonarQube 인스턴스에 해당 파일을 설치하지 않도록 주의합니다. Sonar DB Copy Tool JAR 파일을 임의의 머신에 복사한 후, 해당 머신이 source 및 target SonarQube 인스턴스에 접근 가능하도록 합니다.

데이터베이스 복제 준비 단계

이 과정을 통해 SonarQube 서버가 테이블(컨텐츠가 없는)을 생성하고, source 및 target 데이터베이스가 동일한 데이터베이스 스키마를 가지도록 합니다.

  1. Source/Target 데이터베이스가 설치되어 실행 중이어야 합니다.
  2. SonarQube 인스턴스는 데이터베이스 복제 준비 및 실행 단계에서 일시 정지되어 있어야 합니다.
  3. Target 데이터베이스에 빈 스키마를 생성합니다(테이블 없음).

  4. SonarQube 인스턴스가 target 데이터베이스에 연결되도록 설정합니다(conf/sonar.properties 속성 변경).

  5. SonarQube를 실행해 비어있는 target 데이터베이스에 접속하도록 합니다.
  6. SonarQube 인스턴스가 실행된 후, SonarQube 인스턴스를 반드시 종료합니다.
  7. 이 단계에서 source/target 데이터베이스에는 완전히 동일한 테이블 리스트가 존재합니다.
  8. SonarQube를 재시작하기 전에 target 데이터베이스의 데이터베이스 통계를 초기화합니다.


SonarQube versions

위의 4, 5, 6 단계를 분리된 SonarQube 인스턴스에서 수행한 경우, 최초의 SonarQube 버전과 동일한 버전을 사용했는지 확인합니다.


데이터베이스 복제 실행 단계

다음 명령어를 실행합니다:

java -jar sonar-db-copy-1.1-jar-with-dependencies.jar

 

파라미터:

Name

Value

Required ?

Description

-driverDest<jdbc driver>선택target 데이터베이스의 JDBC Driver
-driverSrc<jdbc driver>선택source 데이터베이스의 JDBC Driver
-help  parameter help 출력
-urlSrc<jdbc url>필수source 데이터베이스의 JDBC URL
-userSrc<login>필수source 데이터베이스의 username
-pwdSrc<password>필수source 데이터베이스의 password
-urlDest<jdbc url>필수target 데이터베이스의 JDBC URL
-userDest<login>필수target 데이터베이스의 username
-pwdDest<password>필수target 데이터베이스의 password
-T 선택마이그레이션 대상 테이블 (,로 구분)

실행 예시

가장 먼저, sonar-db-copy 명령어는 입력한 URL에 대한 접근 가능 여부 및 데이터베이스 버전을 확인합니다:

버전이 다른 경우: 어플리케이션은 중지됩니다.

복제를 재시작하는 경우, target 데이터베이스 버전은 0이 됩니다: 오류 상황은 아니며, 복제는 계속됩니다.

이후 source 및 target(destination) 데이터베이스의 테이블을 검색합니다:

누락된 테이블이 존재하는 경우, 다음 로그를 표시합니다:

다음으로, sonar-db-copy 는 target 데이터베이스의 테이블의 길이를 줄이고, 제거한 테이블 수를 표시합니다:

물론, 누락된 테이블은 제거하지 않습니다:

다음으로, sonar-db-copy는 source 데이터베이스의 데이터를 target 데이터베이스로 복제하고, 복제 후 target 데이터베이스의 순서를 조정합니다:

누락된 테이블이 존재하는 경우:

복제 중 오류가 발생하는 경우, 오류 메시지를 표시하고 복제를 진행합니다:

마지막으로 sonar-db-copy는 source 데이터베이스와 target 데이터베이스의 차이를 표시합니다.


© 2017-2018 Moses Kim.

별도의 언급이 없는 한, 이 스페이스의 컨텐츠는 크리에이티브 커먼즈 저작자표시-비영리-동일조건변경허락 4.0 국제 라이선스에 따라 이용할 수 있습니다.
SONARQUBE는 SonarSource SA의 트레이드 마크입니다. 모든 트레이트 마크 및 저작권은 각 소유자의 소유물입니다.

::: SonarQube 관련 문의 : 이메일 :::