웹마스터 팁

맨날 눈팅만 하다가 이렇게 몇자 적어 봅니다.

 

우선

 

당연히 MYSQL 사용중입니다.

 

버전은

 

5.1.51 버전입니다.

 

오래전에 설치한 것이라서 MyISAM 을 사용하고 있었는데요.

 

아무래도 InnoDB로 갈아타기로 결정하고 이전 작업을 시작하였습니다.

 

이곳 팁 게시판에 여러 문서도 찾아보고 해봤지만 딱히 제가 만났던 오류를 해결하지 못하여

 

몇자 적습니다.

 

우선 ALTER 테이블네임 ENGINE=InnoDB 명령을 사용하여 테이블 변환하였습니다.

 

노가다를 피하기 위해서 PHP를 이용해서 자동으로 변경하였습니다.

 

대략적인 코드는

 

$default_dbname="여러분이 사용중인 DB 이름";

 

$result2 = mysql_query("SHOW TABLES FROM ".$default_dbname);
  
  
  $i=0;
  
  while($table_data2[$i] = mysql_fetch_row($result2)) {
   echo $table_data2[$i][0]."<br>";

 

   //XE 테이블 생성시 접두어 xe라 가정
   
   if(preg_match("/xe_/i", $table_data2[$i][0]) && 1){
    
    echo $table_data2[$i][0]."<br>";
    $query = "ALTER TABLE ".$table_data2[$i][0]. " ENGINE=MyISAM";
    
    $result3 = mysql_query($query, $link_id);
    if($result3)
    echo $result3."Innodb_변경완료<br>";
    else
    die(sql_error());
    
    }//if

}//while

 

 

저런식으로 해서 확 자동으로 바뀌면 일단 성공하신거 축하 드립니다

 

근데 중간에 멈췄다.. 그럼 문제가 있는겁니다.

 

우선 저는 두가지 경우에 대해서 멈추었습니다.

 

 

최신 1.7.3.4를 처음 설치하신분들에게는 해당사항이 없으며

 

오래전부터 버전업 해오시던 분들이라면

 

 

 

xe_documents 에서 InnoDB 변환이 안되고 멈추는 현상이 있을수 있습니다.

 

저 같은 경우 그 이유는

 

xe_documents 에 title 라는 인덱스가 걸려 있었는데 이게 FULLTEXT 타입으로 되어 있었습니다.

 

InnoDB에서는 FULLTEXT 타입 인덱스를 지원하지 않더군요.

 

삭제를 해야 하나 말아야 하나 고민하다가

 

결론은 삭제를 했고 InnoDB로 테이블 변환에 성공하였습니다.

 

최신 1.7.3.4를 처음 설치하신분들이나 최근부터 쓰신분들은

 

아마도

 

xe_documents 에 title 라는 인덱스가 걸려있지 않을것이므로 변환에 아무런 이상이 없을듯 합니다.

(실제로 제가 완전히 새로 딱 1.7.3.4를 깔았더니 title라는 인덱스가 안 걸려 있었습니다. 아예 없더군요)

 

 

그리고 xe_counter_log 라는 녀석 변환시 걸려서 멈추었는데요.

 

이놈이 처음 설치되었을때부터 이제껏 방문한 사람들의 IP며 온갓 잡다한 기록을 가지고 있었습니다.

 

이게 용량이 좀 되더라구요.

 

my.cnf 에서 InnoDB 설정시

 

innodb_data_file_path = ibdata1:10M:autoextend

 

위와같은 문구가 있습니다.

 

innodb_data_file_path = ibdata1:10M:autoextend

innodb_data_file_path = ibdata1:10M:autoextend:max:1000M

 

이런식으로 MAX 값 제한을 걸었는데 이것보다 더큰 테이블 스페이스를 요구했다면서

 

오류를 내면서 뻣어 버리더라구요.

 

임시 방편이기도 하거니와

 

혹 다음에 내가 모르는 사이 용량이 엄청 커져서 뻣어 버릴까 겁나기도 하여서

 

max:1000M를 빼버리고

 

innodb_data_file_path = ibdata1:10M:autoextend

 

위와같이 설정하였더니 정상적으로 InnoDB 테이블로 변환되었습니다

 

xe_counter_log 테이블은 가급적 그냥 비우기 해서 데이터를 삭제 해주시는것이

 

홈페이지 속도 증가에도 도움이 될듯 합니다.

 

매번 접속시마다 저 테이블에서 데이터를 읽어 오면서 슬로우 쿼리를 유발한다는 분들이 많더라구요.

 

저같은 경우 테스트를 목적으로 일단 InnoDB 변환 성공후 데이터를 비워버렸습니다.

 

그럼 정리할께요.

 

innodb_data_file_path = ibdata1:10M:autoextend

 

1. 위와같이 설정하여 테이블 스페이스를 충분히 확보하여야 한다.

 

2. xe_documents 테이블에 혹시 title 라는 인덱스가 걸려 있다면 인덱스를 삭제한다.

(phpmyqdmin등으로 쉽게 삭제가 가능합니다.)

 

이상 MyISAM에서 InnoDB로 이전하면서 격은 삽질을 기록하여 보았습니다.

 

아참 그리고

 

참치k님 도움을 받아서....

 

files/config/db.config.php 파일을 열어서

 

$db_info->master_db = array('db_type' => 'mysql', 이렇게 되어 있는걸 아래와 같이

 

mysql_innodb로

 

 

고치셔야 추후 문제가 발생하지 않는다네요.

(댓글 참조하세요.)

 

$db_info->master_db = array('db_type' => 'mysql_innodb','db_port' => '3306','db_hostname' => 'localhost',

$db_info->slave_db = array(array('db_type' => 'mysql_innodb','db_port' => '3306','db_hostname' => 'localhost',

 

 

ps : 바꾸고 나니깐 속도가 좀 올라 오는것 같기도 하고 그렇네요.

 

총 물리 메모리 8기가 인데

 

DB 서버를 따로 안뽑아 놓다보니 InnoDB에 2G 할당한다고

 

아래와 같이 my.cnf 에서 설정잡았습니다.

 

설정과 관련하여 어떻게 바꾸면 더 좋을지 의견 남겨 주시면 감사하겠습니다.

 

default-storage-engine = innodb
# Uncomment the following if you are using InnoDB tables
innodb_data_home_dir = /usr/local/mysql/var/
innodb_data_file_path = ibdata1:10M:autoextend
innodb_log_group_home_dir = /usr/local/mysql/var/
# You can set .._buffer_pool_size up to 50 - 80 %
# of RAM but beware of setting memory usage too high
innodb_buffer_pool_size = 2G
innodb_additional_mem_pool_size = 16M
# Set .._log_file_size to 25 % of buffer pool size
innodb_log_file_size = 320M
innodb_log_buffer_size = 8M
innodb_flush_log_at_trx_commit = 1
innodb_lock_wait_timeout = 50
innodb_flush_method = O_DSYNC

제목 글쓴이 날짜
회원가입시 validation error 가 뜨거나 회원가입이 안될때 [2] 똑디 2013.07.27
ssh같은거 필요없이 편하게 XE 설치하기. [13] file 재훈군 2012.03.04
게시판 에디터에서 자동저장 기능의 시간간격 조절하는 방법 [1] sejin7940 2013.07.26
게시글에 댓글 부분 추천, 비추천 바로 노출하기 [5] file 똑디 2013.07.19
[위키정복]2탄 - 미디어위키의 내부링크를 버그를 해결하자 [2] kukuriko 2013.07.25
[위키정복]3탄 - 사이트내 게시판 등에서 위키링크를 사용하자 [3] file kukuriko 2013.07.25
[위키정복]1탄- 메인 페이지를 만들어보자 [1] kukuriko 2013.07.25
MyISAM --> InnoBD 이전시 문제점 및 고려사항(엔진 교체) [8] 좋은아빠되기 2013.07.24
모바일에서 댓글 중복되는 현상 해결- 애드온 문제 Happiness 2013.07.24
모바일 설문조사 크기조절하기 다른 버전 [4] 낭만구미호 2013.07.15
이미지마크가 있을경우 레벨아이콘 표시안하기 [1] 소렌트. 2012.12.07
XE 1.5 를 1.7 로 업데이트한 경우, 카테고리 사용여부 설정 버그 수정법 sejin7940 2013.07.21
XE 1.7으로 업데이트 한 후 게시판을 생성하실 수 없으신가요? file 윈컴이 2013.07.19
회원가입폼에 필수항목 * 부분 처리 [3] 똑디 2013.07.18
XE 1.5 or 1.7 업그레이드후 글 ,댓글 쓸때 "내용 값은 필수" 혹은 내용 입력 하라는 메세지 뜰때 [3] Happiness 2013.07.17
XE로 API 처리 완전 정복하기(1) [6] file 라르게덴 2009.11.02
우분투 apm에서 "쉬운 설치" 에러시 팁 [4] 김상호 2010.12.22
사이트 내 닉네임을 일괄 변경하기 [6] 윈컴이 2012.11.09
모바일 설문조사 크기조절하기 ~ 오락실주인 2013.07.14
첨부파일 100% 증발문제 (서버랑 관련이..) [13] imvv99z 2012.06.13