Background Image
조회 수 23069 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄 첨부

 운영 중인 MySQL기반의XE사이트를 CUBRID로 전환하고 싶을 때 CUBRID Migration Tookit을 사용하여 마이그레이션 하는 가이드를 소개 한다.

 

1. 설치 환경 준비

 [그림1]과 같이 타겟 장비의 환경을 구축하기 위해 순서대로 수행한다.

1.jpg

 

[그림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]를 확인한다.

             (하기 / 설치에서부터 하기 매뉴얼)

CUBRID_php_driver확인.jpg

[그림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
  Enter password: *******

 

 

4. CMT XML파일을 로딩하여CUBRID로 스키마/데이터를 마이그레이션하기

CMT를 시작하며 [마이그레이션]à[마이그레이션마법사]선택한다마법사[1단계]에서는 생성해 놓았던 MySQL XML

덤프파일(xe_db.xml)을 선택하고 파일을 등록한 후 [Next>]를 선택한다.

  1step원본데이터소스선택.jpg

 

[그림3] 1단계 마법사 : 원본데이터 소스 선택

 

[2단계]에서 대상 데이터베이스를선택하는데이번 시나리오는 [온라인(JDBC사용)]을 선택하여 진행한다.

때문에 생성해 두었던 xe_db가 구동 중인지 확인하고 정지 중일 경우 시작한 후 [신규]를선택하며 [그림5]

참고하여 등록한다.

2step대상데이터선택.jpg

 [그림4] 2단계 마법사 온라인 마이그레이션 하기 위한 대상 데이터베이스선택

 

타겟 장비에 대한 호스트 주소(IP)와 연결포트(브로커포트), 데이터베이스 정보를 입력한다.

2step대상데이터선택_DB연결.jpg

 [그림5] 2단계 마법사 : 새 데이터베이스 연결

 

[3단계]에서 마이그레이션 객체를 선택하고, [4단계]에서는 객체 맵핑을 한 후 [5단계]에서 [시작하기]를 선택한다.

 

 CMT의 마이그레이션 과정 요약

XML 덤프 파일 로딩 à SQL구문으로해석(시간소요à 객체 선택à 타입 맵핑

à CUBRID 데이터베이스에 접속 à 테이블 생성à 데이터 삽입 à 인덱스 생성à 완료

 

 마이그레이션 확인

              보고서 확인 à 마이그레이션 실패 건수가 있지는 않는지 확인한다. 

마이그레이션_리포트.jpg

 [그림5] 마이그레이션 Report

원본 소스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
  -----------------------------------------------------------------------------------------------------------------
  64line  # running httpd, as with most system services.
  65line  #
  66line  User nobody
  67line  Group nobody
  68line
  69line  </IfModule>
  70line  </IfModule>
  -----------------------------------------------------------------------------------------------------------------
  [root@~]# cd /usr/local/server/apache/htdocs/so_xe
  [root@~]# chown nobody:nobody -R files/
  [root@~]#ls –al
  -rw-r--r--   1  root    root      1545 Feb 14  2011 fblogo.gif
  drwxr-xr-x  9 nobody nobody    4096 Apr 10 13:59 files



② XE에서 접속할 DB정보를 CUBRID로 수정하기

  [root@~]#cd /usr/local/server/apache/htdocs/so_xe
  [root@~]# vi files/config/db.config.php
  -----------------------------------------------------------------------------------------------------------------
  <?php if(!defined("__ZBXE__")) exit();
  $db_info->time_zone = '+0900';
  $db_info->use_rewrite = 'Y';
  $db_info->default_url = 'http://your_domain.com/so_xe'; 
  $db_info->use_optimizer = 'N';
  $db_info->qmail_compatibility = 'N';
  $db_info->use_ssl = 'N';
  $db_info->use_db_session = 'N';
  $db_info->use_sso = 'N';
  $db_info->use_mobile_view = 'Y';
  $db_info->use_template_cache = 'N';
  $db_info->use_html5 = 'N';
  $db_info->master_db = array('db_type' => 'cubrid','db_port' => '33000','db_hostname' =>'localhost','db_password' => '1234','db_database' => 'xe_db','db_userid' =>'dba','db_table_prefix' => 'xe_');
  $db_info->slave_db = array('db_type' => 'cubrid','db_port' => '33000','db_hostname' =>'localhost','db_password' => '1234','db_database' => 'xe_db','db_userid' =>'dba','db_table_prefix' => 'xe_');
//DB 이중화를 하는 경우, slave DB 접속 정보를 입력한다. 
//그렇지 않은 경우 master_db와 동일한 정보를 입력한다.
?>

 

 

 

③ 최종 관리자모드에서 캐시파일 재생성 하기

도메인서버에서 새로운 CUBRID 운영 서버의 IP주소를 등록한후브라우저에서 주소창에 Default_url

(http://your_domain.com/so_xe)를입력한 후 최종 관리자로 로그인을 한다관리자 페이지 가장하단에

있는 [캐시파일 재생성]을 선택한다.

xe최종관리자모드_캐시파일재생성.jpg

 

 

 

 사이트 링크를 위한 설정하기

사이트내에 링크가 걸린 항목들이 XE의 ‘rewrite’모듈로인해 운영되기 때문에 이 모듈이 정상 운영을

하도록 httpd.conf파일에서 아래와 같이 수정한다.

 [root@~]# vi /root/was_source/httpd-2.2.22/docs/conf/httpd.conf
  -----------------------------------------------------------------------------------------------------------------
  152line AllowOverride all
  -----------------------------------------------------------------------------------------------------------------
  [root@~]# /etc/init.d/httpd restart

※참고 : 위 설정은 전역을 기준으로 설정하였으며 보안을 위해 필요한 곳만 지정하여 설정할수도 있다.

 

⑤ 이런 에러가 났을때 조치하는 방법

[330, ERR_CONTENT_DECODING_FAILED : 알수 없는 오류]

http://your_domain.com/so_xe 와 같은 XE사이트로 접속 시 [그림]과 같이

[330, ERR_CONTENT_DECODING_FAILED : 알수 없는 오류] 메시지 처럼 컨텐츠 인코딩 오류가 발생할

경우다음과 같은 조치 사항을 참고한다 

xe페이지오류ERR_CONTENT_DECONDING_FAILED.jpg

 [그림7 XE사이트의 페이지 오류]

 

 [root@~]# vi classes/display/DisplayHandler.class.php
  -----------------------------------------------------------------------------------------------------------------
  //gz 압축 전송 옵션을 끄기
  31line      ) $this->gz_enabled = false;  // (ture를 false로 수정)

 

 

기존 사이트와 출력 형태가 다르다.

IE html doc type을 인식하지 못해 페이지의 디자인 정렬이 다르게 출력 되었을 경우는 PHP태그의

짧은 스타일때문에 발생한 문제이다이때는 아래와 같이 php.ini파일에서‘short_open_tag’ On으로

설정해주고 웹서버를재시작한다.

 

 [root@~]# vi /usr/local/server/apache/conf/php.ini
  -----------------------------------------------------------------------------------------------------------------
  141line short_open_tag = On
  -----------------------------------------------------------------------------------------------------------------
  [root@~]# /etc/init.d/httpd restart

  큐브리드 공부하기 까페 참조: http://cafe.naver.com/studycubrid/902

List of Articles
번호 분류 제목 글쓴이 날짜 조회 수
17 마이그레이션 CMT를 이용하여 원본 특정 테이블의 일부 데이터만 가져와 대상 테이블에 넣기 엄기호 2016.01.28 4550
16 마이그레이션 MySQL 테이블 크기 조사하기-공유 주현 2015.12.31 6197
15 마이그레이션 CUBRID와 Oracle의 NULL과 '' (empty string)의 처리 차이점 1 권호일 2015.12.29 15340
14 마이그레이션 CM(CUBRID Manager)을 이용하여 행정표준코드시스템의 기관코드 가져오기 file 권호일 2015.12.28 6325
13 마이그레이션 CUBRID vs MySQL vs ORACLE SQL 타입별 비교 정만영 2013.07.12 69109
» 마이그레이션 MySQL+XE를 CUBRID+XE로 운영하기 – mysqldump파일과 CMT사용 file cubebridge 2012.11.13 23069
11 마이그레이션 MySQL에서 CUBRID로 갈아탈 때 알아야 할 것 cubebridge 2012.11.13 22592
10 마이그레이션 오라클의 order by 시 first와 last 대체 사용법 file cubebridge 2012.11.12 20561
9 마이그레이션 CUBRID Migration Tookit 8.4.1 file cubebridge 2012.04.14 11079
8 마이그레이션 데이터베이스 마이그레이션(unloaddb & loaddb) 의 효과적인 수행방법 file cubebridge 2012.04.14 24534
7 마이그레이션 MySQL에서 사용하는 스키마 변환시 주의 사항 정만영 2012.03.02 13251
6 마이그레이션 오라클 to CUBRID로 마이그레이션 수행 시 주의사항 정만영 2012.03.02 21056
5 마이그레이션 타 DBMS를 CUBRID로 마이그레이션 시 varchar,char 컬럼 사이즈 관련 손승일 2010.07.01 38012
4 마이그레이션 타 DB 에서 마이그레이션시 질의 변경 샘플 - CASE 문 웁쓰 2009.12.31 21921
3 마이그레이션 CUBRID는 MySQL의 varchar(255)와 동일한 길이가 아닌가요? 손승일 2009.12.28 27784
2 마이그레이션 CUBRID 하위버젼에서 CUBRID2008로의 업그레이드 방법 1 남재우 2008.12.06 30153
1 마이그레이션 MySQL의 limit 명령어 처리 1 admin 2008.11.21 32682
Board Pagination Prev 1 Next
/ 1

Contact Cubrid

대표전화 070-4077-2110 / 기술문의 070-4077-2113 / 영업문의 070-4077-2112 / Email. contact_at_cubrid.com
Contact Sales