데이터 마이그레이션<br />- (CUBRID를 타겟DB로)<br />작성자: 이동현<br />소속팀 / 상위부서: CUBRID 개발랩<br />작성년월일: 2009.11.26<br />문서범위(사외 공개) <br />...
0. 마이그레이션 개요<br /> - 데이터 옮길 때 무엇을 고려해야 하나?<br />
0.  마이그레이션 개요<br />* 마이그레이션을 왜 하나?<br /> - 테이블 스키마 구조의 변경<br /> - DB 제품의 변경<br /> - 둘 다<br />1. 데이터 매핑<br /> - 서비스 중인 소스와 ...
1. 데이터 매핑<br /> - 어디에서 어디로?<br />
1. 데이터 매핑<br />고려 사항<br />1. 소스와 타겟의 테이블 구조가 같은가?<br />?<br />2. 테이블 구조가 다를 경우타겟에 추가/제거되는 컬럼과 그 값은 소스 데이터의 값을 가지고 결정할 수 있는...
1. 데이터 매핑<br />고려 사항<br />3. 소스 테이블과 타겟 테이블의 DB가 다를 경우 매핑 컬럼 간 타입을 정의하고 확인한다.<br />  - 호환 타입<br />  - 타입 간 제약 조건<br />  - ...
2. 실행 계획 수립<br /> - 순서, 명령어, 시간<br />
2. 실행 계획 수립<br />1. 실행 순서를 정한다<br />소스 DB<br />1<br />file copy<br />중간 <br />데이터<br />중간 <br />데이터<br />2<br />3<br />타겟D...
2. 실행 계획 수립<br />2. 실행  명령어를 정한다<br />unload : 소스 테이블과 타겟 테이블의 구조가 다르다면 “데이터 매핑” 규칙에 의해 loaddb용 파일을 생성하는 프로그램 작성 후 수행<br /...
2. 실행 계획 수립<br />3. 실행 시간을 살핀다<br />- 실행하려는 데이터량과 실행 시간을 미리 측정하고,<br />이를 토대로 실행 예측 시간을 수립<br />  . unload 시간<br />  . scp...
3. 실행 스크립트 작성<br /> - 실행 순간에는 실행 자체에만 집중하자<br />
3. 실행 스크립트 작성<br />모든 실행 순서를 스크립트로 자동화하자<br />* 실제 수행할 장비에서 미리 확인할 사항<br />- 실행 환경 (환경변수)<br />- 파일 카피 발생시 디렉토리의<br />   파...
4. 제한 시간 이내 마이그레이션<br /> - 처리할 양은 많고, 주어진 시간은 부족하다. <br />
4. 제한 시간 이내 마이그레이션<br />고려 사항 <br />마이그레이션 작업을 모두 하기엔 서비스 정지 시간이 너무 짧다<br />
4. 제한 시간 이내 마이그레이션<br />마이그레이션 실행 계획 순서<br />1)서비스 정지 전, 2)서비스 정지 중, 3)서비스 시작 이후의 3단계로 나누어 작업<br />1) 작업 스크립트 준비<br />2) 스...
4. 제한 시간 이내 마이그레이션<br />스냅샷 로딩<br />- 스냅샷 DB에서 덧글 DB에 로딩<br />스냅샷 DB2<br />스냅샷 DB1<br />스냅샷 DBn<br />……<br />타겟DB1<br />타겟...
4. 제한 시간 이내 마이그레이션<br />로그 테이블 반영<br />- 로그 테이블을 덧글DB에 반영<br />타겟DB1<br />로그반영 프로세스<br />타겟DB 2<br />* 어느 DB?<br />……<br /...
5. 데이터 검증<br /> - 소스와 타겟의 데이터 비교<br />
5. 데이터 검증<br />테이블 별 데이터 비교<br />- 소스와 타겟에서 생성한 데이터 파일을 sort 한 후 diff로 비교<br /> 예) sort srcA.txt &gt; srcB.txt; sort tgtA....
Thank you.<br />
Upcoming SlideShare
Loading in...5
×

Cubrid Inside 5th Session 3 Migration

1,250

Published on

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,250
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
8
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Cubrid Inside 5th Session 3 Migration

  1. 1. 데이터 마이그레이션<br />- (CUBRID를 타겟DB로)<br />작성자: 이동현<br />소속팀 / 상위부서: CUBRID 개발랩<br />작성년월일: 2009.11.26<br />문서범위(사외 공개) <br />ⓒ 2009 NHN CORPORATION<br />
  2. 2. 0. 마이그레이션 개요<br /> - 데이터 옮길 때 무엇을 고려해야 하나?<br />
  3. 3. 0. 마이그레이션 개요<br />* 마이그레이션을 왜 하나?<br /> - 테이블 스키마 구조의 변경<br /> - DB 제품의 변경<br /> - 둘 다<br />1. 데이터 매핑<br /> - 서비스 중인 소스와 새로 구성할 타겟 간의 데이터 매핑 관계<br />2. 실행 계획 수립<br /> - 실행 순서, 실행 명령어, 실행시간 예측 <br />3. 실행 스크립트 작성<br /> - 순서별 실행<br />4. 제한 시간 이내에 마이그레이션<br />- 스냅샷 테이블 + 로그 테이블<br />5. 데이터 검증<br /> - 카운트<br />
  4. 4. 1. 데이터 매핑<br /> - 어디에서 어디로?<br />
  5. 5. 1. 데이터 매핑<br />고려 사항<br />1. 소스와 타겟의 테이블 구조가 같은가?<br />?<br />2. 테이블 구조가 다를 경우타겟에 추가/제거되는 컬럼과 그 값은 소스 데이터의 값을 가지고 결정할 수 있는가?<br />
  6. 6. 1. 데이터 매핑<br />고려 사항<br />3. 소스 테이블과 타겟 테이블의 DB가 다를 경우 매핑 컬럼 간 타입을 정의하고 확인한다.<br /> - 호환 타입<br /> - 타입 간 제약 조건<br /> - 타입의 길이<br /> - 특수 문자의 확인<br />
  7. 7. 2. 실행 계획 수립<br /> - 순서, 명령어, 시간<br />
  8. 8. 2. 실행 계획 수립<br />1. 실행 순서를 정한다<br />소스 DB<br />1<br />file copy<br />중간 <br />데이터<br />중간 <br />데이터<br />2<br />3<br />타겟DB<br />
  9. 9. 2. 실행 계획 수립<br />2. 실행 명령어를 정한다<br />unload : 소스 테이블과 타겟 테이블의 구조가 다르다면 “데이터 매핑” 규칙에 의해 loaddb용 파일을 생성하는 프로그램 작성 후 수행<br />scp : 원격으로 파일 카피를 하기 위해서 사용하는데, 암호를 물어보지 않고 전송하려면 다음의 3가지 단계를 거친다.<br /> 1) public key 생성 : ssh-keygen –t rsa<br /> 2) 1)에서 생성된 id_rsa.pub를 타겟 장비의 ~unixID/.ssh/authorized_keys의 이름으로 복사한다.<br /> 3) authorized_keys가 이미 존재한다면 id_rsa.pub의 내용을 뒤에 붙임<br />load: cubridloaddb --no-oid -u dba --load-only --no-logging --periodic-commit=10000 -d data_file DB_NAME<br />
  10. 10. 2. 실행 계획 수립<br />3. 실행 시간을 살핀다<br />- 실행하려는 데이터량과 실행 시간을 미리 측정하고,<br />이를 토대로 실행 예측 시간을 수립<br /> . unload 시간<br /> . scp시간<br /> . load 시간<br />
  11. 11. 3. 실행 스크립트 작성<br /> - 실행 순간에는 실행 자체에만 집중하자<br />
  12. 12. 3. 실행 스크립트 작성<br />모든 실행 순서를 스크립트로 자동화하자<br />* 실제 수행할 장비에서 미리 확인할 사항<br />- 실행 환경 (환경변수)<br />- 파일 카피 발생시 디렉토리의<br /> 파일 생성 권한<br />- 프로그램 라이브러리의 버전<br />- 언어 인코딩 환경<br />- 응용 프로그램에서 url접속시인코딩 설정예) jdbc:cubrid:123.123.123.123 :11111:DBNAME:user:pwd:charset=utf8<br />
  13. 13. 4. 제한 시간 이내 마이그레이션<br /> - 처리할 양은 많고, 주어진 시간은 부족하다. <br />
  14. 14. 4. 제한 시간 이내 마이그레이션<br />고려 사항 <br />마이그레이션 작업을 모두 하기엔 서비스 정지 시간이 너무 짧다<br />
  15. 15. 4. 제한 시간 이내 마이그레이션<br />마이그레이션 실행 계획 순서<br />1)서비스 정지 전, 2)서비스 정지 중, 3)서비스 시작 이후의 3단계로 나누어 작업<br />1) 작업 스크립트 준비<br />2) 스냅샷 DB 백업<br />3) 스냅샷 로딩, 로그 테이블 반영<br />
  16. 16. 4. 제한 시간 이내 마이그레이션<br />스냅샷 로딩<br />- 스냅샷 DB에서 덧글 DB에 로딩<br />스냅샷 DB2<br />스냅샷 DB1<br />스냅샷 DBn<br />……<br />타겟DB1<br />타겟DB 2<br />……<br />……<br />타겟DB n<br />로딩할 데이터 – CUBRID loaddb포맷<br />
  17. 17. 4. 제한 시간 이내 마이그레이션<br />로그 테이블 반영<br />- 로그 테이블을 덧글DB에 반영<br />타겟DB1<br />로그반영 프로세스<br />타겟DB 2<br />* 어느 DB?<br />……<br />……<br />타겟DB 8<br />*DML Type<br />INSERT?<br />UPDATE?<br />DELETE?<br />반영할 로그 테이블들<br />
  18. 18. 5. 데이터 검증<br /> - 소스와 타겟의 데이터 비교<br />
  19. 19. 5. 데이터 검증<br />테이블 별 데이터 비교<br />- 소스와 타겟에서 생성한 데이터 파일을 sort 한 후 diff로 비교<br /> 예) sort srcA.txt &gt; srcB.txt; sort tgtA.txt &gt;tgtB.txt<br /> diff srcB.txt tgtB.txt<br />테이블 별 전체 카운트 비교<br />- 소스 테이블과 타겟 테이블의 각 카운트를 텍스트로 내린 후 diff로 비교<br />
  20. 20. Thank you.<br />
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×