Table of Contents
Mariadb 11.8.3 을 컴파일 설치 해본다.
환경
설치는 Oracle Linux 10 에서 진행됐다. Oracle Linux 는 RHEL 호환 배포판이다.
의존성 패키지 설치
다음과 같이 의존성 패키지를 설치해야 한다.
1 |
dnf install gcc.x86_64 gcc-c++.x86_64 wget.x86_64 bzip2-devel.x86_64 pkgconf-pkg-config.x86_64 openssl-devel.x86_64 make.x86_64 man-db.x86_64 readline-devel.x86_64 ncurses-devel.x86_64 automake* autoconf dnf install lz4-devel lzo-devel curl-devel xz-devel libxml2-devel libaio-devel snappy-devel libevent-devel |
Mariadb 운영을 위한 시스템 계정 생성
mariadb 를 운영하기 위한 시스템 계정을 다음과 같이 생성한다.
1 2 |
]# /usr/sbin/groupadd -g 27 -o -r mariadb ]# useradd -M -g mariadb -o -r -d /opt/mariadb/logs -s /bin/false -c "MariaDB Server" -u 27 mariadb |
이 계정은 빌드 옵션에서 똑같이 사용된다.
Mariadb 스토리지 디렉토리 생성
mariadb 에서 사용할 데이터베이스 스토리지 드렉토리를 생성한다.
1 2 3 4 5 6 7 8 9 |
]# mkdir -p /opt/dbstorage/tmp ]# mkdir -p /opt/dbstorage/mariadb/binlogs ]# mkdir -p /opt/dbstorage/mariadb/logs ]# mkdir -p /opt/dbstorage/Aria ]# mkdir -p /opt/dbstorage/InnoDB/ibData ]# mkdir -p /opt/dbstorage/InnoDB/tmp ]# mkdir -p /opt/dbstorage/InnoDB/redoLogs ]# mkdir -p /opt/dbstorage/InnoDB/undoLogs ]# chown -R mariadb: /opt/dbstorage |
Cmake 빌드
이제 빌드를 위한 Cmake 빌드를 해야 한다. 다음과 같이 한다.
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 |
]# cd mariadb-11.8.3 ]# mkdir build_target ]# cd build_target ]# vim build.sh #!/bin/sh cmake .. \ -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_INSTALL_PREFIX=/opt/mariadb-11.8.3 \ -DMYSQL_DATADIR=/opt/dbstorage/mariadb \ -DINSTALL_PLUGINDIR=lib/mariadb/plugin \ -DINSTALL_PAMDIR=lib/security \ -DINSTALL_PAMDATADIR=/etc/security \ -DMYSQL_UNIX_ADDR=/opt/mariadb-11.8.3/run/mariadb.sock \ -DTOKUDB_OK=0 \ -DMYSQL_USER=mariadb \ -DWITH_INNOBASE_STORAGE_ENGINE=ON \ -DWITH_ARIA_STORAGE_ENGINE=ON \ -DWITH_MYISAM_STORAGE_ENGINE=ON \ -DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \ -DWITH_PARTITION_STORAGE_ENGINE=1 \ -DWITH_FEDERATEDX_STORAGE_ENGINE=1 \ -DWITH_QUERY_CACHE_INFO=ON \ -DWITH_QUERY_RESPONSE_TIME=ON \ -DWITH_SAFEMALLOC=AUTO \ -DOPENSSL_ROOT_DIR=/usr \ -DOPENSSL_INCLUDE_DIR=/usr/include \ -DOPENSSL_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 |
컴파일
이제 다음과 같이 빌드하고 컴파일을 한다.
1 2 3 |
]# ./build.sh ]# make -j$(nproc) ]# make install |
설치 후 작업
설치가 정상적으로 됐다면, 설치 디렉토리에 소유권/퍼미션을 조정해 줘야 한다.
1 2 3 |
]# cd /opt/mariadb-11.8.3 ]# chown -R root:mariadb ]# chown -R mariadb:mariadb run |
‘/opt/mariadb-11.8.3’ 디렉토리를 mariadb 로 심볼릭 링크를 생성해 준다.
1 2 |
]# cd /opt ]# ln -s mariadb-11.8.3 mariadb |
MariaDb 의 라이브러리를 인식시켜 준다.
1 2 |
]# echo "/opt/mariadb-11.8.3/lib" > /etc/ld.so.conf.d/mariadb11.conf ]# ldconfig |
다음과 같이 my.cnf 파일을 생성해 준다.
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 |
[mariadbd] server_id = 1 user = mariadb character_set_server = utf8 collation_server = utf8_general_ci default_time_zone='+9:00' port = 3306 basedir = /opt/mariadb # 이 디렉토리의 소유권과 그룹은 user 에서 지정한 사용자와 그룹이어야 한다. datadir = /opt/dbstorage/mariadb # 이 디렉토리는 Mysql 서버가 내부적 작업을 할때 임시로 사용하게 된다. # 예를들어 대량의 select 처리를 위해서 임시 테이블을 만들거나 할 경우에 여기에 임시로 파일이 생성될 수 있다. tmpdir = /opt/dbstorage/tmp socket = /opt/mariadb/run/mariadb.sock pid-file = /opt/mariadb/run/mariadb.pid log_bin = /opt/dbstorage/mariadb/binlogs/localhost-01-bin log_error = /opt/dbstorage/logs/mariadb_error.log general_log_file = /opt/dbstorage/logs/general_query_all.log slow_query_log_file = /opt/dbstorage/logs/slow_query.log innodb_data_home_dir = /opt/dbstorage/InnoDB/ibData innodb_log_group_home_dir = /opt/dbstorage/InnoDB/redoLogs innodb_undo_directory = /opt/dbstorage/InnoDB/undoLogs innodb_tmpdir = /opt/dbstorage/InnoDB/tmp aria_log_dir_path = /opt/dbstorage/Aria [client] socket = /opt/mariadb/run/mariadb.sock |
이제 데이터베이스를 초기화(생성) 해 준다.
1 2 |
]# cd /opt/mariadb ]# ./scripts/mariadb-install-db --defaults-file=/etc/my.cnf --user=mariadb |
galera_recovery 파일 수정
galera_recovery 라는 명령어가 있다. 이 파일을 쉘 스크립트 파일인데, mariadb.service 파일에도 이 명령어가 사용되고 있다. 그런데, 이 파일에는 사용지로 mysql 로 하드코딩되어 있어서 오류를 낸다. 바꿔준다.
1 2 |
- user=mysql + user=mariadb |
systemd 등록
Mariadb 에서는 systemd 등록을 위한 서비스 유닛 파일을 제공한다. 이 파일은 설치 디렉토리에 support-files/systemd 에 mariadb.service 파일로 존재한다. 이 파일을 열어서 다음과 같이 바꿔 준다.
1 2 3 4 5 6 |
]# vim /opt/mariadb-11.8.3/support-files/systemd/mariadb.service - User=mysql + User=mariadb - Group=mysql + Group=mariadb |
run/ 으로 시작하는 부분이 전체 패스가 걸려있지 않아서 시작할때에 오류를 낸다.
이제 systemd 에 등록하고 활성화 해준다.
1 2 |
]# cp /opt/mariadb/support-files/systemd/mariadb.service /etc/systemd/system/ ]# systemctl enable mariadb.service |
Mariadb 시작/중지
이제 제대로 설치가 되었는지 Mariadb 를 시작/중지 해보자.
1 2 |
]# systemctl start mariadb.service ]# systemctl stop mariadb.service |
아무런 에러가 없다면 정상적으로 작동하는 것이다.