아래 내용을 적용해봤습니다.
http://kakaodbe.blogspot.kr/2013/09/mysql-linux-filesystem-cache-2.html
KT UCloudBiz 서비스를 이용중이고, CentOS 6.4 적용중입니다. 기본 서버 환경이기 때문에 몇 가지 프로그램과 라이브러리가 필요합니다.
$ yum install gcc perl-Inline perl-Parse-RecDescent
그리고 적용할 소스를 가져옵니다.
$ wget https://raw.github.com/yoshinorim/unmap_mysql_logs/master/unmap_mysql_logs
$ chmod +x unmap_mysql_logs
$ ./unmap_mysql_logs
unmap_mysql_logs 파일에 설정내용이 들어있으므로, 에러 발생 시 설정 내용을 변경해줘야 합니다.
예1)
readdir() attempted on invalid dirhandle DIR at ./unmap_mysql_logs line 36.
이 오류는 32 라인에서 $binlog_name 값을 shift 라고 정의하고 24 라인에서 디렉토리값을 추가로 지정해놔서 발생하는 오류입니다.
my @target_dirs = ( '/var/lib/mysql', '/var/lib/mysql/innodb_logs' );
...
my $binlog_name = shift;
...
위의 두 값을
my @target_dirs = ( '/var/lib/mysql' );
...
my $binlog_name = "logbin";
...
와 같이 변경해주면 됩니다. 저의 경우 my.cnf 에서 log-bin=galera 으로 설정해놓았기 때문에 아래 값은 logbin 이 아니라 galera 로 설정하였습니다.
2014년 1월 6일 월요일
2014년 1월 5일 일요일
Ubuntu 에 MariaDB 5.5 & Galera Cluster 설치
MariaDB 5.5 설치를 위한 사전 작업은 아래 링크를 참고합니다.
https://downloads.mariadb.org/mariadb/repositories/#mirror=kaist&distro=Ubuntu&distro_release=saucy&version=5.5
https://mariadb.com/kb/en/getting-started-with-mariadb-galera-cluster/
$ sudo apt-get install software-properties-common
$ sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xcbcb082a1bb943db
$ sudo add-apt-repository 'deb http://ftp.kaist.ac.kr/mariadb/mariadb-5.5.33/repo/ubuntu saucy main'
한국 미러는 kaist 서버 밖에 존재하지 않는 것 같습니다. 매우 고마운 서버이긴 하나 좀 느리다는게 단점이라면 단점입니다.
$ sudo apt-get update
$ sudo apt-get install mariadb-galera-server
mariadb-galera-server 를 설치합니다. mariadb-galera-server 에 mariadb-server 가 포함되어 있는 형태인 것 같습니다. CentOS 처럼 각각 설치하는 방식이 아닙니다. 설치 도중 MariaDB 에서 사용할 root 패스워드를 물어봅니다. CentOS 와는 달리 설치 스크립트에서 mysql_install_db 를 실행해서 DB 도 만들어둡니다. 별도의 디스크에 datadir 을 만들꺼라면 복사를 하거나 새로 mysql_install_db 을 실행해야 합니다.
insert 성능 향상을 위해 TokuDB 을 사용합니다. 5.5.34 이상의 버젼이라면 이미 포함되어 있으므로 아래 링크와 같이 별도 설치를 할 필요는 없습니다. 단지, /etc/mysql/conf.d/tokudb.cnf 에 있는 주석만 해제해주면 됩니다.
https://mariadb.com/kb/en/how-to-enable-tokudb-in-mariadb/
Multi-Thread 에서의 성능향상을 위해 jemalloc 을 설치하고 적용합니다. 이미 Ubuntu 버젼의 MariaDB 5.5 는 jemalloc 을 적용해서 complie 되어 있다고 합니다.
$ sudo apt-get install libjemalloc1
$ sudo vi /usr/bin/mysqld_safe
19 라인 정도에 위치한
mysqld_ld_preload=
에 jemalloc 라이브러리를 연결해줍니다.
mysqld_ld_preload=/usr/lib64/libjemalloc.so.1
mysql 을 재시작한 뒤 jemalloc 이 제대로 연동되었는지에 대한 확인은 아래와 같이 합니다.
$ sudo pmap `pidof mysqld` | grep jemalloc
https://downloads.mariadb.org/mariadb/repositories/#mirror=kaist&distro=Ubuntu&distro_release=saucy&version=5.5
https://mariadb.com/kb/en/getting-started-with-mariadb-galera-cluster/
$ sudo apt-get install software-properties-common
$ sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xcbcb082a1bb943db
$ sudo add-apt-repository 'deb http://ftp.kaist.ac.kr/mariadb/mariadb-5.5.33/repo/ubuntu saucy main'
한국 미러는 kaist 서버 밖에 존재하지 않는 것 같습니다. 매우 고마운 서버이긴 하나 좀 느리다는게 단점이라면 단점입니다.
$ sudo apt-get update
$ sudo apt-get install mariadb-galera-server
mariadb-galera-server 를 설치합니다. mariadb-galera-server 에 mariadb-server 가 포함되어 있는 형태인 것 같습니다. CentOS 처럼 각각 설치하는 방식이 아닙니다. 설치 도중 MariaDB 에서 사용할 root 패스워드를 물어봅니다. CentOS 와는 달리 설치 스크립트에서 mysql_install_db 를 실행해서 DB 도 만들어둡니다. 별도의 디스크에 datadir 을 만들꺼라면 복사를 하거나 새로 mysql_install_db 을 실행해야 합니다.
insert 성능 향상을 위해 TokuDB 을 사용합니다. 5.5.34 이상의 버젼이라면 이미 포함되어 있으므로 아래 링크와 같이 별도 설치를 할 필요는 없습니다. 단지, /etc/mysql/conf.d/tokudb.cnf 에 있는 주석만 해제해주면 됩니다.
https://mariadb.com/kb/en/how-to-enable-tokudb-in-mariadb/
Multi-Thread 에서의 성능향상을 위해 jemalloc 을 설치하고 적용합니다. 이미 Ubuntu 버젼의 MariaDB 5.5 는 jemalloc 을 적용해서 complie 되어 있다고 합니다.
$ sudo apt-get install libjemalloc1
$ sudo vi /usr/bin/mysqld_safe
19 라인 정도에 위치한
mysqld_ld_preload=
에 jemalloc 라이브러리를 연결해줍니다.
mysqld_ld_preload=/usr/lib64/libjemalloc.so.1
mysql 을 재시작한 뒤 jemalloc 이 제대로 연동되었는지에 대한 확인은 아래와 같이 합니다.
$ sudo pmap `pidof mysqld` | grep jemalloc
2014년 1월 4일 토요일
CentOS 6.4 에서 jemalloc 설치 및 MariaDB 5.5 적용
yum 으로 간단하게 jemalloc 설치합니다. EPEL 저장소에 존재하므로 EPEL 저장소 연결은 먼저 해두어야 합니ㅏㄷ.
# yum install jemalloc
pmap 으로 jemalloc 이 적용되었는지 확인할 수 있습니다.
# pmap `pidof mysqld` | grep jemalloc
설치만 한 상태라면 아무런 결과가 나오지 않아야 정상입니다..
mysqld 실행 스크립트를 수정하여 mysqld 에만 jemalloc 이 이용되도록 수정합니다.
# vi /usr/bin/mysqld_safe
19 라인 정도에 위치한
mysqld_ld_preload=
에 jemalloc 라이브러리를 연결해줍니다.
mysqld_ld_preload=/usr/lib64/libjemalloc.so.1
# service mysql stop
# service mysql start --wsrep_cluster_address='gcomm://'
지금 MariaDB 5.5 에 Galera Cluster 을 연결해서 사용중인 서버이고, 메인 서버에 적용하는 것이라서 --wsrep_cluster_address 옵션을 이용해서 새로운 클러스터임을 알려줍니다. (필요없으면 지우고 실행)
pmap 으로 jemalloc 이 적용되었는지 다시 확인
# pmap `pidof mysqld` | grep jemalloc
뭔가 결과가 나와야 정상
# yum install jemalloc
pmap 으로 jemalloc 이 적용되었는지 확인할 수 있습니다.
# pmap `pidof mysqld` | grep jemalloc
설치만 한 상태라면 아무런 결과가 나오지 않아야 정상입니다..
mysqld 실행 스크립트를 수정하여 mysqld 에만 jemalloc 이 이용되도록 수정합니다.
# vi /usr/bin/mysqld_safe
19 라인 정도에 위치한
mysqld_ld_preload=
에 jemalloc 라이브러리를 연결해줍니다.
mysqld_ld_preload=/usr/lib64/libjemalloc.so.1
# service mysql stop
# service mysql start --wsrep_cluster_address='gcomm://'
지금 MariaDB 5.5 에 Galera Cluster 을 연결해서 사용중인 서버이고, 메인 서버에 적용하는 것이라서 --wsrep_cluster_address 옵션을 이용해서 새로운 클러스터임을 알려줍니다. (필요없으면 지우고 실행)
pmap 으로 jemalloc 이 적용되었는지 다시 확인
# pmap `pidof mysqld` | grep jemalloc
뭔가 결과가 나와야 정상
피드 구독하기:
글 (Atom)