MariaDB 10 소스 설치
MariaDB 는 MySQL 의 오픈소스 버전 입니다. MySQL 를 최초로 개발한 사람이 점점 폐쇄성이 짙어가는 MySQL 을 대체하기 위해 MySQL 을 복제하고 기능을 개선한 MySQL 의 또 다른 버전 입니다.
현재 MariaDB 는 10.0.14 버전 입니다. MariaDB 10 소스 설치를 해보겠습니다. 설치 환경은 다음과 같습니다.
- 배포판: CentOS 7
- 아키텍쳐: 64bit
준비
MariaDB 10.0.14 버전은 MariaDB 홈페이지에서 다운받을 수 있습니다. 그런데, 이 소스 버전을 가지고 설치를 할 수도 있지만, Fedora 배포판에서 패치한 버전을 가지고 설치를 해보겠습니다.
Fedora 배포판의 경우에 10.0.14 버전에 보안 패치나 경로에 대한 패치 그리고 CentOS 7 의 Systemd 를 지원하도록 하는 스크립트를 제공 합니다. 이것은 SRPM 을 다운받아 소스를 패치하는 방법을 썼습니다.
Configure && Compile && Install
MariaDB 는 cmake 를 이용하기 때문에 일반 Configure 와는 다르게 이것을 이용 합니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
# 64bit 를 위한 설정. export CFLAGS='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -m64 -mtune=generic -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -fPIC -fno-delete-null-pointer-checks' export CXXFLAGS='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -m64 -mtune=generic -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -fPIC -fno-delete-null-pointer-checks' export LDFLAGS=' -pie -Wl,-z,relro,-z,now' # cmake 를 이용한 configure cmake \ -DCMAKE_INSTALL_PREFIX=/usr/local/mariadb-10.0.14 \ -DINSTALL_SYSCONFDIR=/usr/local/mariadb-10.0.14/etc \ -DINSTALL_SYSCONF2DIR=/usr/local/mariadb-10.0.14/etc/my.cnf.d \ -DINSTALL_DOCDIR=share/doc/mariadb-10.0.14 \ -DINSTALL_DOCREADMEDIR=share/doc/mariadb-10.0.14 \ -DINSTALL_INCLUDEDIR=include/mysql \ -DINSTALL_INFODIR=share/info \ -DINSTALL_LIBDIR=lib64/mysql \ -DINSTALL_MANDIR=share/man \ -DINSTALL_MYSQLSHAREDIR=share/mariadb \ -DINSTALL_MYSQLTESTDIR=share/mysql-test \ -DINSTALL_PLUGINDIR=lib64/mysql/plugin \ -DINSTALL_SBINDIR=libexec \ -DINSTALL_SCRIPTDIR=bin \ -DINSTALL_SQLBENCHDIR=share \ -DINSTALL_SUPPORTFILESDIR=support-files \ -DMYSQL_DATADIR=/usr/local/mariadb-10.0.14/data \ -DTMPDIR=/usr/local/mariadb-10.0.14/tmp \ -DMYSQL_UNIX_ADDR=/var/lib/mariadb/mariadb.sock \ -DPID_FILE_DIR=/var/run/mariadb \ -DDAEMON_NAME=mariadb \ -DENABLED_LOCAL_INFILE=ON \ -DWITH_SSL=system \ -DWITH_ZLIB=system \ -DWITH_JEMALLOC=no \ -DWITH_ARIA_STORAGE_ENGINE=ON \ -DUSE_ARIA_FOR_TMP_TABLES=ON \ -DWITH_PARTITION_STORAGE_ENGINE=ON \ -DWITH_PERFSCHEMA_STORAGE_ENGINE=ON \ -DWITH_QUERY_CACHE_INFO=ON \ -DWITH_QUERY_RESPONSE_TIME=ON \ -DWITH_SAFEMALLOC=AUTO \ -DWITH_XTRADB_STORAGE_ENGINE=ON \ -DWITH_LOCALES=ON \ -DDEFAULT_CHARSET=utf8 \ -DDEFAULT_COLLATION=utf8_general_ci \ -DWITH_EXTRA_CHARSETS=all # 컴파일 make # 설치 make install |
위 설정은 다음과 같은 주요한 기능을 가집니다.
- Aria 스토리지 엔진 지원
- Partition 스토리지 엔진 지원
- XtraDB 스토리지 엔진 지원
- TokuDB 플러그인 지원
설치 후 작업
Fedora 배포판의 설정중에 디렉토리 설정 부분을 많이 인용을 했기 때문에 기존의 컴파일 설치한 디렉토리와는 사뭇 다릅니다. 대부분의 소스 컴파일을 설치했을 때에는 대부분 설치할 디렉토리인 PREFIX 만 지정하기 때문에 벤치디렉토리, 서포트디렉토리등이 모드 PREFIX 이하에 놓입니다. 하지만 위 설정을 보시면 Fedora 배포판 호환인 RedHat 디렉토리 구조를 계승하고 있다는 것을 인지하시기 바랍니다.
설치가 끝난 후에는 수동으로 옮겨주어야할 파일들이 존재 합니다. 그래서 설치 후 작업을 다음과 같이 진행 합니다.
1 2 3 4 5 6 7 8 9 10 |
# mariadb systemd에 파일 설치. install -D -p -m 644 scripts/mysql.service /usr/lib/systemd/system/mariadb.service # mariadb tmpfiles.d에 파일 설치. install -D -p -m 0644 scripts/mysql.tmpfiles.d /usr/lib/tmpfiles.d/mariadb.conf # mysql 호환을 위한 systemd에 파일 설치. install -p -m 644 scripts/mysql-compat.service /usr/lib/systemd/system/mysql.service mkdir -p /usr/lib/systemd/system/mariadb.service.d install -p -m 644 scripts/mysql-compat.conf /usr/lib/systemd/system/mariadb.service.d/mysql-compat.conf # 활성화하기. systemctl enable mariadb |
CentOS 7 데서부터 도입된 systemd 등록을 위한 파일들을 설치 합니다.
그리고 다음과 같이 스크립트 파일들을 복사해 줍니다.
1 2 3 4 5 |
install -p -m 755 scripts/mysql-prepare-db-dir /usr/local/mariadb-10.0.14/libexec/mysql-prepare-db-dir install -p -m 755 scripts/mysql-wait-ready /usr/local/mariadb-10.0.14/libexec/mysql-wait-ready install -p -m 755 scripts/mysql-check-socket /usr/local/mariadb-10.0.14/libexec/mysql-check-socket install -p -m 755 scripts/mysql-check-upgrade /usr/local/mariadb-10.0.14/libexec/mysql-check-upgrade install -p -m 644 scripts/mysql-scripts-common /usr/local/mariadb-10.0.14/libexec/mysql-scripts-common |
이제 mariadb 를 운영하기 위한 계정을 생성해 주고 디렉토리 퍼미션을 조정해 줍니다.
1 2 3 4 5 6 7 8 9 |
# MariaDB 사용을 위한 시스템 계정 생성. /usr/sbin/groupadd -g 27 -o -r mysql >/dev/null 2>&1 /usr/sbin/useradd -M -N -g mysql -o -r -d /usr/local/mariadb-10.0.14/data -s /sbin/nologin -c "MariaDB Server" -u 27 mysql >/dev/null 2>&1 # 디렉토리 소유권을 바꿔 줍니다. chown -R mysql /usr/local/mariadb-10.0.14/data chgrp -R mysql /usr/local/mariadb-10.0.14 mkdir /usr/local/mariadb-10.0.14/tmp mkdir /usr/local/mariadb-10.0.14/logs chown mysql: /usr/local/mariadb-10.0.14/tmp /usr/local/mariadb-10.0.14/logs |
이렇게 한 후에 다음과 같이 MariaDB 에 기본 데이터베이스들을 생성해 줍니다.
1 2 3 4 5 6 7 |
# 심볼릭 링크 만들기. cd /etc ln -s /usr/local/mariadb-10.0.14/etc/my.cnf ln -s /usr/local/mariadb-10.0.14/etc/my.conf.d # mysql_install_db 실행 cd /usr/local/mariadb-10.0.14/ ./bin/mysql_install_db --user=mysql |
이제 다 되었습니다. systemd 를 이용해서 mariadb 를 시작하면 됩니다.
1 2 |
# Mariadb 시작. systemctl start mariadb |
One comment