MySQL 서버는 기본적으로 데이타 갱신과 관련된 모든 선언문 기록들을 Binary Log 형태로 저장하도록 설정되어 있는데, 이 놈은 그냥 놔두면 절대 지워지지 않아서 나중에 무한 증식해서 디스크 용량을 크게 잡아먹을 수도 있다. 그래서, 무제한 증식을 막기위한 조치로, 아래 처럼 서버 설정 파일에다 expire_logs_days 값을 설정해 놓으면, 지정 기간이 지난 log 파일들은 서버를 재시동할 때마다 확인해서 자동 삭제해 준다.

# expire binary log files automatically after a given number of days
expire_logs_days = 30

물론, 지금 당장 모두 지워버리고 싶다면, 긴급 조치로서 아래의 방법을 사용할 수도 있다:

mysql> FLUSH LOGS;
mysql> RESET MASTER;

여태 신경 안 쓰고 그냥 놔두었더니, 위 명령으로 500MB 이상을 줄일 수 있었다. 😳

아래에 소개될 방법은 MySQL 4.1.x에 적용될 수 있으며, 자세한 내용은 MySQL 설명서를 참고.

전체 서버의 기본 언어 인코딩을 UTF-8으로 설정

서버에 있는 my.ini(windows) 혹은 my.cnf(Unix)파일을 찾습니다. Unix일 경우, 보통 /etc/my.cnf에 있으며, 없다면 새로 만들어야 합니다. 기본 설정 파일은 MySQL 소스 코드와 함께 딸려오는 support-files 폴더 안에, 용도별로 여러 개의 설정 파일들이 있으며, 자신의 서버 환경에 맞는 설정 파일을 골라서 이것을 기준으로 수정해 주면 됩니다. Windows용 설정 파일은 보통 C:\Windows\my.ini에 있습니다.

설정 파일을 열고, [mysqld] 설정 부분에 character-set-server 변수 설정 내용을 다음과 같이 변경/추가합니다.

[mysqld]
character-set-server = utf8

저장하고 MySQL 서버를 재시동하면, 다음에 생성되는 데이터베이스들부터 적용됩니다.

주의할 것은, 여기에 default-collation 변수값을 설정해 줄 필요는 없으며, MySQL 서버가 character set에 적당한 값을 알아서 결정하게 됩니다.
참고 – MySQL 서버의 시스템 변수들

개별 데이터베이스의 기본 언어 인코딩 값을 UTF-8으로 설정

만약, 사용하고 있는 MySQL 애플리케이션들이 다른 언어 인코딩을 사용해서 전체 서버의 기본 언어 인코딩을 UTF-8으로 설정해 줄 수 없다면, 데이터베이스 생성 시 다음과 같은 명령으로 특정 데이타베이스의 기본 언어 인코딩을 설정해 줍니다:

CREATE DATABASE 데이타베이스_이름 DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

ISP에서 제공한 지정 데이타베이스의 기본 인코딩 변경

전체 서버 설정 권한이 ISP에게 있을 때는, 지정된 데이터베이스의 테이블을 생성하기 전에 다음과 같은 명령을 줍니다:

ALTER DATABASE 데이타베이스_이름 DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

이전 데이터베이스의 언어 인코딩을 UTF-8으로 변환

우선, 기존 데이터베이스를 따로 저장한 후에, 다음과 같이 내용을 추출해 냅니다:

mysqldump -uusername -ppassword --opt my_database > oldencoding.sql

추출해 낸 내용을 UTF-8으로 변환(MySQL의 기본 인코딩은 latin1):

iconv -f 기존_인코딩 -t UTF-8 oldencoding.sql > UTF8database.sql

변환한 내용을 기존 데이터베이스로 복구:

mysql -uusername -ppassword my_database < UTF8database.sql

참고 – MySQL가 지원하는 Character Sets와 Collations

덧붙임(2012.8.31): MySQL 5.5.3 이후 버전을 설치하였을 땐 UTF-8에 지정된 모든 심볼을 다 인식하는 utf8mb4 인코딩으로 설정해 주는 것이 더 바람직하겠다. – How to support full Unicode in MySQL databases

PHP 5PHP 5 설치 후에 MySQL 데이타베이스를 사용하려면, PHP 5 소스코드를 컴파일 할 때에 설정 선택사항들 중에 하나인 –with-mysql=[DIR] (mySQL v4.1 이후의 경우에는 –with-mysqli=[DIR])-를 켜주어야 합니다. 여기서 [DIR]는 MySQL이 설치되어 있는 위치가 됩니다. (일반적으로, /usr/local/mysql)

PHP 4 컴파일 시에는 기본적으로 이것의 선택사항이 켜져 있었으나 PHP 5에 와서는 기본적으로 설정되어 있지 않고, MySQL library도 함께 따라오지 않습니다. (이유는 여기를 참고하세요.)

Mac OS X 10.3의 기본 Apache 1.3을 사용하고 있다면, 이미 컴파일되고 대부분의 library가 포함된 Marc Liyanage씨가 만든 PHP Package를 받아서 손쉽게 설치할 수 있습니다.

참고 글: