이 글은 [Fedora 9] 간단하게 리눅스 서버 만들기의 일부로 작성된 글입니다.
개별 기능들에 대한 내용은 전체적인 흐름과 환경에 영향을 받을 수 있다는 점을 참고하세요.
목표 시스템은 아래와 같습니다.
2차 목표 시스템 (Fedora Core 9 + Apache + PHP + MySQL + fastCGI + Textcube)
Linux : Linux reds 2.6.25.14 (Fedora Core 9)
Apache : httpd-2.2.9-1
PHP : php-5.2.6-2
MySQL : mysql-5.0.51
// 설치
# yum install mysql mysql-server
// 서버 시작시 자동 실행 하도록 설정
# /sbin/chkconfig mysqld on
// 자동실행 설정 확인
# /sbin/chkconfig --list | grep mysqld
yum을 이용해 mysql과 mysql-server 를 설치를 진행합니다. php-mysql은 php와 apache 설치 하면서 같이 설치 해주면 됩니다. 컴파일해서 설치한 경우와 몇 가지 다른 점이 있습니다. 다른 점은 아래 표를 참고 하시면 됩니다.
구분 | yum 설치 | 컴파일 설치 |
경로 | /usr/bin/mysql | /usr/local/mysql/bin/mysql |
시작 | /etc/init.d/mysqld start | /usr/local/mysql/bin/mysqld_safe & |
종료 | /etc/init.d/mysqld stop | killall mysqld |
이 글에서는 간단한 설명과 설정 위주로 하고, 넘어 가겠습니다. mysql에서 스토리지 엔진(Storage Engine)으로 사용하는 방식은 기본으로 MyISAM입니다. MyISAM은 일반적인 입출력 상황에 최적화된 기본 엔진 입니다. 하지만 웹서비스와 같이 로딩이 많은 서비스에서 더 좋은 성능을 위한 다른 스토리지 엔진이 innodb입니다. 간단하게 innodb는 데이터를 처리하는 엔진으로 로딩이 많은 데이터처리 엔진이라고 생각하면 됩니다.
스토리지 엔진에 대해 자세히 알고 싶으시면 "MySQL Storage Engine"를 참고하세요.
그럼 설정 방법을 알아 보겠습니다.
// 설정파일 편집
# vi /etc/my.cnf
// ftp 서버 시작 (컴파일 설치)
innodb_data_home_dir = /var/lib/mysql/idb
innodb_data_file_path = ibdata1:256M:autoextend:max:2000M
innodb_log_group_home_dir = /var/lib/mysql/idb
innodb_log_arch_dir = /var/lib/mysql/idb
innodb_buffer_pool_size = 2G
innodb_additional_mem_pool_size = 16M
innodb_log_file_size = 512M
innodb_log_buffer_size = 2M
innodb_flush_log_at_trx_commit = 2
innodb_lock_wait_timeout = 50
innodb_flush_method = O_DSYNC
max_connections = 500
// mysql 재시작
# /etc/init.d/mysqld restart
// 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%';
+-----------------------------------+---------+
| Variable_name | Value |
+-----------------------------------+---------+
| Com_show_innodb_status | 0 |
| Innodb_buffer_pool_pages_data | 178 |
| Innodb_buffer_pool_pages_dirty | 0 |
| Innodb_buffer_pool_pages_flushed | 189 |
| Innodb_buffer_pool_pages_free | 8013 |
| Innodb_buffer_pool_pages_latched | 0 |
| Innodb_buffer_pool_pages_misc | 1 |
| Innodb_buffer_pool_pages_total | 8192 |
| Innodb_buffer_pool_read_ahead_rnd | 0 |
| Innodb_buffer_pool_read_ahead_seq | 0 |
| Innodb_buffer_pool_read_requests | 1398 |
| Innodb_buffer_pool_reads | 0 |
| Innodb_buffer_pool_wait_free | 0 |
| Innodb_buffer_pool_write_requests | 1174 |
| Innodb_data_fsyncs | 6 |
| Innodb_data_pending_fsyncs | 0 |
| Innodb_data_pending_reads | 0 |
| Innodb_data_pending_writes | 0 |
| Innodb_data_read | 0 |
| Innodb_data_reads | 0 |
| Innodb_data_writes | 338 |
| Innodb_data_written | 3399680 |
| Innodb_dblwr_pages_written | 16 |
| Innodb_dblwr_writes | 1 |
| Innodb_log_waits | 0 |
| Innodb_log_write_requests | 75 |
| Innodb_log_writes | 4 |
| Innodb_os_log_fsyncs | 0 |
| Innodb_os_log_pending_fsyncs | 0 |
| Innodb_os_log_pending_writes | 0 |
| Innodb_os_log_written | 37376 |
| Innodb_page_size | 16384 |
| Innodb_pages_created | 178 |
| Innodb_pages_read | 0 |
| Innodb_pages_written | 189 |
| Innodb_row_lock_current_waits | 0 |
| Innodb_row_lock_time | 0 |
| Innodb_row_lock_time_avg | 0 |
| Innodb_row_lock_time_max | 0 |
| Innodb_row_lock_waits | 0 |
| Innodb_rows_deleted | 0 |
| Innodb_rows_inserted | 0 |
| Innodb_rows_read | 0 |
| Innodb_rows_updated | 0 |
+-----------------------------------+---------+
44 rows in set (0.00 sec)
// 데이터베이스 변경
# use wizdb;
// innodb 적용
mysql> ALTER TABLE testtable type=innodb;
Query OK, 0 rows affected (0.29 sec)
Records: 0 Duplicates: 0 Warnings: 0
// 테이블 상태 확인
# mysql> SHOW TABLE STATUS;
innodb_data_home_dir = /var/lib/mysql/idb
- innodb 홈디렉터리 경로를 설정 합니다.
innodb_data_file_path = ibdata1:256M:autoextend:max:2000M
- 데티터 파일 옵션을 설정 합니다. 파일명 : 초기용량 : 자동증가 : 최대사이즈
innodb_log_group_home_dir = /var/lib/mysql/idb
innodb_log_arch_dir = /var/lib/mysql/idb
- 로그 디렉터리 정보
innodb_buffer_pool_size = 2G
- innodb에서 사용할 메모리 양으로 전체 메모리의 50~80% 정도로 설정
innodb_additional_mem_pool_size = 16M
innodb_log_file_size = 512M
- 로그 파일 사이즈로 버퍼풀 사이즈의 25% 정도로 설정
innodb_log_buffer_size = 2M
- 로그 버퍼 사이즈로 성능에 맞춰 로그를 기록하는 경우 크게 설정
innodb_flush_log_at_trx_commit = 2
- 커밋 로그 옵션으로 성능 최적화로 1분마다 저장되도록 2로 설정
innodb_lock_wait_timeout = 50
innodb_flush_method = O_DSYNC
- 성능을 위해 메모리에서 직접 액세스 하도록 설정
기타 상세옵션과 최적화 관련 정보는 아래 참고 링크를 통해서 확인 해주세요.
// mysql 관리자 비밀번호 설정
# mysqladmin -u root password '설정비밀번호'
// mysql 접속
# mysql -u -p
Enter password : 비밀번호
// DB 생성
mysql> CREATE DATABASE wizdata; // wizdata는 사용하고자 하는 DB이름 설정
// 사용자 추가 및 권한 설정
mysql> GRANT ALL ON [DB이름].* TO [사용자ID]@[접속호스트] IDENTIFIED BY 'password' WITH GRANT OPTION;
예) mysql> GRANT ALL ON wizdata.* TO wiz@localhost IDENTIFIED BY '********' WITH GRANT OPTION;
// 설정 적용
mysql> FLUSH PRIVILEGES;
좀더 많은 MySQL 사용법은 인터넷을 참고하시면 좋을 것 같습니다.
* 간단하게 리눅스 서버 만들기
외부참고 링크
* InnoDB 형식의 테이블
* MyISAM 테이블을 InnoDB로 변환하기
* KLDP Wiki MySQL Storage Engine
* The MEMORY (HEAP) Storage Engine
* InnoDB 스타트업 옵션 및 시스템 변수
* internal /tmp/*.{MYD,MYI} files remain, causing subsequent queries to fail
* KLDP MySQL Tuning for innodb #1
* KLDP MySQL Tuning for innodb #2
* http://blog.naver.com/zegalkm/60046350282 - 원문에 대한 정보가 없어서 링크는 제외 했습니다.
[Fedora 9] Samba 로 윈도우와 네트워크 공유하기 (0) | 2008.12.11 |
---|---|
[Fedora 9] OpenSSL 설치하기 (0) | 2008.12.01 |
[Fedora 9] fastCGI 설치 (0) | 2008.11.21 |
[Fedora9] Apache & PHP 설치 (0) | 2008.11.18 |
[Fedora9] FTP 설치 ProFTPD (2) | 2008.10.24 |
Linux 네트워크 관련 명령어 (0) | 2008.10.16 |
[Fedora 9] 한글 터미널 설정 및 yum 설정 (0) | 2008.10.14 |
[Fedora9] 네트워크 설정 및 방화벽 설정 (0) | 2008.10.06 |