2013년 6월 22일 토요일

Linux에 Generic binary를 사용한 MySQL 5.6.x 설치 및 설정

이 글에서는 Generic binary를 사용한 MySQL 5.6.x의 설치 방법에 대해서 예를 들며 설명한다.

Creating the User and Group Accounts
당신이 tar 기반 설치를 준비하는데 필요한 첫 번째 단계는 Linux 사용자와 group 계정을 생성하는 것이다.  다음의 과정을 통해 Linux 계정들을 생성한다.

  • Linux에 root 사용자로 login한다.
  • group 계정을 생성.

# groupadd mysql

  • 사용자 계정 생성.

# useradd -g mysql mysql

여기까지가 필요한 계정들을 생성하는 과정이다. 다음 설치과정을 진행하자.

Download & Unpacking the Tar File
MySQL 설치 과정의 다음 단계는 tar binary file을 download하여 /usr/local/ directory나 원하는 위치에 복사하고 압축을 푸는 것이다. 여기에서는 /usr/local/ directory를 사용한다.

다음은 단계별로 download와 복사, 압축풀기를 하는지 설명하고 있다.
  • MySQL 개발자 site에서 MySQL Community Server를 download 한다. http://dev.mysql.com/downloads/mysql/#downloads에서 Generally Available (GA) Releases의 Linux - Generic에서 Compressed TAR Archive를 자신의 platform(32 또는 64 bit)에 맞게 선택하여 download한다.
  • download한 file을 /usr/local/ directory로 복사한다.

# cp mysql-VERSION-OS.tar.gz /usr/local/
# cd /usr/local/

  • 복사한 tar archive file의 압축을 풀어준다.

# tar –zxvf mysql-VERSION-OS.tar.gz

  • 압축이 해제된 directory의 이름을 사용하기에 용이하게 변경한다.

# mv full-path-to-mysql-VERSION-OS mysql

Setting up the configuration file
최초 MySQL의 setting 값들을 설정하여 configuration file을 생성한다.

  • support-files directory 내의 my-default.cnf file을 복사한다.
# cp ./support-files/my-default.cnf /etc/my.cnf

  • text 편집기로 복사된 my.cnf file을 편집한다.

# vim /etc/my.cnf

          기본 설정 내용(setting 값들을 변경하여 DB tuning을 수행할 수 있다.)
# MySQL client library initialization.
#
[client]
#password​= [your_password]
port​= 3306
socket​= /tmp/mysql.sock
 
# default character set settings
default-character-set = utf8
 
# *** Application-specific options follow here ***
 
#
# The MySQL server
#
[mysqld]
 
# generic configuration options
port​= 3306
socket​= /tmp/mysql.sock
 
# MySQL error log path setting
log-error=/var/log/mysqld.log
# Print warnings to the error log file.
log_warnings
 
# slow query log settings
slow_query_log
slow_query_log_file=/var/log/mysql-slow-query.log
long_query_time = 10
log_queries_not_using_indexes
 
# default character & collation set settings
character-set-server = utf8
collation-server = utf8_general_ci
 
back_log = 50
max_connections = 100
max_connect_errors = 10
table_open_cache = 2048
max_allowed_packet = 32M
binlog_cache_size = 1M
max_heap_table_size = 64M
read_buffer_size = 2M
read_rnd_buffer_size = 16M
sort_buffer_size = 8M
join_buffer_size = 8M
thread_cache_size = 8
thread_concurrency = 8
query_cache_size = 64M
query_cache_limit = 2M
ft_min_word_len = 4
 
# default Storage Engine setting
default-storage-engine = InnoDB
 
thread_stack = 192K
transaction_isolation = REPEATABLE-READ
 
tmp_table_size = 64M
 
#*** MyISAM Specific options
key_buffer_size = 32M
bulk_insert_buffer_size = 64M
myisam_sort_buffer_size = 128M
myisam_max_sort_file_size = 10G
myisam_repair_threads = 1
myisam_recover
 
# *** INNODB Specific options ***
innodb_additional_mem_pool_size = 16M
innodb_buffer_pool_size = 2G
innodb_data_file_path = ibdata1:10M:autoextend
innodb_write_io_threads = 8
innodb_read_io_threads = 8
innodb_thread_concurrency = 16
innodb_flush_log_at_trx_commit = 1
innodb_log_buffer_size = 8M
innodb_log_file_size = 256M
innodb_log_files_in_group = 3
innodb_max_dirty_pages_pct = 90
innodb_lock_wait_timeout = 120
 
 
[mysqldump]
quick
 
max_allowed_packet = 32M
 
[mysql]
no-auto-rehash
 
[myisamchk]
key_buffer_size = 512M
sort_buffer_size = 512M
read_buffer = 8M
write_buffer = 8M
 
[mysqlhotcopy]
interactive-timeout
 
[mysqld_safe]
open-files-limit = 8192


Initializing the Installation
tar archive의 압축을 해제하고 나서 설치 과정의 일부로 생성된 mysql database를 반드시 초기화해주어야 한다. 압축을 풀고 /usr/local/mysql/scripts directory 내에 mysql_install_db라는 script를 실행한다. 실행 후 반드시 두 개의 directory의 소유권을 변경해야지 MySQL 설치를 마무리할 수 있다.

다음 과정을 통해 MySQL 설치에서 초기화까지 진행할 수 있다.

  • 첫째로 다음 명령어를 사용하여 생성된 directory(/usr/local/mysql)로 이동한다.

# cd mysql

  • root로 설치 directory 내에서 다음 명령어를 실행하여 소유권을 mysql로 변경하라.

# chown -R mysql .
# chgrp -R mysql .

  • 그리고 반드시 다음 명령어를 실행하여 mysql_install_db script를 실행한다.

# scripts/mysql_install_db --user=mysql
    이 script는 MySQL database를 생성하고 table들에 기본 권한들을 설정하여 초기화한다.
    이 script는 보통 처음 MySQL을 system 상에 처음 설치했을 때 한번만 실행된다.

  • 다음 단계는 현재 directory와 subdirectory들의 소유권을 root 사용자를 변경한다.
# chown -R root .

  • 다음으로 반드시 실질적인 database file들을 포함하는 data directory의 소유권을 이전에 생성한 mysql 사용자 계정으로 변경해야 한다.

# chown –R mysql data

  • MySQL server를 Start 한다.

# bin/mysqld_safe --user=mysql &

  • 다음 명령어를 사용하여 root 계정의 암호를 지정한다.

# bin/mysqladmin -u root password ‘new-password
    new-password에 지정할 암호를 기입한다.

  • 다음 명령어를 통해 mysql console에 접근할 수 있는지 확인한다.

# bin/mysql -u root -p

  • MySQL shutdown 시킨다.

# bin/mysqladmin -u root shutdown

  • init script를 등록하여 system startup시에 MySQL을 자동으로 start하려면 다음 명령어를 단계적으로 실행한다.

# cp support-files/mysql.server /etc/init.d/mysql
# chmod +x /etc/init.d/mysql
# chkconfig mysql --add
# chkconfig mysql --level 345 on
# service mysql [start/stop/restart]

configure log rotate
다음은 기본 error log를 rotate하도록 하는 설정을 진행한다.
  • support-files directory 내에 있는 mysql-log-rotate file을 편집한다.
# vim support-files/mysql-log-rotate

  • 다음과 같이 위에서 설정한 내용으로 변경 및 rotate count를 늘린다.
/var/log/mysqld.log /var/log/mysql-slow-query.log {
       # create 600 mysql mysql
       notifempty
       daily
       rotate 7
       missingok
       compress
   postrotate
       # just if mysqld is really running
       if test -x /usr/local/mysql/bin/mysqladmin && \
          /usr/local/mysql/bin/mysqladmin ping &>/dev/null
       then
          /usr/local/mysql/bin/mysqladmin flush-logs
       fi
   endscript
}
}

  • mysql-log-rotate file을 /etc/logrotate.d directory에 복사한다.
# cp support-files/mysql-log-rotate /etc/logrotate.d/

  • 위의 script에서 mysqladmin utility가 정상적으로 동작하기 위해서 다음 file을 생성한다.
# vim /root/.my.cnf

[mysqladmin]
password = [root 사용자 암호]
user = root

# chmod 600 /root/.my.cnf

  • 다음 명령어로 정상적으로 log rotate가 되는지 확인한다.
# logrotate -f mysql-log-rotate



이로서 MySQL을 generic binary를 사용하여 설치하고 사용할 준비가 완료되었다.