The Pursuit of Happyness

반응형

이전 포스팅에서 CentOS 7.x 서버에 MySQL 5.6 을 설치해 보았습니다.  [MySQL 설치 다시보기]


이번 포스팅에서는 MySQL 설치 후에 필요한 세팅에 대해서 알아보도록 하겠습니다.


MySQL은 시작할 때 /etc/my.cnf 파일을 읽어서 필요할 설정을 하게 됩니다.


아래 명령으로 해당 파일을 열어서 편집합니다.


vi /etc/my.cnf


파일을 열어보면 [mysqld], [mysqld_safe] 와 같이 설정 영역이 나뉘어져 있습니다. 설정은 반드시 필요한 영역에 적어줘야 합니다.


1. DB 경로 설정

- [mysqld] 에 있는 datadir 의 경로를 변경해 줍니다. datadir을 변경할 때는 변경할 datadir의 context를 같이 변경해 주어야 합니다.


[mysqld]

datadir=/var/lib/mysql


- context 변경 (mysql DB 경로를 /datadir 로 변경했다고 가정) 

다음 중 하나만 실행해 주면 됩니다.


  • selinux 상에서 context 변경


- semanage 설치


yum install policycoreutils-python


- context 설정 변경


semanage fcontext -a -t mysqld_db_t "/datadir(/.*)?"


- 변경된 설정 적용


restorecon -Rv /datadir


  • chcon 을 이용해서 context 직접 변경


chcon --reference=/var/lib/mysql /datadir


    2. 기본 DB 엔진 설정

    - 테이블을 생성할 때 기본으로 사용할 DB 엔진을 설정할 수 있습니다. 트랜젝션을 지원하는 InnoDB 엔진을 기본으로 설정하려면 다음을 추가해 주면 됩니다.


    [mysqld]

    default-storage-engine=InnoDB


    MySQL 4.x 버전에서는 default-storage-engine 대신 default-table-type 이라는 옵션을 사용했었는데, 5.x 버전에서는 이 설정이 있으면 에러가 나면서 MySQL이 실행되지 않습니다.


    3. 인코딩 설정

    - 한글이나 일본어 중국어 등의 문자를 사용하는 경우 utf8 방식으로 인코딩을 하여 저장하는 것이 편리합니다.

    인코딩에 대해서는 데이터가 저장될 때의 인코딩과 클라이언트와 서버간의 주고 받는 데이터의 인코딩 등이 다르게 설정될 수 있으므로, 데이터 저장에 대한 것은 [mysqld] 영역에 클라이언트 접속시의 기본 인코딩은 [client] 영역에 다음과 같이 적어 주면 됩니다.


    [mysqld]

    character-set-server=utf8

    collation-server=utf8_general_ci


    [client]

    default-character-set=utf8


    MySQL에서는 서버, 데이터베이스, 테이블, 컬럼에 대해서 각각의 인코딩 방식을 적용할 수 있습니다. 이미 생성된 데이터베이스나 테이블 등은 백업 / 리스토어 시에 해당 인코딩 설정이 붙어서 오기 때문에 기존에 생성된 데이터베이스, 테이블, 컬럼에 대해서는 alter 명령어로 변경해 주는 작업이 필요할 수 있습니다.


    4. Slow Query 로그 설정

     - MySQL의 성능을 모니터링 하기 위해서 필요한 설정입니다. MySQL 서버에서 처리하는 query 중에 지나치게 오랜 시간이 소요되어 퍼포먼스에 영향을 주는 query가 없는지 혹은 index를 타지 않아 문제의 소지가 될 만한 query가 있는지를 로그에 남기는 작업입니다.

    slow-query-log 는 Slow Query 로그를 남긴다는 설정입니다. slow-query-log=1 과 같은 의미 입니다.

    long_query_time은 Slow Query 로그에 남길 기준 시간을 초단위로 설정합니다.

    log_queries_not_using_indexes 는 index를 타지 않는 Query를 로그에 기록합니다.


    [mysqld]

    slow-query-log

    long_query_time=2

    log_queries_not_using_indexes



    slow_query_log_file 옵션으로 파일명을 별도로 설정을 하지 않았다면, MySQL DB가 설치된 경로에 localhost-slow.log 파일에 Slow Query 로그가 생성됩니다.


    5. Max Connections 설정

    최대 접속 가능 클라이언트 숫자 지정 (default 151)


    [mysqld]

    max_connections=500



    6. Timeout 시간 지정

    default 28800


    [mysqld]

    wait_timeout=60











    반응형

    반응형

    PHP 기본 설정에서는 보안상 한번에 업로드 되는 파일 크기를 2MB로 제한하고 있습니다.

    이 제한 설정을 변경하기 위해서는 다음과 같이 합니다.


    1. php.ini 파일을 vi 에디터 등으로 열어 봅니다. (Ubuntu 14.04 기준 기본 경로 - /etc/php5/apache2/php.ini)

     > vi /etc/php5/apache2/php.ini


    2. upload_max_filesize 항목과 post_max_size 항목을 찾아서 원하는 값으로 변경합니다.

    이름에서 알수 있듯이 upload_max_filesize 는 php 에서 업로드 할수 있는 최대 파일 크기이고 post_max_size 는 POST 방식으로 전송되는 업로드 파일의 최대 크기 입니다. 

    100MB로 크기를 변경한다면, 아래와 같이 적어 주면 됩니다.

     upload_max_filesize = 100M
     post_max_size = 100M

    파일 저장후 apache2 (혹은 httpd) 를 재시작하면 바로 적용이 됩니다.









    반응형

    반응형

    현재 사용중인 SWAP 메모리 확인

    more /proc/swaps


    SWAP 메모리로 사용할 파일 생성 (파일당 1GB)

    cd /var/tmp

    dd if=/dev/zero of=swapfile1 bs=1024 count=1048576

    dd if=/dev/zero of=swapfile2 bs=1024 count=1048576


    SWAP 영역으로 설정

    /sbin/mkswap -c -v1 /var/tmp/swapfile1

    /sbin/mkswap -c -v1 /var/tmp/swapfile2


    SWAP 파일 사용시작

    /sbin/swapon /var/tmp/swapfile1

    /sbin/swapon /var/tmp/swapfile2


    바뀐 SWAP 메모리 확인

    more /proc/swaps


    시작시 SWAP 메모리가 적용이 되도록 설정
    vi /etc/rc.d/rc.sysinit

    아래 라인을 검색
    swapon -a

    다음 내용을 같은 줄에 추가
    swapon /var/tmpswapfile1 swapon /var/tmp/swapfile2

    결과는 다음과 같음
    swapon -a swapon /var/tmpswapfile1 swapon /var/tmp/swapfile2


    반응형