MariaDB Binary Install [마리아 수동설치 / 마리아 바이너리 설치]
관계형 데이터베이스 관리 시스템(RDBMS) MariaDB 설치를 위한 데이터베이스 환경과
configuration에 대한 설명을 상세하게 구분, 기술한다.
1. 설치 환경
- OS Rocky 8
- MariaDB 버전 선택
MariaDB Server 10.5.X
2. MariaDB 설치 사전 준비사항
2.1 OS 계정 및 그룹
- Group Name : mysql
# groupadd -g 4000 mysql - User Name : mysql
# useradd -u 4000 -g 4000 -d /home/mysql -m -s /bin/bash -c "Maria RDBMS Service" mysql
2.2 FileSystem 또는 디렉토리 환경
- /maria : MariaDB Engine
- /dblog : error log, slow log 등
- /dbbinlog : Binary Log
- /dbdata : 데이터파일
- Command
# mkdir /maria /dblog /dbbinlog /dbdata
# mkdir /maria/tmp /dblog/slow /dblog/error
# chown -R mysql.mysql /maria /dblog /dbbinlog /dbdata
이 블로그에서 사용되는 가상머신은 /data01, /data02를 사용할 것이며, 링크를 걸어 환경을 구성할 것이다. # mkdir /data01/maria /data01/dbdata /data02/dblog /data02/dbbinlog # ln -s /data01/maria /maria # ln -s /data01/dbdata /dbdata # ln -s /data02/dblog /dblog # ln -s /data02/dbbinlog /dbbinlog # mkdir -p /maria/tmp /dblog/slow /dblog/error # chown -R mysql.mysql /data01 /data02 # chown -R mysql.mysql /maria /dblog /dbbinlog /dbdata |
3 MariaDB 설치 진행
3.1 MariaDB Binary 파일 다운로드 및 OS 업로드
URL : https://mariadb.org/download/
MariaDB Server Version, Operating System, Architecture, Init System을 선택 후
Download 버튼을 클릭하여 파일 다운로드하여
OS /maria 위치에 업로드 한다.
3.2 Tar 파일 압축 해제
tar 파일을 해제하면, /maria 아래에 mariadb-10.5.XX-linux-systemd-x86_64디렉토리가 생성된다.
# cd /maria
tar -xvf mariadb-10.5.XX-linux-systemd-x86_64.tar.gz
3.3 심볼릭 링크 설정
이 과정은 생략해도 되며, 환경에 따라 변경하도록 하며 다음 단계에[서 경로를 조절 해주어야 한다.
# cd /maria
ln -s mariadb-10.5.XX-linux-systemd-x86_64 mariadb
다음과 같이 확인할 수 있다.
3.4 환경파일 설정
# vi /etc/profile
다음 내용을 추가한다.
export MARIADB_HOME=/maria/mariadb
export PATH=$PATH:$MARIADB_HOME/bin:.
Profile 변경내용 적용시킨다. [또는 재부팅]
# source /etc/profile
3.5 my.cnf 파일 수정
초기화 파라미터는 /etc/my.cnf가 기본경로이며, 기본경로로 설치를 권고한다.
기본 경로로 설정하지 않으면 각 클라이언트에서 my.cnf 경로를 설정해야 하므로, 일반적으로 /etc/my.cnf로 설정한다.
[/etc/my.cnf]
OS 환경에 따라 변경될 수 있다.
파일이 없을 경우 root로 파일을 만들고 권한을 변경하도록 한다.\
# vi /etc/my.cnf
[client] port = 3306 socket = /maria/tmp/mysql.sock default-character-set = utf8mb4 [mysqld] ###### General ###### user = mysql port = 3306 socket = /maria/tmp/mysql.sock basedir = /maria/mariadb datadir = /dbdata tmpdir = /maria/tmp character-set-server = utf8 collation-server = utf8_general_ci init_connect = "set collation_connection=utf8_general_ci" init_connect = "set names utf8" default-authentication-plugin=mysql_native_password default-storage-engine = INNODB #default-time-zone=Asia/Seoul ###### Other ###### max_connections = 1000 max_connect_errors = 99999 max_allowed_packet = 1024M wait_timeout = 3600 interactive-timeout = 3600 transaction_isolation = REPEATABLE-READ autocommit = FALSE innodb_force_primary_key = 0 sql_mode = STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION log_bin_trust_function_creators = 1 skip-name-resolve skip-host-cache ###### Session Memory ###### sort_buffer_size = 1M join_buffer_size = 1M read_buffer_size = 1M read_rnd_buffer_size = 1M max_heap_table_size = 128M tmp_table_size = 128M ###### MyISAM Engine ###### key_buffer_size = 32M myisam-recover-options = backup,force ###### InnoDB Engine ###### innodb_file_per_table = 1 innodb_data_file_path = ibdata1:100M:autoextend innodb_data_home_dir = /dbdata innodb_write_io_threads = 4 innodb_read_io_threads = 4 innodb_io_capacity = 200 innodb_thread_concurrency = 0 innodb_max_dirty_pages_pct = 90 innodb_stats_on_metadata = 0 innodb_lock_wait_timeout = 50 innodb_buffer_pool_size = 1G innodb_log_buffer_size = 512M innodb_log_file_size = 2048M innodb_log_files_in_group = 6 innodb_open_files = 8192 innodb_flush_log_at_trx_commit = 1 innodb_flush_method = O_DIRECT innodb_print_all_deadlocks = 1 innodb_doublewrite = 1 ###### Logging ###### #general_log = 1 #general_log_file = /dblog/general/mysql_general.log slow_query_log = 1 slow_query_log_file = /dblog/slow/mysql_slow.log long_query_time = 1 log-error = /dblog/error/mysql_error.log #binlog_expire_logs_seconds = 604800 ## 7일 (7*24*60*60) ## ###### Server Audit ##### #audit_log_file = /dblog/audit/audit.log #audit_log_policy = LOGINGS, QUERIES #audit_log_rotate_on_size = 1G #audit_log_connection_policy = ALL #audit_log_statement_policy = ALL ###### Replication ###### server_id = 1 log-bin = /dbbinlog/mysql-bin.log binlog_format = MIXED #relay_log = /dblog/relay/mysql-relay.log sync_binlog = 1 #replicate_do_db = #repl_semi_sync_master_enabled = 1 #log_slave_updates = 1 #read_only = 1 #skip-slave-start [mysqldump] quick max_allowed_packet = 1024M default-character-set = utf8mb4 [mysqlhotcopy] interactive-timeout = 3600 [mysqld_safe] open_files_limit = 8192 [mysql] default-character-set = utf8mb4 |
3.6 MariaDB 엔진 설치
$MARIADB_HOME/scripts/mysql_install_db --user=mysql
을 실행 후 정상적으로 설치가 되었다 다음과 같은 메시지를 확인할 수 있다.
- 내용 요약
두 개의 모든 권한 계정이 생성되었다.
root@localhost 와 maria@localhost 계정이 만들어졌으며 패스워드는 없다.
필요시 연결하여 패스워드를 설정하도록 한다.
https://mariadb.com/kb에서 MariaDB 지식 베이스를 참조하십시오.
3.7 MariaDB 수동 기동 종료
- MariaDB 수동 기동
$MARIADB_HOME/support-files/mysql.server start - MariaDB 수동 종료
$MARIADB_HOME/support-files/mysql.server stop - 기동 확인 및 로그 확인
# ps -ef|grep mariadb
기동되어 있는 프로세스를 확인 기동이 되지 않았다면
/dblog/error/mysql_error.log 를 확인하여 기동 실패원인을 확인할 수 있다.
4. MariaDB 환경 설정
4.1 DB 접속
Rocky 8의 경우 Lib 파일 버전 문제로 접속시 에러가 발생할 것이다.
다음과 같이 링크를 걸어 조치한다.
# find / -name *libncurses* >> 파일 찾기
# ln -s /usr/lib64/libncurses.so.6 /usr/lib64/libncurses.so.5
# ln -s /usr/lib64/libncursesw.so.6 /usr/lib64/libncursesw.so.5
# find / -name *libtinfo* >> 파일찾기
# ln -s /usr/lib64/libtinfo.so.6 /usr/lib64/libtinfo.so.5
예시)
4.2 최초 root 패스워드 변경
- mariadb에 접속한다.
$ mysql -uroot - root 패스워드를 변경한다.
mysql> alter user root@localhost identified by 'myadmin1!';
Query OK, 0 rows affected (0.00 sec) - 패스워드 변경을 적용한다.
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec) - mysql 접속 종료
mysql> quit - mariadb root 패스워드 확인 / 재접속
$ mysql -uroot -p
Enter password: 패스워드 입력[myadmin1!]
5. MariaDB systemctl 서비스 등록
기동 관련 스크립트 내용을 모두 찾아 변경 시 누락될 수 있으며 문제 발생시 에러 포인트를 찾기 여려울 수 있어 링크작업으로 대체 한다.
작업은 root 로 진행한다.
# ln -s /maria/mariadb /usr/local/mysql
서비스 파일 복사 및 설정
# cp /usr/local/mysql/support-files/systemd/mariadb.service /etc/systemd/system
[Link 작업이 되어있어야한다.]
$ vi /etc/systemd/system/mariadb.service
User=mysql
Group=mysql
고객사 환경에 따라 편집한다.
# systemctl daemon-reload
데몬리로드
# systemctl start mariadb
# systemctl state mariadb
# systemctl stop mariadb