웹마스터 팁
MyISAM --> InnoBD 이전시 문제점 및 고려사항(엔진 교체)
2013.07.24 23:20
맨날 눈팅만 하다가 이렇게 몇자 적어 봅니다.
우선
당연히 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
댓글 8
제목 | 글쓴이 | 날짜 |
---|---|---|
스케치북 게시판 스킨에서 라이브리 소셜댓글 다는 법(수정완료)
![]() | 착한부산남자 | 2013.06.27 |
모바일 파일첨부 테스트.. (극소수) 안되시는 분들 | 낭만구미호 | 2013.06.28 |
rewrite mod 가 안 돼서 고생한 경험담입니다. [2] | obok | 2013.06.29 |
APM 세팅파일 | webgon | 2013.07.01 |
크롬 사용시 타이태니엄 2013과 스케치북 게시판 충돌! | 착한부산남자 | 2013.07.02 |
제이쿼리로 에디터에 내용 넣기 [1] | Lansi | 2013.07.02 |
스케치북5 sns버튼에서 요즘 삭제하기 [6] | 도라미 | 2013.07.07 |
IPGUARD 모듈 배포
[33]
![]() | 우진홈 | 2013.07.10 |
1.4에서 1.7로 바로 업데이트 안전하게 하기 [1] | HolyJohn | 2013.07.10 |
[리눅스] 속도향상 팁. nginx를 리버스프록시로 써봅시다. [6] | choco@_@ | 2013.07.11 |
XE Recruitment 파일 미추가시 에러 뿜어내는 것 처리방법 [7] | 송동우님최고 | 2013.07.12 |
모바일 설문조사 크기조절하기 ~ | 오락실주인 | 2013.07.14 |
모바일 설문조사 크기조절하기 다른 버전 [4] | 낭만구미호 | 2013.07.15 |
XE 1.5 or 1.7 업그레이드후 글 ,댓글 쓸때 "내용 값은 필수" 혹은 내용 입력 하라는 메세지 뜰때 [3] | Happiness | 2013.07.17 |
회원가입폼에 필수항목 * 부분 처리 [3] | 똑디 | 2013.07.18 |
XE 1.7으로 업데이트 한 후 게시판을 생성하실 수 없으신가요?
![]() | 윈컴이 | 2013.07.19 |
게시글에 댓글 부분 추천, 비추천 바로 노출하기
[5]
![]() | 똑디 | 2013.07.19 |
XE 1.5 를 1.7 로 업데이트한 경우, 카테고리 사용여부 설정 버그 수정법 | sejin7940 | 2013.07.21 |
모바일에서 댓글 중복되는 현상 해결- 애드온 문제 | Happiness | 2013.07.24 |
MyISAM --> InnoBD 이전시 문제점 및 고려사항(엔진 교체) [8] | 좋은아빠되기 | 2013.07.24 |