Cubrid Inside 5th Session 3 Migration
Upcoming SlideShare
Loading in...5
×
 

Cubrid Inside 5th Session 3 Migration

on

  • 1,823 views

 

Statistics

Views

Total Views
1,823
Views on SlideShare
1,818
Embed Views
5

Actions

Likes
0
Downloads
5
Comments
0

2 Embeds 5

http://www.slideshare.net 4
http://www.techgig.com 1

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Cubrid Inside 5th Session 3 Migration Cubrid Inside 5th Session 3 Migration Presentation Transcript

  • 데이터 마이그레이션
    - (CUBRID를 타겟DB로)
    작성자: 이동현
    소속팀 / 상위부서: CUBRID 개발랩
    작성년월일: 2009.11.26
    문서범위(사외 공개)
    ⓒ 2009 NHN CORPORATION
  • 0. 마이그레이션 개요
    - 데이터 옮길 때 무엇을 고려해야 하나?
  • 0. 마이그레이션 개요
    * 마이그레이션을 왜 하나?
    - 테이블 스키마 구조의 변경
    - DB 제품의 변경
    - 둘 다
    1. 데이터 매핑
    - 서비스 중인 소스와 새로 구성할 타겟 간의 데이터 매핑 관계
    2. 실행 계획 수립
    - 실행 순서, 실행 명령어, 실행시간 예측
    3. 실행 스크립트 작성
    - 순서별 실행
    4. 제한 시간 이내에 마이그레이션
    - 스냅샷 테이블 + 로그 테이블
    5. 데이터 검증
    - 카운트
  • 1. 데이터 매핑
    - 어디에서 어디로?
  • 1. 데이터 매핑
    고려 사항
    1. 소스와 타겟의 테이블 구조가 같은가?
    ?
    2. 테이블 구조가 다를 경우타겟에 추가/제거되는 컬럼과 그 값은 소스 데이터의 값을 가지고 결정할 수 있는가?
  • 1. 데이터 매핑
    고려 사항
    3. 소스 테이블과 타겟 테이블의 DB가 다를 경우 매핑 컬럼 간 타입을 정의하고 확인한다.
    - 호환 타입
    - 타입 간 제약 조건
    - 타입의 길이
    - 특수 문자의 확인
  • 2. 실행 계획 수립
    - 순서, 명령어, 시간
  • 2. 실행 계획 수립
    1. 실행 순서를 정한다
    소스 DB
    1
    file copy
    중간
    데이터
    중간
    데이터
    2
    3
    타겟DB
  • 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
  • 2. 실행 계획 수립
    3. 실행 시간을 살핀다
    - 실행하려는 데이터량과 실행 시간을 미리 측정하고,
    이를 토대로 실행 예측 시간을 수립
    . unload 시간
    . scp시간
    . load 시간
  • 3. 실행 스크립트 작성
    - 실행 순간에는 실행 자체에만 집중하자
  • 3. 실행 스크립트 작성
    모든 실행 순서를 스크립트로 자동화하자
    * 실제 수행할 장비에서 미리 확인할 사항
    - 실행 환경 (환경변수)
    - 파일 카피 발생시 디렉토리의
    파일 생성 권한
    - 프로그램 라이브러리의 버전
    - 언어 인코딩 환경
    - 응용 프로그램에서 url접속시인코딩 설정예) jdbc:cubrid:123.123.123.123 :11111:DBNAME:user:pwd:charset=utf8
  • 4. 제한 시간 이내 마이그레이션
    - 처리할 양은 많고, 주어진 시간은 부족하다.
  • 4. 제한 시간 이내 마이그레이션
    고려 사항
    마이그레이션 작업을 모두 하기엔 서비스 정지 시간이 너무 짧다
  • 4. 제한 시간 이내 마이그레이션
    마이그레이션 실행 계획 순서
    1)서비스 정지 전, 2)서비스 정지 중, 3)서비스 시작 이후의 3단계로 나누어 작업
    1) 작업 스크립트 준비
    2) 스냅샷 DB 백업
    3) 스냅샷 로딩, 로그 테이블 반영
  • 4. 제한 시간 이내 마이그레이션
    스냅샷 로딩
    - 스냅샷 DB에서 덧글 DB에 로딩
    스냅샷 DB2
    스냅샷 DB1
    스냅샷 DBn
    ……
    타겟DB1
    타겟DB 2
    ……
    ……
    타겟DB n
    로딩할 데이터 – CUBRID loaddb포맷
  • 4. 제한 시간 이내 마이그레이션
    로그 테이블 반영
    - 로그 테이블을 덧글DB에 반영
    타겟DB1
    로그반영 프로세스
    타겟DB 2
    * 어느 DB?
    ……
    ……
    타겟DB 8
    *DML Type
    INSERT?
    UPDATE?
    DELETE?
    반영할 로그 테이블들
  • 5. 데이터 검증
    - 소스와 타겟의 데이터 비교
  • 5. 데이터 검증
    테이블 별 데이터 비교
    - 소스와 타겟에서 생성한 데이터 파일을 sort 한 후 diff로 비교
    예) sort srcA.txt > srcB.txt; sort tgtA.txt >tgtB.txt
    diff srcB.txt tgtB.txt
    테이블 별 전체 카운트 비교
    - 소스 테이블과 타겟 테이블의 각 카운트를 텍스트로 내린 후 diff로 비교
  • Thank you.