Linux DB

innodb 설치 및 옵션

2014.04.14 19:41

호스트웨이 조회 수:23366

1. 설치가 안되어 있을 때

1) 설치 여부 확인

mysql> show variables like 'have_innodb';

+---------------+-------+

| Variable_name | Value |

+---------------+-------+

| have_innodb   | NO   |

+---------------+-------+

1 row in set (0.00 sec)

 

2) 2가지의 설치 방법

@ mysql 설치 시에 configure 추가 설치(or 재컴파일 설치)

configure 시에 option 추가( --with-plugins=innobase)

./configure --prefix=/usr/local/mysql --with-charset=euckr --with-extra-charsets=all --with-plugins=innobase                                       옵션 추가

@ 설치된 mysql plugins 설치

my.cnf 파일 설정 추가

#vi /etc/my.cnf

[mysqld] [mysqld] 밑에 2줄 추가

ignore-builtin-innodb                                      

plugin-load=innodb=ha_innodb_plugin.so

mysql 재시작

 

2. 설치는 되어있지만 사용 설정이 없을 때

1) 설치 여부 확인

mysql> show variables like 'have_innodb';

+---------------+----------+

| Variable_name | Value    |

+---------------+----------+

| have_innodb   | DISABLED |

+---------------+----------+

1 row in set (0.00 sec)


2) my.cnf 설정 변경

#vi /etc/my.cnf                                              내용 중에 skip-innodb검색 후 주석처리

#skip-innodb

Mysql 재시작

 

3. innodb default 설정

#vi /etc/my.cnf

[mysqld]

default-table-type=innodb                                추가 후 재시작

 

4. 발생할 수 있는 에러

1) InnoDB: Error: data file /usr/local/mysql/data/ibdata1 is of a different size (innodb 에러)

#vi /usr/local/mysql/var/[도메인].err                                          로그 확인 시

InnoDB: Error: data file /usr/local/mysql/data/ibdata1 is of a different size

InnoDB: 640 pages (rounded down to MB)

InnoDB: than specified in the .cnf file 128000 pages!

InnoDB: Could not open or create data files.

InnoDB: If you tried to add new data files, and it failed here,

InnoDB: you should now edit innodb_data_file_path in my.cnf back

InnoDB: to what it was, and remove the new ibdata files InnoDB created

InnoDB: in this failed attempt. InnoDB only wrote those files full of

InnoDB: zeros, but did not yet use them in any way. But be careful: do not

InnoDB: remove old data files which contain your precious data!

 

#vi /etc/my.cnf                                                                   설정 내역 확인

innodb_data_file_path = ibdata1:2000M;ibdata2:10M:autoextend

innodb_data_file_path = ibdata1:10M;ibdata2:10M:autoextend          10M로 변경

2) InnoDB 실제 pages(640 Pages)my.cnf pages(128000 Pages)이 틀려 발생하는 에러

1 page = memory 16Kbyets

640 pages = 10Mbytes

128000 pages = 2000Mbytes

 

관련링크 : http://www.mail-archive.com/mysql@lists.mysql.com/msg76029.html

 

5. 옵션 설명

#vi /etc/my.cnf

 

[mysqld]

……

innodb_data_home_dir = /usr/local/mysql/data/innordb/

innodb_log_group_home_dir = /usr/local/mysql/data/innordb/

innodb_data_file_path = innordata1:256M:autoextend:max:2000M

innodb_autoextend_increment = 10M

innodb_file_per_table

innodb_buffer_pool_size = 2G

innodb_additional_mem_pool_size = 20M

innodb_flush_log_at_trx_commit = 2

innodb_log_file_size = 512M

innodb_log_buffer_size = 2M

innodb_lock_wait_timeout = 50

innodb_flush_method = O_DSYNC

max_connections = 500

 

A. innodb_data_home_dir

 : 테이블스페이스 파일의 생성 위치 설정

B. innodb_data_file_path

 : 테이블스페이스 파일 명 및 크기, 옵션 설정

innordata1:256M:autoextend:max:2000M

innordata1라는 파일명으로 생성되고 256MB의 고정크기로 최초 생성되며, 용량이 256MB가 넘을 경우 “autoextend”라는 옵션으로 자동으로 파일 크기가 확장되며, 최대 확장되는 크기는 MAX 옵션의 설정 값만큼 확장

C. innodb_autoextend_increment

 : autoextend 옵션으로 자동 확장되는 크기 지정, 디폴트는 8M

D. innodb_file_per_table

 : 공용 테이블스페이스 사용 대신에 테이블 별 테이블스페이스 사용 옵션

TableName.idb 파일 생성

E. innodb_log_group_home_dir

 : 로그 파일에 대한 디렉토리 경로 설정

F. innodb_buffer_pool_size

 : 자신의 테이블에 있는 데이터와 인덱스를 캐시하기 위해 사용하는 메모리 버퍼의 크기, 이 값을 크게 설정하면 할수록, 테이블에 있는 데이터를 접속하는데 필요한 I/O가 덜 생김, 전체 메모리의 60~80%로 설정

G. innodb_additional_mem_pool_size

: InnoDB가 데이터 디렉토리 정보와 다른 내부 데이터 구조를 저장하기 위해 사용하는 메모리 풀의 크기

H. innodb_flush_log_at_trx_commit

: 자신의 테이블에 있는 데이터와 인덱스를 캐시하기 위해 사용하는 메모리 버퍼의 크기, 이 값을 크게 설정하면 할수록, 테이블에 있는 데이터를 접속하는데 필요한 I/O가 덜 생김, 전체 메모리의 60~80%로 설정

I. innodb_flush_log_at_trx_commit

: commit 을 하였을때 그 즉시 commit 된 데이터를 log file 에 기록할지 안할지를 설정

0 - log buffer내용이 1초 간격으로 로그파일에 쓰여지고 flush, commit시 미동작

1 - log buffer내용이 commit할 때에 로그 파일에 쓰여지고 flush

2 - log buffer내용이 commit할 때에 로그 파일에 쓰여지고 flush 1초 간격으로 동작

J. innodb_log_buffer_size

: InnoDB가 로그 파일을 디스크에 쓰기 위해 사용하는 버퍼의 크기. 사용 가능한 크기는 1~8MB, 디폴트는1MB.

K. innodb_log_file_size

: 로그 파일의 크기 설정, 디폴트는 5MB, 로그 파일은 하나의 파일에 계속 저장되는 것이 아니고 순차적으로 파일이 일정한 크기와 용량으로 순환식으로 생성, innodb_buffer_pool_size 25% 정도로 설정.

L. innodb_lock_wait_timeout

: 트랜젝션의 타임아웃은 롤백이 진행되기 전에 락을 대기하는 시간, 디폴트는 50.

M. innodb_flush_method

: Flush 명령어 방식 설정, 디폴트는 fdatasync.

fdatasync - fsync()를 사용해서 데이터와 로그 파일을 flush

O_SYNC - 로그 파일을 열고 flush하지만, 데이터 파일을 flush하기 위해서는 fsync()를 사용

O_DIRECT - O_DIRECT를 사용해서 데이터 파일을 열고, 데이터 파일과 로그 파일을 flush (몇몇 GNU/Linux 버전에서 사용 가능함)

Windows에서는 flush 방식은 항상 async_unbuffered 사용

N. innodb_thread_concurrency

: InnoDB 내부에 OS 쓰레드의 숫자 설정, 설정된 값과 같거나 적게 유지, 권장하는 값은 여러분이 사용하는 시스템의 프로세스와 디스크의 전체 합, 설정 값의 범위는 0~100.

 

3. InnoDB Table 생성(Default Engine InnoDB가 아닐 경우)

 . Table 생성시

  : InnoDB 테이블을 생성하기 위해서는, CREATE TABLE 명령문에서 ENGINE = InnoDB 옵션을 지정한다:

CREATE TABLE customers (a INT, b CHAR (20), INDEX (a)) ENGINE=InnoDB;

 . MyISAM 테이블을 InnoDB로 변환

: Alter문 사용하여 변경

 ALTER TABLE tablename ENGINE=INNODB;

번호 제목 글쓴이 날짜 조회 수
45 hostname-bin.000 로그 화일 관리 sylee 2008.06.11 22507
44 리눅스에 큐브리드 설치하기 file 호스트웨이 2008.09.03 22013
43 mysql4.1.x -> mysql4.0.x 로 옮기기 sylee 2008.05.15 21451
42 리눅스에서 MYSQL 데이터 디렉토리 변경 호스트웨이 2012.08.31 20791
41 [팁] Mysql 설치시 LinuxThreads 에러 메세지 sylee 2009.01.02 19488
40 My SQL 사용자 추가 호스트웨이 2008.05.19 19265
39 show processlist의 state 종류 호스트웨이 2012.05.11 19249
38 mysql의 table이 깨졌다는 메시지가 출력됩니다. sylee 2008.05.15 18875
37 MySQL Table 이 깨졌을 때 복구하는 방법 호스트웨이 2012.03.16 18662
36 DB접속시 DNS 관련 오류 호스트웨이 2015.09.25 18262
35 Ubuntu mysql 삭제/재설치 호스트웨이 2015.09.04 16828
34 MySQL-5.5 설치하기 호스트웨이 2012.04.27 15711
33 심볼릭 링크를 이용한 mysql 데이터 디렉토리 위치 변경 호스트웨이 2012.03.23 14313
32 Mysql - 원격 접속 지연 발생시 호스트웨이 2012.08.03 14013
31 MariaDB, MySQL 의 InnoDB 엔진 백업 솔루션 xtrabackup 호스트웨이 2015.05.07 13867
30 안전한 MySQL 접속하기 file 호스트웨이 2012.06.22 13055
29 MySQL Bash 스크립트를 활용한 로컬 백업 호스트웨이 2016.02.04 12401
28 MYSQL의 "too many connections" 에러 해결법 호스트웨이 2015.09.10 11791
27 Mysql banchmark tool – sysbanch 설치하기 호스트웨이 2012.07.06 11543
26 mysql 로그 삭제하기 호스트웨이 2012.07.20 11496