1. MariaDB 다운로드
MariaDB MySQL5.5를 기반으로 한다.(Linux 10.6 다운로드)
winSCP로 home/tomcat 디렉토리로 업로드
2. mysql계정 생성
useradd mysql
passwd mysql
3. 설정파일 링크 및 mariaDB 설치
mkdir /app/maria
/app/maria/mariadb-10.6.17-linux-systemd-x86_64
cd mariadb-10.6.17-linux-systemd-x86_64
4. root계정으로 접속 후 설치 스크립트 실행 하기 전 mysql 및 mariadb 기동에 있어서 가장 중요한 환경설정 파일이 있다.
/etc/my.cnf 이며 maria의 동작에 필요한 리소스 설정과 같은 중요한 설정들이 들어있다.
일반적으로 /etc/my.cnf는 root 소유권으로 존재하므로 mysql 계정으로 수정할 수 없다.
하지만 mysql계정으로 mysql관련 리소스를 제어하고 싶으므로,
support-files 에 my.cnf를 만들고, /etc/my.cnf에 링크를 걸어 줄 것이다.
vi /etc/my.cnf
basedir = /app/maria/mariadb-10.6.17
[mysql@localhost maria]$ mv mariadb-10.6.17-linux-systemd-x86_64/ mariadb-10.6.17 # 이름 변경
ln -s /app/maria/mariadb-10.6.17/support-files/my.cnf /etc/my.cnf
ls -rlt /etc/my.cnf
5. 설치완료되면 설치파일 삭제
rm -f mariadb-10.6.17-linux-systemd-x86_64
6. MariaDB 기본 테이블 생성(설치를 위한 스크립트를 실행한다.)
./scripts/mariadb-install-db
[mysql@localhost mariadb-10.6.17-linux-systemd-x86_64]$ ./scripts/mariadb-install-db
mysql 계정으로 mariadb-install-db스크립트가 실행이 안된다. 아래의 에러를 구글링해보니 권한 문제라 한다.
mariadb-install-db의 소유권을 찾아보니,
>> 권한이 없어서 발생한 에러
>> 권한확인 ls -ld /var/lib/mysql >> root계정으로 재시도 [root@localhost mariadb-10.6.17]# ./scripts/mariadb-install-db
./scripts/mariadb-install-db 스크립트 실행 명령어가 성공적으로 실행이 되면,
스크립트 내용이 나오는데 내용은 간략하게 아래와 같다.
- /var/lib/mysql에 시스템 테이블이 설치 완료되었다.
- 부팅 시간에 mariadbd를 시작하려면 시스템에 맞는 위치로 support-files/mariadb.service를 복사해야 한다.
(환경변수를 추가했다. -> bash_profile에 MYSQL_HOME을 추가하자)
- 두개의 모든권한을 가진 계정이 자동생성되었다.
root@localhost
mysql@localhost
- mariadb-install-db 스크립트
- /var/lib/mysql에 MariaDB/MySQL 시스템 테이블을 설치하는 중입니다. 작업이 성공적으로 완료되었습니다.
- 부팅 시간에 mariadbd를 시작하려면 시스템에 맞는 위치로 support-files/mariadb.service를 복사해야 합니다.
= 시스템이 부팅될때 MariaDB 서비스도 자동으로 시작되도록해야한다 - 모든 권한을 가진 두 개의 계정이 생성되었습니다.
- 하나는 root@localhost입니다. 이 계정은 비밀번호가 없으며 접속하려면 시스템 'root' 사용자여야 합니다. 예를 들어 sudo mysql을 사용할 수 있습니다.
- 두 번째는 mysql@localhost입니다. 이 계정도 비밀번호가 없으며 접속하려면 시스템 'mysql' 사용자여야 합니다.
- 연결 후에는 이러한 계정 중 하나로 비밀번호를 설정할 수 있습니다. 이를 통해 비밀번호를 설정하면 sudo 없이 비밀번호로 이러한 사용자 중 하나로 접속할 수 있습니다.
- MariaDB 지식베이스에서 추가 정보를 확인할 수 있습니다. (링크)
- MariaDB 데몬을 실행하는 방법:
- 현재 디렉토리로 이동 후 ./bin/mariadbd-safe --datadir='/var/lib/mysql'를 실행합니다.
- MariaDB 데몬을 테스트하는 방법:
- ./mysql-test 디렉토리로 이동 후 perl mariadb-test-run.pl을 실행합니다.
- 문제가 발생할 경우 MariaDB 이슈 추적 시스템에 보고해야 합니다.
- MariaDB에 대한 최신 정보는 MariaDB 공식 웹사이트에서 확인할 수 있습니다.
- MariaDB의 강력하고 활기찬 커뮤니티에 참여하는 것을 고려해보세요. (링크)
7. my.cnf 수정
vi /etc/my.cnf
client섹션과 mysqld섹션이 있다. 여기서 mysqld의 d는 데몬(Daemon)으로 메모리에 상주하면서 특정 요청이 오면 즉시 대응 할 수 있도록 대기중인 프로세스를 말한다.
my.cnf파일은 구글링해서 MySQLbasedir과 port 번호를 내 프로젝트에 맞게 수정했다.(my.cnf 원본 출처)
[client]
port = 13306
[mysqld]
basedir = /app/maria/mariadb-10.6.17
port = 13306
- my.cnf
[client]
port = 13306
socket = /tmp/mysql.sock
[mysqld]
basedir = /app/maria/mariadb-10.6.17
port = 13306
socket = /tmp/mysql.sock
back_log = 50
max_connections = 100
wait_timeout = 256
max_connect_errors = 10
table_open_cache = 2048
max_allowed_packet = 16M
binlog_cache_size = 512M
max_heap_table_size = 512M
read_buffer_size = 64M
read_rnd_buffer_size = 64M
sort_buffer_size = 64M
join_buffer_size = 64M
thread_cache_size = 8
thread_concurrency = 8
thread_stack = 240K
query_cache_size = 128M
query_cache_limit = 2M
ft_min_word_len = 4
default-storage-engine = InnoDB
transaction_isolation = REPEATABLE-READ
tmp_table_size = 512M
log-bin=mysql-bin
binlog_format=mixed
slow_query_log
long_query_time = 2
server-id = 1
# INNODB options
innodb_buffer_pool_size = 4G
innodb_buffer_pool_instances = 8
innodb_data_file_path = ibdata1:10M:autoextend
innodb_write_io_threads = 8
innodb_read_io_threads = 8
innodb_thread_concurrency = 16
innodb_flush_log_at_trx_commit = 1
innodb_log_buffer_size = 512M
innodb_change_buffering = all
innodb_change_buffer_max_size = 25
innodb_log_file_size = 256M
innodb_log_files_in_group = 3
innodb_max_dirty_pages_pct = 90
innodb_lock_wait_timeout = 256
[mysqldump]
quick
max_allowed_packet = 50M
[mysql]
no-auto-rehash
[mysqlhotcopy]
interactive-timeout
[mysqld_safe]
open-files-limit = 8192
8. maria및 mysql 기동하기
./support-files/mysql.server start
./support-files/mysql.server stop
maria및 mysql 기동시 그냥 기동하는방법과 mariadbd_safe를 통해 기동 하는 방법 2가지 가 있다.
mariadbd_safe는 mysql이 예기치 않게 종료될 경우 자동으로 다시 올려주는 기능을 제공한다.
support-files/mysql.server를 통해 기동하면 safe를 통해 기동시켜준다.
이제 maraidb 데몬을 기동한다.
support-files/mysql.server 파일이 실행 파일이며, start, stop의 명령어를 사용해 기동 및 중지시켜준다.
9. mariad 실행 및 data 폴더 생성
[root@localhost support-files]# ./mysql.server start
Starting MariaDB.240303 22:06:56 mysqld_safe Logging to '/app/maria/mariadb-10.6.17/data/localhost.localdomain.err'.
240303 22:06:56 mysqld_safe Starting mariadbd daemon with databases from /app/maria/mariadb-10.6.17/data
/app/maria/mariadb-10.6.17/bin/mariadbd-safe-helper: Can't create/write to file '/app/maria/mariadb-10.6.17/data/localhost.localdomain.err' (Errcode: 2 "No such file or directory")
./mysql.server: line 264: kill: (10719) - 그런 프로세스가 없음
./mysql.server: line 277: log_failure_msg: command not found
-
mariadb-10.6.17>data 디렉토리 생성
[root@localhost mariadb-10.6.17]# mkdir data
[root@localhost mariadb-10.6.17]# chown mysql.mysql data
ll로 파일이 생성됨을 확인
-rwxr-xr-x. 1 root root 12366 3월 3 22:10 mariad
+) mysql.server파일이름을 mariad로 수정했다.(mariad라는 파일로 복사)
[root@localhost mariadb-10.6.17]# cp ./support-files/mysql.server mariad
# ./support-files/mysql.server 파일을 mariad이름 현재 작업 디렉토리에 복사
mariad start # MariaDB 데몬을 기동
mariad stop # MariaDB 데몬을 중지
11. 이제 mariad로 재기동
경로를 환경변수에 지정해주었는데도 아래와 같은 에러가 나와서 구글링을 해보니 폴더를 직접 생성하거나 권한을 부여해보라는 글을 보았다. 그래서 data 폴더를 직접 생성해주고, 실행을 시켜보니 에러메시지가 동일하게 나왔다. 그래서 data의 권한도 변경했더니 해결되었다.
[root@localhost mariadb-10.6.17]# ./mariad start
Starting MariaDB.240303 22:10:20 mysqld_safe Logging to '/app/maria/mariadb-10.6.17/data/localhost.localdomain.err'.
240303 22:10:20 mysqld_safe Starting mariadbd daemon with databases from /app/maria/mariadb-10.6.17/data
./mariad: line 264: kill: (12915) - 그런 프로세스가 없음
./mariad: line 277: log_failure_msg: command not found
data폴더 삭제 rm -rf ./data/
MariaDB 테이블설치 명령어 스크립트 ./scripts/mariadb-install-db
mysql계정으로 로그인( root@localhost > mysql@localhost) su - mysql
경로 이동 cd /app/maria/mariadb-10.6.17
디렉토리의 소유자와 그룹을 mysql.mysql로 변경 chown -R mysql.mysql *
* 참고로 하위 디렉토리의 mariadb-10.6.17/data의 디렉토리를 보면 소유권이 root이다. 이처럼 각 디렉토리의 소유권은 독립적이다.
12. mysql계정으로 로그인( root@localhost > mysql@localhost) su - mysql
경로 이동 cd /app/maria/mariadb-10.6.17
13. mariad 시작 및 프로세서 확인
./mariad start
ps -ef | grep mysql
pid가 28335인 프로세서가 성곡적으로 확인이 된다.
Starting MariaDB.240303 22:15:47 mysqld_safe Logging to '/app/maria/mariadb-10.6.17/data/localhost.localdomain.err'.
240303 22:15:47 mysqld_safe Starting mariadbd daemon with databases from /app/maria/mariadb-10.6.17/data
./mariad: line 262: log_success_msg: command not found
/localhost.localdomain.err'.240303
최초 설치시 mysql의 root 계정은 패스워드 없이 접속 할 수 있다.
OS root 계정일 경우만 가능하다.
OS root 계정으로 이동 후
/app/maria/mariadb-10.6.17을 MYSQL_HOME으로 잡고
환경 변수 PATH에 MYSQL_HOME/bin 을 추가한 후 source ~/.bash_profile 또는 . ~/. bash_profile를 해주면된다.
mysql -uroot 하면 접속된다.
환경변수를 root계정과 mysql 사용자계정 둘다 적용해주기
각 디렉토리의 파일 출력 cat ~/.bash_profile /home/mysql/.bash_profile
로그인 한 사용자의 파일을 덮어쓰기( 현재 사용자의 파일 > 덮어 쓸 파일) cat ~/.bash_profile > /home/mysql/.bash_profile
DB서버 연결이 끝났다. 이제 tomcat서버에 올려서 브라우저에 띄워보는 작업이 남았다.