Background Image
조회 수 23071 추천 수 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
번호 분류 제목 글쓴이 날짜 조회 수
219 운영관리 windows 환경에서 압축파일로 CUBRID 설치시 환경변수 쉽게 설정하기 김승훈 2015.07.02 6995
218 질의작성 CUBRID dummy data생성-간단편 주현 2015.07.01 7857
217 기타 CUBRID HA에서 사용하는 포트 확인 방법(1523, 59901) 주현 2015.07.01 8162
216 질의작성 카디시안(한 Row를 여러 Row) 쿼리문 만들기 1 엄기호 2015.06.30 10921
215 CUBRID 매니저 32bit JRE 환경에서 64bit CUBRID Tool 사용 손승일 2015.06.30 7190
214 CUBRID 매니저 CUBRID Manager 및 엑셀 파일을 이용하여 데이터 입력 시, garbage값이 포함되어 저장되는 경우 해결 방법 이용미 2015.06.17 9753
213 질의작성 SQL튜닝 - 인덱스 활용 사례 권호일 2015.06.04 12009
212 응용개발 JAVA SP 사용 시 로그 처리 방법 손승일 2015.06.03 8571
211 운영관리 디비와 테이블 문자셋이 다른 경우 처리 방법 이용미 2015.06.03 15797
210 질의작성 A테이블의 다수의 컬럼을 B테이블로 UPDATE 하는 SQL 김승훈 2015.05.07 7406
209 응용개발 전체 레코드 개수 확인하는 SP 김승훈 2015.05.07 14721
208 질의작성 MERGE INTO 사용 예제 ( INSERT, UPDATE문을 1개의 쿼리로 실행 ) 권호일 2015.05.01 21237
207 CUBRID 매니저 워크스페이스 사용중입니다. 다른 워크스페이스를 선택하세요. 대응법 성진 2015.04.24 10507
206 CUBRID 매니저 CUBRID Manager 메모리 설정하기(cubridmanager.ini) file 성진 2015.04.24 13692
205 운영관리 CUBRID HA와 Primary key 제약조건 정만영 2015.04.21 11346
204 운영관리 테이블 사용량 확인방법 정만영 2015.02.03 11441
203 CUBRID 매니저 cubrid manager server 구동 시 no "events" section in configuration 오류 발생 손승일 2014.07.03 10261
202 운영관리 9.2 버전에서 복제 재구축(ha_make_slavedb.sh) 스크립트를 사용하려면 수정해야 할 부분 brightest 2013.10.24 12230
201 마이그레이션 CUBRID vs MySQL vs ORACLE SQL 타입별 비교 정만영 2013.07.12 69147
200 질의작성 오류데이타검증 - 숫자 이외의 데이타 확인하는 방법 권호일 2013.01.17 21117
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 14 Next
/ 14

Contact Cubrid

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