MariaDB 10.2.13 소스 설치
MariaDB 는 MySQL 의 오픈소스 버전 입니다. MySQL 를 최초로 개발한 사람이 점점 폐쇄성이 짙어가는 MySQL 을 대체하기 위해 MySQL 을 복제하고 기능을 개선한 MySQL 의 또 다른 버전 입니다.
현재 MariaDB 는 10.2.13 버전 입니다. MariaDB 10 소스 설치를 해보겠습니다. 설치 환경은 다음과 같습니다.
- CentOS 7
- 64bit
준비
다음의 패키지가 설치되어 있어야 합니다.
1 |
]# yum install gcc.x86_64 gcc-c++.x86_64 wget.x86_64 bzip2-devel.x86_64 pkgconfig.x86_64 openssl-devel.x86_64 make.x86_64 man-db.x86_64 nasm.x86_64 readline-devel.x86_64 ncurses-devel.x86_64 automake* autoconf* pcre-devel.x86_64 cmake.x86_64 libaio-devel.x86_64 libevent-devel.x86_64 bison.x86_64 bison-devel.x86_64 numactl-devel.x86_64 cracklib-devel.x86_64 pam-devel.x86_64 systemd-devel.x86_64 |
다운로드 및 unpack
1 2 |
]# https://downloads.mariadb.org/interstitial/mariadb-10.2.13/source/mariadb-10.2.13.tar.gz/from/http%3A//ftp.yz.yamagata-u.ac.jp/pub/dbms/mariadb/ ]# tar xvzf index.html |
Configure and make and 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 |
# 64bit 를 위한 설정. export CFLAGS='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -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 -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=/opt/mariadb-10.2.13 \ -DWITH_INNOBASE_STORAGE_ENGINE=1 \ -DWITH_ARCHIVE_STORAGE_ENGINE=1 \ -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \ -DMYSQL_DATADIR=/opt/mariadb-10.2.13/data \ -DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \ -DWITH_PARTITION_STORAGE_ENGINE=1 \ -DWITH_FEDERATEDX_STORAGE_ENGINE=1 \ -DWITH_ARIA_STORAGE_ENGINE=1 \ -DWITH_XTRADB_STORAGE_ENGINE=1 \ -DWITH_QUERY_CACHE_INFO=ON \ -DWITH_QUERY_RESPONSE_TIME=ON \ -DWITH_SAFEMALLOC=AUTO \ -OPENSSL_ROOT_DIR=/usr \ -OPENSSL_INCLUDE_DIR=/usr/include \ -OPENSSL_LIBRARIES=/usr/lib \ -DWITH_LOCALES=ON \ -DDEFAULT_CHARSET=utf8 \ -DDEFAULT_COLLATION=utf8_general_ci \ -DENABLED_LOCAL_INFILE=1 \ -DWITH_EXTRA_CHARSETS=all \ -DWITH_READLINE=1 \ -DWITH_SYSTEMD=yes \ -DWITH_SSL=system \ -DWITH_ZLIB=system # 컴파일 make # 설치 make install |
설치후 작업
설치가 끝난 후에는 수동으로 옮겨주어야할 파일들이 존재 합니다. 그래서 설치 후 작업을 다음과 같이 진행 합니다.
계정을 추가 합니다.
1 2 |
/usr/sbin/groupadd -g 27 -o -r maria /usr/sbin/useradd -M -g maria -o -r -d /opt/mariadb/logs -s /bin/false -c "MariaDB Server" -u 27 maria |
디렉토리 설정과 관련된 my.cnf 내용은 다음과 같습니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
basedir = /opt/mariadb # 이 디렉토리의 소유권과 그룹은 user 에서 지정한 사용자와 그룹이어야 한다. datadir = /opt/dbstorage/mysql_data # 이 디렉토리는 Mysql 서버가 내부적 작업을 할때 임시로 사용하게 된다. # 예를들어 대량의 select 처리를 위해서 임시 테이블을 만들거나 할 경우에 여기에 임시로 파일이 생성될 수 있다. tmpdir = /opt/mariadb/tmp socket = /opt/mariadb/run/mysql.sock pid-file = /opt/mariadb/run/mysqld.pid log_error = /opt/mariadb/logs/mariadb_error.log general_log_file = /opt/mariadb/logs/general_query_all.log slow_query_log_file = /opt/mariadb/logs/slow_query.log innodb_data_home_dir = /opt/dbstorage/InnoDB innodb_log_group_home_dir = /opt/dbstorage/InnoDB/redoLogs innodb_undo_directory = /opt/dbstorage/InnoDB/undoLogs |
다음과 같이 디렉토리를 생성하고 소유권을 바꿔 줍니다.
1 2 3 4 5 6 7 8 9 10 11 12 |
mkdir /opt/mariadb/tmp mkdir /opt/mariadb/run mkdir /opt/mariadb/logs mkdir -p /opt/dbstorage/InnoDB mkdir -p /opt/dbstorage/InnoDB/redoLogs mkdir -p /opt/dbstorage/InnoDB/undoLogs chown -R maria: /opt/dbstorage cd /opt/mariadb chown -R maria.maria . chown -R root . chown -R maria.maria logs tmp run |
MariaDB 라이브러리 시스템 인식.
1 2 |
echo "/opt/mariadb/lib" > /etc/ld.so.conf.d/mariadb10.conf ldconfig |
시스템 데이터베이스 생성.
1 2 |
cd /opt/mariadb ./scripts/mysql_install_db --defaults-file=/etc/my.cnf --user=maria |
Systemd 스크립트 등록.
user, group 을 mysql 에서 maria 로 바꿔 주고 등록해줍니다.
1 2 3 4 5 6 7 8 9 10 |
]# vim /opt/mariadb/support-files/systemd/mariadb.service User=maria Group=maria ]# cp /opt/mariadb/support-files/systemd/mariadb.service /etc/systemd/system ]# cd /etc/systemd/system ]# systemctl enable mariadb.service Created symlink from /etc/systemd/system/mysql.service to /etc/systemd/system/mariadb.service. Created symlink from /etc/systemd/system/mysqld.service to /etc/systemd/system/mariadb.service. Created symlink from /etc/systemd/system/multi-user.target.wants/mariadb.service to /etc/systemd/system/mariadb.service. |
galera_recovery 파일에 mysql 를 maria 로 바꿔 줍니다.
1 2 |
- 26 user="mysql" + 26 user="maria" |
다음과 같이 mariadb 를 시작해 줍니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
]# systemctl start mariadb ]# systemctl status mariadb ● mariadb.service - MariaDB 10.2.13 database server Loaded: loaded (/etc/systemd/system/mariadb.service; enabled; vendor preset: disabled) Active: active (running) since 일 2018-03-04 17:12:44 KST; 4min 13s ago Docs: man:mysqld(8) https://mariadb.com/kb/en/library/systemd/ Process: 27487 ExecStartPost=/bin/sh -c systemctl unset-environment _WSREP_START_POSITION (code=exited, status=0/SUCCESS) Process: 27181 ExecStartPre=/bin/sh -c [ ! -e /opt/mariadb-10.2.13/bin/galera_recovery ] && VAR= || VAR=`/opt/mariadb-10.2.13/bin/galera_recovery`; [ $? -eq 0 ] && systemctl set-environment _WSREP_START_POSITION=$VAR || exit 1 (code=exited, status=0/SUCCESS) Process: 27179 ExecStartPre=/bin/sh -c systemctl unset-environment _WSREP_START_POSITION (code=exited, status=0/SUCCESS) Main PID: 27451 (mysqld) Status: "Taking your SQL requests now..." CGroup: /system.slice/mariadb.service └─27451 /opt/mariadb-10.2.13/bin/mysqld 3월 04 17:12:43 oraserv1 systemd[1]: Starting MariaDB 10.2.13 database server... 3월 04 17:12:43 oraserv1 mysqld[27451]: 2018-03-04 17:12:43 139978843355328 [Note] /opt/mariadb-10.2.13/bin/mysqld (mysqld 10.2.13-MariaDB-log) starting as ... 27451 ... 3월 04 17:12:44 oraserv1 systemd[1]: Started MariaDB 10.2.13 database server. Hint: Some lines were ellipsized, use -l to show in full. |