Oracle Cloud Infrastructure (https://www.oracle.com/kr/cloud/free/)
에서 무료로 제공 되고 있는 서버중 Ampere 를 이용한 인스턴스(VM.Standard.A1.Flex)를 확보 하게 되었다 ‘ㅅ’a (평생 무료)
2코어 12GB 램을 가지고 있어서 활용 방법을 구상 하다가 개인의 DB 서버를 구축을 해서 운용 하면 좋을것으로 판단되어서 mariadb 10.7을 설치 하고
현재 웹사이트인 www.enteroa.com 의 데이터베이스 서버로 활용을 하기로 하였다.
서버 확보가 쉽지 않았지만… (무료 인스턴스 제공 갯수 제한이 있어 Out of host capacity 오류로 생성이 잘 되지 않는다.)
먼저 서버의 시간을 지정 하고 OS 업데이트를 진행 한뒤 재부팅 및 기본 적인 설정을 한다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
# 타임존 설정 ~]# ln -sf /usr/share/zoneinfo/Asia/Seoul /etc/localtime # oracle-epel-release 활성화 (이부분은 oracle-epel-ol8.repo 에서 enabled=0 처리가 되어 있어서 하는 부분..) ~]# yum-config-manager --enable ol8_developer_EPEL ol8_developer_EPEL_modular # OS 업그레이드 ~]# dnf -y upgrade # 업그레이드 후 재부팅 ~]# reboot # 필수 프로그램 설치(sealert, htop, pstree) ~]# dnf install psmisc htop setools-console setroubleshoot-server # vim 사용 설정 ~]# echo "alias vi=vim" >> /etc/bashrc |
이후 mariadb.org 에서 현재 상황에 맞게 설치를 진행 한다. (https://mariadb.org/download/?t=repo-config&d=Red+Hat+EL+8+%28ARM64%29&v=10.7&r_m=yongbok)
오라클 리눅스는 기본적으로 RHEL 8 의 복제판 이기 때문에 RHEL 8(ARM64)을 선택하고 RC 가 아닌 최신 10.7 버전을 선택 하였다.
이후 안내 되는 내용에 따라 /etc/yum.repos.d/MariaDB.repo
파일을 생성 하여 아래와 같이 입력 한다.
1 2 3 4 5 6 7 8 |
# MariaDB 10.7 RedHat repository list - created UTC # https://mariadb.org/download/ [mariadb] name = MariaDB baseurl = https://mirror.yongbok.net/mariadb/yum/10.7/rhel8-aarch64 module_hotfixes=1 gpgkey=https://mirror.yongbok.net/mariadb/yum/RPM-GPG-KEY-MariaDB gpgcheck=1 |
dnf 명령어를 이용하여 설치를 하고 서비스 활성화 및 데몬을 실행 시킨다.
1 2 3 |
~]# dnf install -y MariaDB-server MariaDB-client ~]# systemctl enable --now mariadb.service |
AWS 의 경우 방화벽이 서버 밖에 테이블 형태로 제어 되지만 오라클 클라우드 의 경우 서버내의 firewalld 으로 제어 되기 때문에 방화벽에서 mysql 서비스를 외부 접근을 허용 한다.
1 2 |
~]# firewall-cmd --add-service=mysql --permanent ~]# firewall-cmd --reload |
데이터베이스 서버에 불필요한 일부 데몬(atd, gssproxy, rpcbind)을 정지 한다. (메모리 절감)
1 |
~]# systemctl disable --now atd.service gssproxy.service rpcbind.service |
기본 인코딩을 설정하고 및 로깅을 위해 /etc/my.cnf.d/mysql-clients.cnf
파일을 수정 한다. (mariadb 10.7 은 기본 캐릭터셋이 utf8mb3 이다.)
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 |
[client] default-character-set = utf8mb3 [mariadb] character-set-server = utf8mb3 collation-server = utf8mb3_general_ci skip-name-resolve [mysqld] log-error = /var/log/mariadb/mariadb.log max-connect-error = 10000 slow-query-log = 1 slow_query_log_file = /var/log/mariadb/slow-query.log long_query_time = 5.0 [mysql] default-character-set = utf8mb3 [mysql_upgrade] [mysqladmin] [mysqlbinlog] [mysqlcheck] [mysqldump] default-character-set = utf8mb3 [mysqlimport] [mysqlshow] [mysqlslap] |
지정한 error 및 slow 로그 생성을 위해서 로그 저장 위치에 폴더를 생성해 준다.
1 2 |
~]# mkdir -m 700 /var/log/mariadb ~]# chown mysql /var/log/mariadb |
수정한 설정 파일을 적용 하기 위해 mariadb 를 재시작 한다.
1 |
~]# systemctl restart mariadb.service |
mysql 로그인을 한뒤 변경된 내용을 확인 한다.
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 |
~]# mysql MariaDB [(none)]> show variables like 'c%'; +----------------------------------+----------------------------+ | Variable_name | Value | +----------------------------------+----------------------------+ | character_set_client | utf8mb3 | | character_set_connection | utf8mb3 | | character_set_database | utf8mb3 | | character_set_filesystem | binary | | character_set_results | utf8mb3 | | character_set_server | utf8mb3 | | character_set_system | utf8mb3 | | character_sets_dir | /usr/share/mysql/charsets/ | | check_constraint_checks | ON | | collation_connection | utf8mb3_general_ci | | collation_database | utf8mb3_general_ci | | collation_server | utf8mb3_general_ci | | column_compression_threshold | 100 | | column_compression_zlib_level | 6 | | column_compression_zlib_strategy | DEFAULT_STRATEGY | | column_compression_zlib_wrap | OFF | | completion_type | NO_CHAIN | | concurrent_insert | AUTO | | connect_timeout | 10 | | core_file | OFF | +----------------------------------+----------------------------+ |
불피요한 데이터 베이스인 test 를 삭제 하고 필요한 database 및 로그인 권한을 생성 한다.
1 2 3 4 5 6 |
MariaDB [(none)]> drop database test; MariaDB [(none)]> create database enteroa; MariaDB [(none)]> CREATE USER enteroa@'%' IDENTIFIED BY '비밀번호'; MariaDB [(none)]> GRANT ALL privileges ON enteroa.* TO enteroa@'%'; |
이제 이용하면 된다 ‘ ㅅ’a