3. 0. 마이그레이션 개요 * 마이그레이션을 왜 하나? - 테이블 스키마 구조의 변경 - DB 제품의 변경 - 둘 다 1. 데이터 매핑 - 서비스 중인 소스와 새로 구성할 타겟 간의 데이터 매핑 관계 2. 실행 계획 수립 - 실행 순서, 실행 명령어, 실행시간 예측 3. 실행 스크립트 작성 - 순서별 실행 4. 제한 시간 이내에 마이그레이션 - 스냅샷 테이블 + 로그 테이블 5. 데이터 검증 - 카운트
8. 2. 실행 계획 수립 1. 실행 순서를 정한다 소스 DB 1 file copy 중간 데이터 중간 데이터 2 3 타겟DB
9. 2. 실행 계획 수립 2. 실행 명령어를 정한다 unload : 소스 테이블과 타겟 테이블의 구조가 다르다면 “데이터 매핑” 규칙에 의해 loaddb용 파일을 생성하는 프로그램 작성 후 수행 scp : 원격으로 파일 카피를 하기 위해서 사용하는데, 암호를 물어보지 않고 전송하려면 다음의 3가지 단계를 거친다. 1) public key 생성 : ssh-keygen –t rsa 2) 1)에서 생성된 id_rsa.pub를 타겟 장비의 ~unixID/.ssh/authorized_keys의 이름으로 복사한다. 3) authorized_keys가 이미 존재한다면 id_rsa.pub의 내용을 뒤에 붙임 load: cubridloaddb --no-oid -u dba --load-only --no-logging --periodic-commit=10000 -d data_file DB_NAME
10. 2. 실행 계획 수립 3. 실행 시간을 살핀다 - 실행하려는 데이터량과 실행 시간을 미리 측정하고, 이를 토대로 실행 예측 시간을 수립 . unload 시간 . scp시간 . load 시간
12. 3. 실행 스크립트 작성 모든 실행 순서를 스크립트로 자동화하자 * 실제 수행할 장비에서 미리 확인할 사항 - 실행 환경 (환경변수) - 파일 카피 발생시 디렉토리의 파일 생성 권한 - 프로그램 라이브러리의 버전 - 언어 인코딩 환경 - 응용 프로그램에서 url접속시인코딩 설정예) jdbc:cubrid:123.123.123.123 :11111:DBNAME:user:pwd:charset=utf8
19. 5. 데이터 검증 테이블 별 데이터 비교 - 소스와 타겟에서 생성한 데이터 파일을 sort 한 후 diff로 비교 예) sort srcA.txt > srcB.txt; sort tgtA.txt >tgtB.txt diff srcB.txt tgtB.txt 테이블 별 전체 카운트 비교 - 소스 테이블과 타겟 테이블의 각 카운트를 텍스트로 내린 후 diff로 비교