Category: Database

Database 글을 모아 놓은 카테고리

TIMESTAMP and DATETIME 기능 개선

MariadbMariaDB 10 버전이 올라가면 기능이 향상되는데, TIMESTAMP 와 DATETIME 의 데이터 타입(Data Type)을 사용하는 컬럼에 경우 Update, Insert 시에 몇가지 기능이 향상되었습니다.

여기서 주목해야 할 것은 ‘created TIMESTAMP DEFAULT CURRENT_TIMESTAMP‘와 ‘updated TIMESTAMP ON UPDATE CURRENT_TIMESTAMP‘ 입니다.

Default와 Extra 컬럼에 내용을 자세히 보십시오.

여기서 Insert 를 다음과 같이 합니다.

‘created’ 컬럼에 자동으로 시간이 등록됩니다. 과거에는 다음과 같이 해줬어야 했습니다.

‘now()’ 함수를 사용해서 했어야 했지만 Mariadb 10 에서 TIMESTAMP 타입을 이용해서 컬럼을 정의하면 더 손쉽게 자동으로 처리를 해줍니다.

다음과 같이 Update 를 해봅니다.

update 필드에 값이 자동으로 시간이 업데이트 됩니다. DATETIME 도 이와 같은데 다른점은 값이 없을 경우 ‘NULL’이 됩니다.

test_date2 를 만들고 다음과 같이 실행보면 값이 없을때는 NULL이 들어 갑니다.

 

MariaDB 10 소스 설치

MariadbMariaDB 는 MySQL 의 오픈소스 버전 입니다. MySQL 를 최초로 개발한 사람이 점점 폐쇄성이 짙어가는 MySQL 을 대체하기 위해 MySQL 을 복제하고 기능을 개선한 MySQL 의 또 다른 버전 입니다.

현재 MariaDB 는 10.0.14 버전 입니다.  MariaDB 10 소스 설치를 해보겠습니다. 설치 환경은 다음과 같습니다.

  • 배포판: CentOS 7
  • 아키텍쳐: 64bit

준비

MariaDB 10.0.14 버전은 MariaDB 홈페이지에서 다운받을 수 있습니다. 그런데, 이 소스 버전을 가지고 설치를 할 수도 있지만, Fedora 배포판에서 패치한 버전을 가지고 설치를 해보겠습니다.

Fedora 배포판의 경우에 10.0.14 버전에 보안 패치나 경로에 대한 패치 그리고 CentOS 7 의 Systemd 를 지원하도록 하는 스크립트를 제공 합니다. 이것은 SRPM 을 다운받아 소스를 패치하는 방법을 썼습니다.

Configure && Compile && Install

MariaDB 는 cmake 를 이용하기 때문에 일반 Configure 와는 다르게 이것을 이용 합니다.

위 설정은 다음과 같은 주요한 기능을 가집니다.

  • Aria 스토리지 엔진 지원
  • Partition 스토리지 엔진 지원
  • XtraDB 스토리지 엔진 지원
  • TokuDB 플러그인 지원

설치 후 작업

Fedora 배포판의 설정중에 디렉토리 설정 부분을 많이 인용을 했기 때문에 기존의 컴파일 설치한 디렉토리와는 사뭇 다릅니다. 대부분의 소스 컴파일을 설치했을 때에는 대부분 설치할 디렉토리인 PREFIX 만 지정하기  때문에 벤치디렉토리, 서포트디렉토리등이 모드 PREFIX 이하에 놓입니다. 하지만 위 설정을 보시면 Fedora 배포판 호환인 RedHat 디렉토리 구조를 계승하고 있다는 것을 인지하시기 바랍니다.

설치가 끝난 후에는 수동으로 옮겨주어야할 파일들이 존재 합니다. 그래서 설치 후 작업을 다음과 같이 진행 합니다.

CentOS 7 데서부터 도입된 systemd 등록을 위한 파일들을 설치 합니다.

그리고 다음과 같이 스크립트 파일들을 복사해 줍니다.

이제 mariadb 를 운영하기 위한 계정을 생성해 주고 디렉토리 퍼미션을 조정해 줍니다.

이렇게 한 후에 다음과 같이 MariaDB 에 기본 데이터베이스들을 생성해 줍니다.

이제 다 되었습니다. systemd 를 이용해서 mariadb 를 시작하면 됩니다.

MariaDB 오픈 소스 데이터베이스

MariaDB 는 한 개발자의 노력을 시작된 오픈 소스 프로젝트 입니다. 과거 오픈 소스 데이터베이스의 대명사인 MySQL 을 개발한 개발자 중에 한인 Monty Widenius. 1962년 핀란드 태생으로 1995년 MySQL 데이터베이스를 개발하기 시작해서 그 이듬해에 첫 릴리즈를 하게 됩니다. 그리고 1998년, 3.21 버전부터 www.mysql.com 을 만들어 운영하면서 명실상부한 오픈 소스 데이터베이스로 발을 딛기 시작 합니다.

Monty Widenius
MySQL 을 개발한 Monty Widenius

MySQL은 오픈소스 정책을 가지고 있지만 개발과 판매등을 총괄하는 회사가 있습니다. MySQL AB 라는 회사인데, 개발지원에서부터 판매, 홍보까지 MySQL에 거의 모든것을 관장하던 회사입니다. MySQL이 오픈소스이긴 하지만 라이센스정책이 이중으로 되어있어(GPL, CopyRight) 이러한 라이센스 관련해서 제품의 구성등 전반적인 부분도 이 회사에서 모두 관리합니다.

MySQL이 오픈소스 진영에서 이름을 날리고 있던 2008년에 썬 아킥텍쳐 및 썬 OS로 유명한 ‘Sun microsystems’ 에 85억 달러에 인수 됩니다. 이때에 MySQL을 전부 총괄하던 MySQL AB 회사도 함께 넘어감으로써 모든 지적재산권도 썬으로 넘어가게 됩니다. 그러던 것이 1년도 않된 시점인 2009년 4월 오라클이 썬마이크로시스템즈를 인수함으로써 MySQL AB 의 모든 지적재선권은 다시 오라클로 넘어갑니다.

Oracle. 오픈소스 진영에서는 거의 악날함을 자주 보여줬던 RDBMS 최강의 회사 입니다. 상용시장에서 독보적인 오라클 데이터베이스 를 가지고 있었고 인수전에는 MySQL과 알게 모르게 경쟁하던 데이터베이스 제품을 가진 회사였기 때문에 인수당시부터 오픈소스진영에서는 MySQL에 대한 운명(?)에 대해서 우려하는 목소리가 많았습니다. ‘오라클 스럽게 죽일거다’라는 소리가 자주 들렸지요.

그런데, MySQL AB를 설립했던 Michael “Monty” Widenius(마이클 ‘몬티’ 비드니우스) 라는 사람이 오라클을 뛰쳐 나옵니다. 오픈소스 정의감으로 뛰쳐나왔으면 드라마틱하겠지만 오라클에서 대우가 별로 맘에 않들었다고 하네요. 그러한 그가 나와서 뭘했을 까요? 배운게 도둑질인데, 오라클 회사를 나와서 ‘Monty Program’ 이라는 것을 하게됩니다. 그리고 이 ‘Moty Program’ 에서 GPL 라이센스로 되어있는 MySQL 코드를 Branch 해서 RDBMS를 만들게 되었는데 그것이 바로 ‘MariaDB’ 입니다.

Monty Widenius 는  오라클이 MySQL 을 인수하게되자 오픈 소스 진영에 MySQL 을 구해달라는 호소문을 올리기도 합니다.

[MySQL 을 구해주세요!!]

실제로 오라클이 MySQL 을 인수하고 난 후에, 오라클은 라이센스 정책을 변경했으며 MySQL 의 테스트 소스코드를 비공개로 변경했습니다.

이러한 오라클의 폐쇄적인 정책으로 불구하고 MariaDB 는 수많은 개발자들의 기부로 인해서 성장했고 대부분의 리눅스 배포판에서 MySQL 을 대체하는데 이르렀습니다. 현재 MariaDB 는 10 버전을 출시로 더욱 강력해지고 안전한 데이터베이스를 제공하고 있습니다.

Mariadb
Mariadb 의 로고

 

PostgreSQL 설치.

pgsql-logo

PostgreSQL 은 인기있는 오픈소스 데이터베이스 시스템 입니다. PostgreSQL 9.0 으로 넘어오면서 ‘Hot Stand by Replication’ 기능을 제공하게 되는등 많은 변화가 있었습니다.

이 문서는 CentOS 7 배포판에서 PostgreSQL 설치에 대한 것입니다.

 

1. 준비

다음의 패키지가 설치되어 있어야 합니다.

2. Download and Unpack

3. Configure and Compile and Install

필요한 기능이 무엇인지를 고민해 봅시다. 많은 기능들을 제공하지만 대략적으로 다음과 같은 기능을 제공하는 것이 좋습니다.

  • plpython => python-devel.x86_64
  • pltcl => tcl-devel.x86_64
  • plperf => perl-devel.x86_64
  • ssl => openssl-devel.x86_64
  • pam => pam-devel.x86_64
  • kerberos => krb5-devel.x86_64 e2fsprogs-devel.x86_64
  • nls => gettext-devel.x86_64
  • xml => libxml2-devel.x86_64 libxslt-devel.x86_64
  • ldap => openldap-devel.x86_64

PostgreSQL 9.x 를 설치하는데 있어서 필요한 기능이 무엇인지를 먼저 생각해야 합니다. 각 기능에 대한 것은 각각 홈페이지를 참고하세요.

필요한 패키지를 설치 합니다.

그리고 기능을 위한 패키지를 설치 합니다.

Compile option 을 다음과 같이 지정합니다.

mtune 을 자신의 CPU 에 맞게끔 수정해야 합니다. 자세한 사항은 여기(GCC Optimization)를 참고 하세요.

Configure를 다음과 같이 실행하고 컴파일을 합니다.

4. 후속작업

PostgreSQL 9.x 를 시스템에 이식시키기 위해서 다음과 같은 과정을 진행해 줍니다.

PostgreSQL 시스템 계정 추가

initdb 실행

Pam 설정

ldconfig 라이브러리 추가

lib64 심볼릭 링크

php와 같은 프로그램들은 설치시에 ‘/usr/lib64’ 와 같은 라이브러리 디렉토리를 검색합니다. 따라서 pgsql9.4의 lib 디렉토리를 lib64 심볼릭 링크를 만들어 줍니다.

Systemd 설정

CentOS 7 부터는 initscript 가 아닌 systemd 를 이용해 데몬 서비스들을 관리 합니다. 먼저 systemd 에 등록을 위한 파일을 다음과 같이 작성 합니다.

postgresql.service 파일

systemd 에 등록할 파일을 위와같이 작성합니다. 작성한 후에 /usr/lib/systemd/system 디렉토리에 복사주고 활성화 해줍니다.

그리고 파일 내용에 postgresql-check-db-dir 파일을 호출하는데 이는 다음과 같습니다.

postgresql-check-db-dir 파일.