Background Image
조회 수 23072 추천 수 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
번호 분류 제목 글쓴이 날짜 조회 수
199 응용개발 CUBRID의 날짜형 타입을 java의 날짜형 타입에 할당할 때의 값 비교. file seongjoon 2009.12.16 20422
198 질의작성 join update 처리방법입니다.(연관성 있는 테이블을 조인하여 처리하는 UPDATE 구문) 권호일 2012.11.30 20395
197 응용개발 CUBRID odbc 드라이버 설정방법. file seongjoon 2009.12.10 20328
196 운영관리 Windows 서버에서 [장치에 쓰기 캐싱 사용] 설정/해제에 따른 성능 차이 이용미 2012.06.30 20231
195 운영관리 CM이 아닌 서버(console)상의 쿼리 결과값을 저장하는 방법 cubebridge 2009.05.19 20200
194 CUBRID 매니저 데이터베이스 자동시작 설정(CUBRID 2008 R 1.2). 1 윤희서 2009.01.31 20187
193 질의작성 오라클의 order by 시 first와 last 대체 사용법 file 이용미 2011.12.22 20178
192 질의작성 다중 row를 하나의 column에 넣기 정만영 2009.03.13 20089
191 질의작성 select 결과중 몇개만 가져오는 방법 admin 2008.11.21 19919
190 응용개발 PHP에서 Prepared statement 사용시 NULL 값을 바인딩 하는 방법 1 Prototype 2009.11.27 19722
189 응용개발 CUBRID R3.0부터 JDBC를 사용하는 응용에서 charset 설정 방법이 변경되었네요. 손승일 2010.12.02 19635
188 응용개발 ODBC 드라이버를 이용한 Prepare 사용하기. seongjoon 2009.06.16 19591
187 응용개발 CUBRID2008 Java Stored Procedure 등록 방법 cubebridge 2010.02.24 19564
186 질의작성 CUBRID에서 대소문자 관리 남재우 2010.01.30 19510
185 운영관리 CSQL 에서 한글을 입력하는 방법 Prototype 2009.04.01 19350
184 응용개발 PHP PEAR extension 을 이용한 DB Time 추적 웁쓰 2009.07.01 19188
183 CUBRID 매니저 CUBRID Manager 결과창에서 레코드 값 변경하기. file seongjoon 2009.06.22 19074
182 운영관리 큐브리드매니져를 이용한 데이터베이스 자동 백업 남재우 2009.04.01 19052
181 응용개발 JDBC 커넥션 스트링에 UTF-8 명시하는법 Prototype 2009.07.03 19019
180 응용개발 embedded sql 에서 char 사용시 주의 사항 admin 2008.11.21 19008
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