운영 중인 MySQL기반의XE사이트를 CUBRID로 전환하고 싶을 때 CUBRID Migration Tookit을 사용하여 마이그레이션 하는 가이드를 소개 한다.
1. 설치 환경 준비
[그림1]과 같이 타겟 장비의 환경을 구축하기 위해 순서대로 수행한다.
[그림1] 로컬 장비와 타겟 장비의 환경
① CUBRID엔진 설치 및 DB 생성하기
타겟 장비에는 CUBRID 최신 버전을 설치한다.(Linux에서 CUBRID 설치하기 매뉴얼)
CUBRID Engine 다운로드 하기 à http://ftp.cubrid.org/CUBRID_Engine/
그리고 로컬 장비에 설치된 CUBRID Manager{이하 CM}를 사용하여 운영할 데이터베이스
(xe_db)를 생성한다. (CUBRIDManager에서 생성하기 메뉴얼)
② 웹서버 + PHP + CUBRID-PHP-Driver 설치하기
타겟장비에 웹서버와 PHP를 설치하고 phpinfo()함수를사용한 페이지를 생성한다.
CUBRID-PHP-Driver를 추가 설치 한 후 phpinfo()페이지에서 [그림2]를 확인한다.
[그림2] CUBRID-PHP-Driver 설치 후 phpinfo() 확인
2. 마이그레이션 도구
MySQL의 스키마/데이터를CUBRID로 이관하기 위해서 CUBRID Migration Toolkit(이하 CMT) 이라는 도구를 사용한다.
이는 Java 기반의 GUI도구이며,CUBRID 공식 페이지 또는 FTP서버에서 다운로드 한다.
(CUBRID 공식 홈페이지에서 다운로드 하기/ FTP서버에서 다운로드 하기)
3. MySQL 데이터를 XML포맷으로 덤프하기
MySQL XML 덤프 파일을만들기 위해 아래와 같은 명령어를 실행한다.
C:Program FilesMySQLMySQL Server 5.5bin> mysqldump --xml --databases xe_db -u root -p --hex-blob > xe_db.xml |
4. CMT로 XML파일을 로딩하여CUBRID로 스키마/데이터를 마이그레이션하기
CMT를 시작하며 [마이그레이션]à[마이그레이션마법사]선택한다. 마법사[1단계]에서는 생성해 놓았던 MySQL XML
덤프파일(xe_db.xml)을 선택하고 파일을 등록한 후 [Next>]를 선택한다.
[그림3] 1단계 마법사 : 원본데이터 소스 선택
[2단계]에서 대상 데이터베이스를선택하는데, 이번 시나리오는 [온라인(JDBC사용)]을 선택하여 진행한다.
때문에 생성해 두었던 xe_db가 구동 중인지 확인하고 정지 중일 경우 시작한 후 [신규]를선택하며 [그림5]을
참고하여 등록한다.
타겟 장비에 대한 호스트 주소(IP)와 연결포트(브로커포트), 데이터베이스 정보를 입력한다.
[3단계]에서 마이그레이션 객체를 선택하고, [4단계]에서는 객체 맵핑을 한 후 [5단계]에서 [시작하기]를 선택한다.
① CMT의 마이그레이션 과정 요약
XML 덤프 파일 로딩 à SQL구문으로해석(시간소요) à 객체 선택à 타입 맵핑
à CUBRID 데이터베이스에 접속 à 테이블 생성à 데이터 삽입 à 인덱스 생성à 완료
② 마이그레이션 확인
보고서 확인 à 마이그레이션 실패 건수가 있지는 않는지 확인한다.
원본 소스DB에서 중복 데이터가 있는 경우, 최종 단계에서 인덱스 생성에 실패할 수 있기 때문에 리포트에서 인덱스 실패가 나는 경우가 종종 발생한다. 따라서 리포트에 실패가 있는지 반드시 확인하고, 인덱스를 추가 생성한다. 아래는 마이그레이션 결과를 추가로 확인 하는 방법이다.
- 테이블 개수 확인 à XE 특정모듈이 동작을 안 할 수 있다. (SHOWTABLE 매뉴얼)
- 데이터 개수 확인 à 데이터 불일치할 수 있다. (COUNT(*)매뉴얼)
- 인덱스 개수 확인 à 원본 MySQL 데이터에서 기본 키 컬럼에 중복 데이터가 있는 경우, 인덱스누락이 발생할 수 있다. 이 경우, XE를 운영할 때, 검색 속도에 문제가 될 수 있으므로 반드시 추가 인덱스를 생성한다. (SHOWINDEX 매뉴얼)
-
5. XE어플리케이션을 CUBRID 운영서버가 있는 환경으로 이관하기
MySQL기반으로 운영되던 XE사이트는 타겟 장비의 웹서버에 그대로복사한다. 그런 다음 아래와 같이 설정을 수정해준다.
① 웹서버의 운영 권한 확인하기
웹서버의 설정파일에서(httpd.conf) 운영권한을 확인하여 운영할 XE사이트의 [File]모듈의 권한을 웹서버
운영권한과 동일하게 수정해준다.
[root@~]# vi /root/was_source/httpd-2.2.22/docs/conf/httpd.conf |
② XE에서 접속할 DB정보를 CUBRID로 수정하기
[root@~]#cd /usr/local/server/apache/htdocs/so_xe |
③ 최종 관리자모드에서 캐시파일 재생성 하기
도메인서버에서 새로운 CUBRID 운영 서버의 IP주소를 등록한후, 브라우저에서 주소창에 Default_url
(http://your_domain.com/so_xe)를입력한 후 최종 관리자로 로그인을 한다. 관리자 페이지 가장하단에
있는 [캐시파일 재생성]을 선택한다.
④ 사이트 링크를 위한 설정하기
사이트내에 링크가 걸린 항목들이 XE의 ‘rewrite’모듈로인해 운영되기 때문에 이 모듈이 정상 운영을
하도록 httpd.conf파일에서 아래와 같이 수정한다.
[root@~]# vi /root/was_source/httpd-2.2.22/docs/conf/httpd.conf |
※참고 : 위 설정은 전역을 기준으로 설정하였으며 보안을 위해 필요한 곳만 지정하여 설정할수도 있다.
⑤ 이런 에러가 났을때 조치하는 방법
* [330, ERR_CONTENT_DECODING_FAILED : 알수 없는 오류]
http://your_domain.com/so_xe 와 같은 XE사이트로 접속 시 [그림]과 같이
[330, ERR_CONTENT_DECODING_FAILED : 알수 없는 오류] 메시지 처럼 컨텐츠 인코딩 오류가 발생할
경우다음과 같은 조치 사항을 참고한다.
[그림7 XE사이트의 페이지 오류]
[root@~]# vi classes/display/DisplayHandler.class.php |
* 기존 사이트와 출력 형태가 다르다.
IE가 html doc type을 인식하지 못해 페이지의 디자인 정렬이 다르게 출력 되었을 경우는 PHP태그의
‘짧은 스타일’때문에 발생한 문제이다. 이때는 아래와 같이 php.ini파일에서‘short_open_tag’를 On으로
설정해주고 웹서버를재시작한다.
[root@~]# vi /usr/local/server/apache/conf/php.ini |