MySQL Innodb 에 대하여
2011.05.02 18:33
원문 : http://www.ischo.net -- 조인상 // 시스템 엔지니어
Writer : http://www.ischo.net -- ischo // System Engineer in Replubic Of Korea
+++++++++++++++++++++++++++++++++++++++++++++++++++++++
원문 : http://www.ischo.net -- 조인상 //시스템 엔지니어
출처 : http://blog.naver.com/dreami79?Redirect=Log&logNo=60101193970
+++++++++++++++++++++++++++++++++++++++++++++++++++++++
1. What is Innodb Table space ?
- 그 동안 Myisam 방식으로 테이블 스페이스를 사용하던 mysql은 rollback 이 되지 않는다.
다른 데이터베이스 와 달리 autocommit 이 자동으로 실행 하여
데이터 베이스의 트렌젝션시 발생되는 lock을 처리 하기 힘들었다.
- innodb는 오라클 처럼 shared tablespace ( ibdataN) 와 로그파일 (ib_logfileN ) 로 구성된다.
로그파일은 트랜젝션들을 처리하는 오라클의 아카이브 로그 같이 생각 하면 된다.
2. Mysql의 주요 특징
참고 : Mysql Technical Reference fo Ver 5.0 : 16장 InnodB Configureation
- rollback 을 구현 할수 있다.
- transaction isolation Level
: READ-UNCOMMITED, READ-COMMITED, REPEATABLE-READ, SERIALIZABLE
- innodb_buffer_pool_size
: MyIsam 방식과 달리 buffer poll을 이용하여 인덱스와 raw data를 캐싱한다.
따라서 사용량이 많아 지면 tablespace Disk I/O 가 그만큼 줄어 든다
pool의 용량은 real memory의 80% 까지 줄수 있으나, 다른 어플리 케이션과 사용시
너무 많이 주게 되면 운영 체제의 paging을 일으키게 된다.
( 참고로 오라클은 SGA 를 50%로 권고 한다)
또 32bit 시스템의 경우 2 ~ 3.5G의 제한되므로 너무 많이 주면 안된다고 한다.
- innodb_data_file_path
아직 오라클 같이 Shared Table Space 를 온라인상에서 추가 하기 힘들다.
오직 my.cnf 환경 파일로 생성이 되고 변경 된다.
형식
innodb_data_file_path = [파일위치1/]파일명1:파일1사이즈:autoextend:max:MAX파일 사이즈
파일 간의 구분자는 ";" 이고 파일의 속성 구분자는 ":" 이며
autoextend:max:2000M 는 맨마지막 파일에만 해당된다.
innodb_file_per_table
를 사용하면 이전 isam 같이 데이터 베이스 폴더 안에 table_name.ibd 라는 파일이 생긴다.
사용예는 다음과 같다.
innodb_data_home_dir=/export/DATABASE/MyData
innodb_data_file_path = ibdata1:500M;ibdata2:500M;ibdata3:500M;ibdata4:200M:autoextend:max:2000M
3. InnoDB 만들기
1) Mysql 다운로드
wget http://downloads.mysql.com/archives/mysql-5.4/mysql-5.4.2-beta-linux-i686-glibc23.tar.gz
2) 링크걸기
tar xvfz mysql-5.4.2-beta-linux-i686-glibc23.tar.gz
mv mysql-5.4.2-beta-linux-i686-glibc23 /usr/local/mysql-5.4.2
ln -s /usr/local/mysql-5.4.2 /usr/local/mysql
3) 구동 스크립 등록하기
ln -s /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
4) InnoDb 설정
cp -pr /usr/local/mysql/support-files/my-innodb-heavy-4G.cnf /etc/my.cnf
vi /etc/my.cnf
[mysqld]
...
## 한글(euckr) 설정
character-set-client-handshake=FALSE
init_connect = SET collation_connection=euckr_korean_ci
init_connect = SET NAMES euckr
default-character-set = euckr
character-set-server = euckr
collation-server = euckr_korean_ci
language=korean
...
# 풀사이즈 조절 (디폴트 2G <- 1G)
innodb_buffer_pool_size = 1G
...
# 바이너리 로그 주석처리(필요에 따라..)
#log-bin=mysql-bin
...
log-error = /usr/local/mysql/logs/mysql_error.log
log-slow-queries = /usr/local/mysql/logs/mysql_slow.log
...
innodb_data_file_path =ibdata1:4000M;ibdata2:100M;ibdata3:100M:autoextend
innodb_data_home_dir = /usr/local/mysql/ibdata
innodb_log_group_home_dir = /usr/local/mysql/iblogs
innodb_log_arch_dir = /usr/local/mysql/iblogs
4. myisam -> innodb 로 바꿔보자.
1) 기존 데이터베이스 스키마 덤프
2) 기존 데이터베이스 데이타 덤프
// mysql 로그인
# mysql -u -p
Enter password : 비밀번호 (첫 접속시에는 비밀번호 없음)
// innodb 설정 상태 확인
mysql> SHOW VARIABLES LIKE 'have_innodb';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| have_innodb | YES |
+---------------+-------+
1 row in set (0.00 sec)
// 설정 상태 확인
mysql> SHOW STATUS LIKE '%innodb%';
3) 데이터베이스 생성
mysql> create database testdb;
mysql> grant all on testdb.* to testdb identified by 'testdb';
mysql> flush privileges;
4) 기존 데이터베이스 스키마 복구
5) 테이블 Type innodb로 변경
댓글 0
번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
---|---|---|---|---|
15 | RHEL/Rocky Linux 8.7 버전에서 MySQL 5.7 버전 설치하기 | ischo | 2023.03.20 | 2043 |
14 | MariaDB federated 활성화 | ischo | 2023.02.23 | 248 |
13 | MariaDB root 패스워드 초기화 | ischo | 2023.02.23 | 213 |
12 | MySQL 5.7 에서 MariaDB 10.5 로 마이그레이션하기 | ischo | 2023.02.23 | 547 |
11 | MySQL 감사 로그 설정 | ischo | 2022.09.14 | 828 |
10 | MySQL characterset 변경 | 조인상 | 2015.06.15 | 5175 |
9 | MySQL DB 이전 절차 | 조인상 | 2014.10.31 | 13703 |
8 | [MySQL] MySQL 연습DB | 조인상 | 2012.02.22 | 22887 |
7 | MySQL root 패스워드 분실시 패스워드 변경 | 조인상 | 2011.11.21 | 9512 |
» | MySQL Innodb 에 대하여 | 조인상 | 2011.05.02 | 13255 |
5 | MySQL Binary-Log 에 대하여 | 조인상 | 2010.12.10 | 10216 |
4 | Mysql bin-log 커졌을때 (bin-log 관리하기) | 조인상 | 2010.12.09 | 21386 |
3 | mysql 에서 charset 확인방법 | 조인상 | 2010.05.12 | 12395 |
2 | mysql 에러 종류 | 조인상 | 2010.05.12 | 16236 |
1 | mysql 유저,디비생성 | 조인상 | 2010.05.12 | 10399 |