강좌
클라우드/리눅스에 관한 강좌입니다.
리눅스 분류

▒ SU의 CentOS7 강좌35 16.3 MariaDB

작성자 정보

  • 웹관리자 작성
  • 작성일

컨텐츠 정보

본문

▒ SU의 CentOS7 강좌35 16.3 MariaDB




 아래 내용들은 자료가 아주 많기 때문에 서적에는 들어가나 강좌는 쓰지 않겠습니다. 
최대한 CentOS 7의 새로운 기능 위주로 강좌를 쓰도록 합니다.^^

15. 웹&WAS 서비스
  15.1. 웹서비스의 이해
  15.2. 웹서비스의 운영
  15.3. PHP
  15.4. WAS(Tomcat)

16. 데이터베이스
  16.1. 데이터베이스의 정의
  16.2. MySQL

  16.3. MariaDB
CentOS7에서는 CentOS6까지 제공하던 MySQL을 마리아DB(MariaDB)로 변경하여 제공한다. CentOS7에서 제공하는 MariaDB 5.5는 MySQL 5.5와 모든 기능과 인터페이스, API, 명령어가 동일하다. MySQL에 익숙한 관리자라면 MariaDB를 부담 없이 사용할 수 있다. 
 MariaDB는 MySQL과 동일한 소스코드 기반이며 GPLv2 라이선스를 따른다. MySQL이 썬마이크로시스템즈에서 인수하고 썬마이크로시스템즈는 다시 Oracle에 인수되었다. 그러자 MySQL의 창업자 중한 명이자 핵심 개발자였던 마이클 와이드니어스는 오라클의 개발지침 등에 대한 의견 차이가 생겼다. 2009년 동료 몇 명과 함께 회사를 떠나 Monty Program AB사를 설립하고 MariaDB 개발을 시작했다. MariaDB는 MySQL과 다음 부분이 호환된다.
- 데이터와 테이블 정의파일(.frm)이 바이너리 호환
- 모든 클라이언트 API, 프로토콜 그리고 구조가 동일
- 모든 파일이름과 바이너리, 경로, 포트, 소켓 그리고 기타 등등이 동일
- 모든 MySQL 커넥터(PHP, Perl, 파이썬, 자바, .NET, MyODBC, Ruby, MySQL C 커넥터 등)가 마리아 DB와 동일하게 작동
마리아DB 커뮤니티는 MySQL과 비교해 리플리케이션 부분 속도가 약 4~5천배 정도 빠르며, MySQL이 가지고 있는 모든 제품의 기능을 완벽히 구현하면서도 성능 면에서는 최고 70%의 향상을 보이고 있다고 주장한다. 기존에 MySQL 엔터프라이즈에서 플러그인으로 제공한 쓰레드 풀 기능이 내장됐으며, 스토리지 엔진을 활용한 샤딩 기술을 제공한다. 즉, MySQL의 오픈소스 버전을 넘어(5.5까지) 모든 버전을 대체할 수 있는 특징들을 갖추고 있다고 한다.



16.3.1. MariaDB 설치
CentOS7에서 제공하는 mariadb-server 패키지를 설치하면 쉽게 MariaDB 서버 및 클라이언트를 설치할 수 있다.

~]# yum -y install mariadb-server

MariaDB 시스템 DB 생성
MariaDB의 mysql DB 및 test DB등을 생성하고 관련 테이블을 생성한다.

~]#  mysql_install_db --user=mysql
Installing MariaDB/MySQL system tables in '/var/lib/mysql' ...
OK
Filling help tables...
OK

To start mysqld at boot time you have to copy
support-files/mysql.server to the right place for your system

PLEASE REMEMBER TO SET A PASSWORD FOR THE MariaDB root USER !
To do so, start the server, then issue the following commands:

'/usr/bin/mysqladmin' -u root password 'new-password'
...


16.3.2. MariaDB 운영
MariaDB RPM 패키지를 설치하였다면, 자동으로 systemd 서비스로 등록된다. MariaDB 서비스는 systemctl을 사용하여 관리하면 된다.

먼저 서비스를 부팅 시 자동 시작되게 설정한다.


~]# systemctl enable mariadb
ln -s '/usr/lib/systemd/system/mariadb.service' '/etc/systemd/system/multi-user.target.wants/mariadb.service'


systemctl 명령어로 MariaDB를 시작한다.
~]# systemctl start mariadb



MariaDB 동작 확인
~]# systemctl status mariadb
mariadb.service - MariaDB database server
   Loaded: loaded (/usr/lib/systemd/system/mariadb.service; enabled)
   Active: active (running) since 화 2015-04-14 23:09:26 KST; 1min 7s ago
 Main PID: 18832 (mysqld_safe)
   CGroup: /system.slice/mariadb.service
           ├─18832 /bin/sh /usr/bin/mysqld_safe --basedir=/usr
           └─18989 /usr/libexec/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib6...

 4월 14 23:09:24 localhost.localdomain systemd[1]: Starting MariaDB database server...
 4월 14 23:09:24 localhost.localdomain mysqld_safe[18832]: 150414 23:09:24 mysqld_safe Logging to ...'.
 4월 14 23:09:24 localhost.localdomain mysqld_safe[18832]: 150414 23:09:24 mysqld_safe Starting my...ql
 4월 14 23:09:26 localhost.localdomain systemd[1]: Started MariaDB database server.
Hint: Some lines were ellipsized, use -l to show in full.


MariaDB 정지
~]# systemctl stop mariadb



mysqladmin 명령어로 MariaDB root 비밀번호를 생성한다.
~]# mysqladmin password 비밀번호



mysql 명령어로 MariaDB 서버에 접속한다.
~]# mysql -uroot -p
Enter password:
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 4
Server version: 5.5.41-MariaDB MariaDB Server

Copyright (c) 2000, 2014, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]>



16.3.3. 연동 테스트를 위한 DB 및 사용자 생성
웹과 MariaDB을 연동하기 위해 MariaDB의 DB와 사용자를 생성해야 한다. 다음 예제는 sulinux DB를 생성하고, sulinux 사용자를 생성하여 sulinux DB에 대한 모든 권한을 주는 것이며, “FLUSH PRIVILEGES"는 마지막에 권한에 대한 설정이 저장된 mysql DB의 내용을 읽어 들여 적용한다.


~]# mysql -uroot -p
Enter password:
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 4
Server version: 5.5.41-MariaDB MariaDB Server

Copyright (c) 2000, 2014, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> CREATE DATABASE sulinux;
Query OK, 1 row affected (0.00 sec)

MariaDB [(none)]> GRANT ALL PRIVILEGES ON sulinux.* TO sulinux@localhost IDENTIFIED BY '비밀번호' WITH GRANT OPTION;
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)



16.3.4. DB 연동 테스트
php에서 MariaDB를 사용하기 위해 php-mysql 및 php-pdo 모듈을 설치해야 한다.  yum을 이용하여 php-mysql 패키지를 설치한다.

~]# yum -y install php-mysql


php 및 Apache 설정 변경 후에는 꼭 Apache를 재시작하여 설정 내역을 적용하도록 하자.
~]# systemctl restart httpd

PHP에서 DB를 연동하는 아주 간단한 프로그램을 작성하여 테스트해 보도록 하겠다. "/var/www/html/mysqlDBtest.php"파일을 다음과 같이 작성해 본다.
<?php
  echo "DB Connect<BR>";
  $mysql =  mysql_connect("127.0.0.1", "sulinux", "비밀번호") or die("DB Connect Faied");
  echo "Select sulinux DB<BR>";
  $status = mysql_select_db("sulinux",$mysql);
  echo "Create sutable table<BR>";
  $result = mysql_query("CREATE TABLE sutable ( a text )",$mysql);
  echo "Insert data<BR>";
  $result = mysql_query("INSERT INTO sutable VALUES('DataBase Test')",$mysql);
  echo "Select data<BR>";
  $result = mysql_query("SELECT * FROM sutable",$mysql);
  echo "Fetch data<BR>";
  $row = mysql_fetch_array($result);
  echo "Result : <FONT color=red>".$row["a"]."</FONT><BR>";
  echo "Drop sutable table<BR>";
  $result = mysql_query("DROP TABLE sutable",$mysql);
?>

위 프로그램은 MariaDB에 연결하고, sulinux DB를 선택하며, "sutable"이라는 테이블을 생성한다. 생성된 테이블에 "DataBase Test"라는 값을 삽입하고, 삽입된 데이터는 SELECT 구문을 사용하여 뽑아낸다. 뽑아낸 데이터를 배열로 만든 다음, 출력한다. 출력 후에는 "sutable"을 제거하는 간단한 프로그램이다. 웹브라우저에서 "http://localhost/mariaDBtest.php"를 호출하면 다음과 같은 결과를 볼 수 있을 것이다.



이상으로 35번째 강좌를 마무리 합니다. CentOS7 부터는 MySQL 대신 MariaDB가 설치됩니다. 별 다른 것이 없으니 걱정하실 필요없습니다^^. 열심히 뛰는 에스유였습니다.^^ 
 
#################################################
* 본 강좌는 언제든 갱신될 수 있으며, 원글은 www.linux.co.kr 강좌>리눅스>SU의 연재강좌 에서 수정됩니다. 
* 본 강좌의 일부 또는 전체를 인용하실 경우, 반드시 출처를 밝혀 주시기 바랍니다.

* 수정이력 :
 2016.04.20(수): 최초 작성

관련자료

댓글 0
등록된 댓글이 없습니다.

공지사항


뉴스광장


  • 현재 회원수 :  60,032 명
  • 현재 강좌수 :  35,773 개
  • 현재 접속자 :  251 명