공개 SW 솔루션설치 & 활용가이드 시스템 SW > 데이터관리 제대로배워보자 How to Use Open Source Software Open Source Software Installation & Application Guide
CONTENTS 1. 개요 2. 기능요약 3. 실행환경 4. 설치및실행 5. 기능소개 6. 활용예제 7. FAQ 8. 용어정리
- 3-1. 개요 소개 주요기능 MariaDB 는오픈소스의관계형데이터베이스관리시스템 (RDBMS) MySQL 을기반으로한오픈소스기반의 DBMS Monty Program AB 와 MariaDB Community 에서개발 RHEL, CentOS, Fedora, SUSE, Debian, Ubuntu 등다양한 O/S 환경에서가능 MySQL 의 Enterprise 에서제공된 Thread-pool 을 Built-in 으로내장 MySQL 과 APIs 와 Command 가정확히일치하고 Library 를공유함으로전환용이 대분류 시스템 SW 소분류 데이터관리 라이선스형태 GPL v2 Licence 사전설치솔루션 N/A 실행하드웨어 1GHz single core 이상의 CPU 1GB 이상의 RAM 10GB 이상의디스크공간 버전 MariaDB 10.3(2018 년 10 월기준 ) 특징보안취약점개발회사 / 커뮤니티공식홈페이지 MySQL 과의호환성 (MariaDB 는 MySQL 과소스코드를같이하므로사용방법과구조가 MySQL 과동일 ) MySQL 의오픈소스버전을넘어 (5.5 까지 ) 모든버전을대체할수있는특징들을갖추고있음 취약점 ID : CVE-2016-6662 심각도 : 8.8 HIGH(V3) 취약점설명 : MariaDB 의설정파일인 my.cnf 파일을일시적으로로그파일로변경하여파일을변조하고루트권한을획득하는방법 대응방안 : 최신패치적용 참고경로 : https://mariadb.com/kb/en/library/mariadb-10027-release-notes/ MariaDB 재단 / https://mariadb.com/kb/en/library/community/ https://mariadb.com
- 4-2. 기능요약 MariaDB 주요기능 구분 SQL 용량데이터타입문자셋백업추가기능 API GUI 관리툴 기능 ANSI SQL 테이블당 64TB char, varchar, int, numeric(decimal), TEXT, BLOB 등 EUC-KR, UTF8, UTF8MB4 등지원 on-line(hot)/off-line(cold) backup, Full/Incremental backup Time based recovery, Full recovery 지원 Partitioned table, data encryption, Thread pool, Replication C, JAVA, ODBC, PHP, Perl, Ruby, Phython, etc SQLyog
- 5-3. 실행환경 MariaDB 지원플랫폼 OS / CPU Source Package Type source tar.gz file Windows x86_64 Windows x86 Linux x86_64 Linux x86 RedHat/CentOS/Fedora (x86, x86_64, ppc64, ppc64le) Debian/Ubuntu (x86, x86_64, ppc64el) ZIP file / MSI Package ZIP file gzipped tar file gzipped tar file RPM Package DEB Package
- 6-4. 설치및실행 세부목차 4.1 설치파일준비 4.2 설치환경준비 4.3 설치진입 4.4 설치진행 4.5 설치완료
- 7-4. 설치및실행 4.1 설치파일준비 https://downloads.mariadb.org 에접속하여 MariaDB 설치파일다운로드 설치하려는 MariaDB 버전선택후, 해당 OS 에알맞은버전을찾아 MariaDB 파일다운로드
- 8-4. 설치및실행 4.2 설치환경준비 데이터베이스를설치할시스템준비 구분 MariaDB 비고 지원되는 OS 지원되는 CPU 최소사양 Linux 와 windows 를비롯한 Debian, Ubuntu, Fedora 등의다양한 OS 플랫폼지원 OS 에따라 x86, x86_64, ppc64, ppc64le 지원 1 Ghz CPU processor 램 512MB 이상의하드웨어 1G 이상의디스크공간 사실상 MariaDB 자체는최소한의하드웨어요구사항이없으며, workload 에따라다를수있음 더빠른 CPU 의속도, 더많은코어수, 더큰 RAM 크기등은성능향상의방법이될수있으며, MariaDB 의메모리요구사항은 Table 크기, Table 수, 사용자의수, 쿼리유형, Index 사용여부, QPS( 초당쿼리수 ) 등에따라달라지므로이를고려하여초기메모리설정
- 9-4. 설치및실행 4.3 설치진입 Linux 환경에서의 MariaDB 설치진행 MariaDB Binary 파일로설치를진행하며, MariaDB Binary 파일이름은 mariadb-version- OS.tar.gz 형식으로되어있음 [root@]# mariadb-10.3.10-linux-x86_64.tar.gz OS에맞는버전을다운로드후, 해당파일을서버업로드 MariaDB 설치시 Engine과 Data 디렉토리를설정하며, Engine은 /usr/local/mysql 디렉토리에 MariaDB 설치 ( 이것은많은플랫폼에서 MariaDB의기본위치 ) MariaDB는기본적으로 Configuration 설정파일 /etc/my.cnf 사용 - 해당파일의파라미터값을조정하여 MariaDB 성능향상 - my.cnf에기술되지않은파라미터항목은 default값으로설정 - 주석처리를할때는 # 사용 - 파라미터이름은소문자사용
- 10-4. 설치및실행 4.4 설치진행 (1/3) root 계정으로 /usr/local/mysql 에 MariaDB 설치 OS user 및 group 생성 - MariaDB 사용자및그룹을 'mysql 로설정하여 MySQL 설치와의호환성유지 [root@]# groupadd mysql [root@]# useradd -g mysql mysql 설치파일압축해제 - 다운받은 MariaDB Package 파일을 MariaDB Engine 디렉토리의상위디렉토리로옮긴후 tar 를이용하여 압축해제 [root@]# cd /usr/local [root@]# tar xvfz /path-to/mariadb-version-os.tar.gz symbolic link 설정 - symbolic link 는운영중엔진버그등과같은문제로 MySQL 엔진을업그레이드해야할경우손쉽게 새로운버전으로교체 [root@]# ln -s mariadb -VERSION-OS mysql
- 11-4. 설치및실행 4.4 설치진행 (2/3) 디렉토리권한설정 - MariaDB Engine, Data 디렉토리권한을 mysql 계정과그룹으로설정 [root@]# chown -R mysql.mysql /usr/local/mysql [root@]# chown -R mysql.mysql /data Configuration 설정 - 시스템사항에맞춰 Configuration 설정진행 [root@]# vi /etc/my.cnf [mysqld] basedir=/usr/local/mysql datadir=/data socket=/tmp/mysql.sock port=3306 MariaDB Install - 기본데이터베이스 (mysql, test) 생성및 Default MariaDB User 생성 [root@]# cd /usr/local/mysql [root@]#./scripts/mysql_install_db --user=mysql
- 12-4. 설치및실행 4.4 설치진행 (3/3) MariaDB 서버시작 - MariaDB Engine 디렉토리로이동후시작스크립트실행 [root@]# cd /usr/local/mysql [root@]#./bin/mysqld_safe --user=mysql &
- 13-4. 설치및실행 4.5 설치완료 MariaDB Process 확인 - 정상적으로설치가되었다면아래와같이 mysqld, mysqld_safe 프로세스생성 [root@]# ps -ef grep mysqld root 9065 1311 0 07:57 pts/0 00:00:00 /bin/sh./bin/mysqld_safe --user=mysql mysql 9145 9065 0 07:57 pts/0 00:00:00 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/data --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=/data/mariadb.err --pi d-file=mariadb.pid --socket=/tmp/mysql.sock --port=3306 root 9300 1311 0 08:18 pts/0 00:00:00 grep --color=auto mysqld
- 14-5. 기능소개 세부목차 5.1 로그인 5.2 시작 & 종료 5.3 Database 생성및종료 5.4 사용자추가 5.5 최신버전업그레이드
- 15-5. 기능소개 5.1 로그인 MariaDB 접속 - 정상적으로데몬이구동되었다면 MariaDB 접속 [[root@mysql]#./bin/mysql -uroot -p Enter password: Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 24 Server version: 10.3.10-MariaDB MariaDB Server Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [(none)]> MariaDB 접속툴 - 추가적으로다음과같은툴을사용하여 MariaDB 접속가능 * Heidisql * SQLyog community * MySQL Workbench community
- 16-5. 기능소개 5.2 시작 & 종료 MariaDB 시작 - MariaDB Engine 디렉토리로이동후 mysqld_safe 스크립트실행하여시작 [root@]# cd /usr/local/mysql [root@]#./bin/mysqld_safe --user=mysql & MariaDB 종료 - MariaDB Engine 디렉토리로이동후 mysqladmin 명령어를실행하여종료 [root@]# cd /usr/local/mysql [root@]#./bin/mysqladmin -uroot -p shutdown
- 17-5. 기능소개 5.3 Database 생성및조회 Database 생성 - create 문을사용하여신규 Database 생성 MariaDB [(none)]> create database testdb; Query, 1 row affected (0.000 sec) Database 조회 - show databases : database 리스트확인 - use database_name : 해당 database 접속 MariaDB [(none)]> show databases; +---------------------+ Database +---------------------+ information_schema mysql performance_schema testdb +---------------------+ 4 rows in set (0.000 sec) MariaDB [(none)]> use testdb Database changed
- 18-5. 기능소개 5.4 사용자추가 MariaDB 계정생성및권한설정 - grant [ 권한 ] privileges on Database 명.Table 명 to 사용자 '@ Host identified by 암호 '; - flush privileges; MariaDB [(none)]> grant all privileges on *.* to 'jeffrey'@'%' identified by 'password'; MariaDB [(none)]> flush privileges; - all : 모든권한으로설정 - localhost 는로컬에서만접속가능 (host 를 '%' 로설정하면모든외부 IP 에서접속가능 ) MariaDB 계정생성확인 - select 명령문으로사용자가정상적으로생성되었는지조회 MariaDB [(none)]> select host,user,password from mysql.user where user='jeffrey'; +-----------+---------+-------------------------------------------+ host user password +-----------+---------+-------------------------------------------+ % jeffrey *2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19 +-----------+---------+-------------------------------------------+
- 19-5. 기능소개 5.5 최신버전업그레이드 MariaDB Upgrade - 기존버전의엔진을최신버전과교체하고 MariaDB 에서기본적으로제공하는 mysql_upgrade 툴을 사용하여테이블을최신버전업데이트 [root@]cd /usr/local/mysql [root@]./bin/mysql_upgrade -uroot -p Enter password: Phase 1/7: Checking and upgrading mysql database Processing databases mysql mysql.column_stats mysql.columns_priv mysql.db mysql.event mysql.func mysql.gtid_slave_pos mysql.help_category mysql.help_keyword mysql.help_relation mysql.help_topic mysql.host mysql.index_stats mysql.innodb_index_stats mysql.innodb_table_stats mysql.plugin
- 20-6. 활용예제 세부목차 6.1 Mariabackup 소개 6.2 FULL BACKUP 6.3 FULL BACKUP RESTORE
- 21-6. 활용예제 6.1 Mariabackup 소개 Mariabackup 은 InnoDB, Aria 및 MyISAM 테이블의실제온라인백업을수행하기위해 MariaDB에서제공하는오픈소스도구이며, InnoDB의경우 "hot online" 백업가능 mariabackup 장점 - 빠른백업 - 백업도중트랜잭션의중단없음 - 암호화되고압축된데이터전체백업가능 - 자동화된백업확인 - 빠른 Restore mariabackup 주요기능 - 온라인핫 Backup(FULL BACKUP) 지원 - 증분백업지원 - 압축백업지원 - Point-In-Time 복구지원
- 22-6. 활용예제 6.2 FULL BACKUP 데이터베이스를백업하려면 --backup명령옵션을사용하여 Mariabackup 실행 전체백업을수행할때대상디렉토리는비어있거나존재하지않아야함 - $ mariabackup --backup --target-dir /backup_dir/ --user backup_user --password backup_passwd [root@]#/usr/local/mysql/bin/mariabackup --backup --target-dir /backup --user root --password mypw 백업에걸리는시간은백업중인데이터베이스또는테이블의크기에따라다르며, 필요한경우데이터베이스를수정하지않으므로백업취소 Mariabackup은대상디렉토리에일련의파일을추가, 대상디렉토리가존재하지않으면대상디렉토리가생성되며, 대상디렉토리가존재하고파일이들어있으면백업오류발생
- 23-6. 활용예제 6.3 FULL BACKUP RESTORE 백업에서복원하기전에먼저 prepare 명령옵션으로파일을정상화하도록준비 - $ mariabackup --prepare --target-dir /backup_dir/ --user backup_user --password backup_passwd [root@]#/usr/local/mysql/bin/mariabackup --prepare --target-dir /backup --user root --password mypw 이프로세스가완료되면 --copy-back또는 --move-back명령옵션을사용하여백업에서데이터를복원 - $ mariabackup --copy-back --target-dir /backup_dir/ --user backup_user --password backup_passwd [root@]#/usr/local/mysql/bin/mariabackup --copy-back --target-dir /backup --user root --password mypw 백업을복원하기전에는데이터디렉토리가비어있어야함
- 24-7. FAQ Q 소프트웨어가 MariaDB 로불리는이유는무엇입니까? A MariaDB 의주요개발자는 MySQL 과 Monty Program AB 를설립한 Monty Widenius 입니다. MySQL 은그의첫째딸의이름인 My 에서따왔으며, MariaDB 는둘째딸인 Maria 의이름을딴것입니다. Q MariaDB 는무료라면서요? 나중에돈받는것아닌가요? A 내부사용은무료입니다! MariaDB는 GPL v2 라이선스조건에따라사용할수있습니다. GPL 라이선스는다른당사자에게배포하는코드에만영향을미치며, 재판매등배포행위가일어날경우 GPL 라이선스에따라소스를공개해야합니다.
- 25-7. FAQ Q 프로세스이름, 디렉토리등은언제부터 MySQL 에서 MariaDB 로변경됩니까? A MySQL과동일한기본값을유지하는것이중요합니다. 적어도현재로는 MariaDB는 MySQL의향상된대체솔루션입니다. MariaDB 5.5까지 MariaDB 는 MySQL과같은릴리스로업데이트되었지만이후 MariaDB 10.0 이상부터는 MySQL에서찾을수없는새로운기능이포함되어있습니다. Q MariaDB 에서사용할수있는고가용성솔루션이있습니까? A MariaDB는 MaxScale과 Galera Cluster 구성을사용하여 Auto Failover를지원합니다. MariaDB Galera Cluster는 MariaDB용동기멀티마스터클러스터이며, MaxScale은수평확장배치에서보안, 확장성및고가용성을관리하는차세대데이터베이스프록시입니다.
- 26-8. 용어정리 용어 설명 DBMS SQL GPL API HA GUI CLI Data Base Management System Structured Query Language 의약자. 관계형데이터베이스관리시스템 (RDBMS) 의데이터를관리하기위해설계된특수목적의프로그래밍언어 GNU General Public License 의약자. 라이선스의종류중하나. 소스의취득, 수정, 배포, 공개가자유로우나최종배포시 GPL 라이선스를따라야함. 수정배포시자체개발한소스도공개해야함 Application Programming Interface 의약자. 응용프로그램에서사용할수있도록, 운영체제나프로그래밍언어가제공하는기능을제어할수있게만든인터페이스 High Availability 의약자로서고가용성을뜻함 Graphical User Interface Command Line Interface
Open Source Software Installation & Application Guide 이저작물은크리에이티브커먼즈 [ 저작자표시 비영리 동일조건변경허락 2. 0 대한민국라이선스 ] 에따라이용하실수있습니다.