Vertica

Vertica

개요

본 문서는 사용 중인 Vertica를 SCP-V2에 마이그레이션하는 방법을 가이드합니다.
Data Migration 도구와 Data 검증 방법을 먼저 소개하고 , 시나리오 기반으로 Migration 예제를 명령어까지 안내합니다

사전 작업

  • 마이그레이션할 대상 TO-BE DB 생성 시 CATALOG, DATA, TEMP 영역을 AS-IS와 동일한 디렉토리 경로에 생성
  • AS-IS과 동일한 Vertica version 설치(hotfixes 까지)
  • 노드 수, 노드 명, DB명이 동일
  • AS-IS 노드와 TO-BE 노드 간에 패스워드없이 통신이 가능
  • Cluster 복제 시 네트워크 성능이 보장되어야 빠른 전환 가능

마이그레이션 절차


시나리오

  • 환경: On-premises에서 Vertica 운영, Data크기 500GB, 분석 업무
  • 요건: Samsung Cloud Platform v2 Vertica(DbaaS)로 이전, 서비스 중단시간은 최대 24시간 가능

Migration 도구

vbr_copy_cluster

  • Vertica에 탑재된 백업 유틸리티인 vbr 을 통해 로컬에 백업된 데이터를 Samsung Cloud Platform v2 환경에 구성된 Vertica 클러스터로 복제하는 기능을 사용하는 방법입니다.
  • copycluster 라는 vbr 옵션을 사용하여 한 Vertica 클러스터에서 다른 Vertica 클러스터로 전체 데이터베이스를 복사할 수 있습니다.
  • Vertica 는 단일 작업으로 소스 클러스터에서 데이터를 백업하고 데이터를 대상 클러스터로 복원합니다.
  • copycluster 옵션을 포함한 vbr 스크립트로 데이터를 복사할 때 대상 클러스터의 모든 데이터를 덮어쓰게 됩니다.

1. Migration 계획 수립

  • 전체 Database를 이관하므로 Cluster 복제 방식인 vbr copy_cluster를 활용합니다.
  • Source Vertica는 online 상태로 이관이 가능하지만, vbr을 통해 백업된 데이터를 이관하게 되므로 마이그레이션 작업 시간동안은 데이터 정합성을 위해 조회 기능만 수행해야 합니다. 마지막 백업 이후 변경된 데이터는 이관되지 않습니다.
  • Source 노드와 Target 노드 간 패스워드없이 통신이 가능해야 활용 가능합니다.
  • 데이터에 대한 별도 가공 없이 전송하게 되므로 데이터 검증은 별도로 진행하지 않아도 되지만, 데이터 검증이 반드시 필요한 경우에는 각 테이블별 건수 비교 및 컬럼별 sum을 통해 데이터 검증이 가능합니다. (숫자 형식은 sum, 문자 형식은 문자길이의 sum 등의 방식)

2. Target 클러스터 생성

  • Samsung Cloud Platform Console을 통해 아래 메뉴로 이동하여 Target DB를 생성합니다.
    Data Analytics > Vertica(DBaaS) > Vertica생성


3. Target Database 에 Source Database 와 동일한 이름의 database 를 생성

Target Database 에 Source Database 와 동일한 이름의 database 를 생성

  • 예) htest

    [Target DB]
    $ /opt/vertica/bin/admintools -t create_db -s 192.168.xx.x -d htest
    Info: no password specified, using none
    Database with 1 or 2 nodes cannot be k-safe and it may lose data if it crashes
    Database htest created successfully.


4. Target Database 중지


[Target DB]
$ /opt/vertica/bin/admintools -t stop_db -d htest -p htestpasswd
Info: no password specified, using none
Connecting to database
Issuing shutdown command to database
Database htest stopped successfully.


5. Source Database 에서 configuration file 생성

/opt/vertica/share/vbr/example_configs/copycluster.ini 파일을 참고하여 configration file을 생성


[Source DB]
$ vi copycluster.ini
--- copycluster.ini
[Misc]
snapshotName = CopyTest
tempDir = /tmp/vbr
retryCount = 2
retryDelay = 1
passwordFile = /home/htest/.backup_pwd

[Database]
dbName = htest
dbUser = htest
dbPromptForPassword = False

[Transmission]
port_rsync = 50000

[Mapping]
v_htest_node0001 = 192.168.xx.x

[Source DB]
$ vi /home/htest/.backup+pwd
[Passwords]
dbPassword = password!


6. Source Database 에서 vbr 스크립트 실행

앞에서 만든 configuration file(copycluster.ini)를 가지고 –copycluster 옵션으로 vbr 스크립트를 실행

[Source DB]
$ /opt/vertica/bin/vbr --config-file copycluster.ini --task copycluster
Starting copy of database htest.
Participating nodes: v_htest_node0001.
Snapshotting database.
Snapshot complete.
Determining what data to copy.
[==========================================] 100%
Approximate bytes to copy : 627459683 of 627459683 total.
Syncing data to destination cluster.
[==========================================] 100%
Reinitializing destination catalog.
copycluster complete!


7. Target Database 시작 및 데이터 확인

Target Database를 시작

[Target DB]
$ /opt/vertica/bin/admintools -t start_db -d htest -p htestpasswd
Info: no password specified, using none
Starting nodes:
v_hest_node0001 (192.168.xx.x) Starting Vertica on all nodes. Please wait, database with large catalog may take a while to initialize.
Node Status: v_htest_node0001: (DOWN)
Node Status: v_htest_node0001: (DOWN)
Node Status: v_htest_node0001: (DOWN)
Node Status: v_htest_node0001: (DOWN)
Node Status: v_htest_node0001: (UP)
Database htest started successfully