Tag Archives: CentOS

[CentOS] MySQL to MariaDB Migration

기존에 MySQL을 5년이상 운영해오던 개인서버의 DB를 MariaDB로 변경하기로 하였습니다. 정말 신기할 정도로 다양한 MySQL기반의 웹서비스들을 구동중이던 서버에서 아무런 사이드이펙트 없이 마이그레이션이 가능했습니다. yum 기반에서 운영중인 CentOS를 기준으로 글을 작성하였습니다.

스크린샷 2014-01-06 오후 9.49.10

[링크]에 방문하여 자신의 배포본에 적당한 yum 설정을 찾은 뒤 /etc/yum.repos.d/ 안에 MariaDB.repo 파일을 생성하여 내용을 붙여넣기 합니다.

# MariaDB 5.5 CentOS repository list - created 2014-01-06 12:49 UTC
# http://mariadb.org/mariadb/repositories/
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/5.5/centos5-x86
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1

이제 기존에 설치된 mysql을 삭제합니다. APM 환경일 경우 의존성이 있는 mysql-devel, php-mysql도 함께 삭제 됩니다.

$ yum remove mysql mysql-manual

삭제시에 기존의 설정파일인 /etc/my.cnf파일이 /etc/my.cnf.rpmsave로 바뀌어 저장되므로 /etc/my.cnf로 되돌려 줍니다. 이후에 필요한 MariaDB 패키지들을 설치해줍니다.

$ yum install MariaDB-client MariaDB-common MariaDB-compat MariaDB-devel MariaDB-server MariaDB-shared php-mysql

위의 명령을 통해 모든 필요한 MariaDB 패키지들의 설치가 완료됩니다. 기존의 MySQL에서 사용했던 설정파일을 그대로 사용해도 MariaDB에서 문제 없이 동작합니다. 하지만 한가지 생각해 볼 부분이 있는데 MariaDB는 내부 스토리지 엔진으로 MyISAM대신에 Aria를 사용합니다.

그러므로 기존의 설정의 key_buffer_size(key_buffer)와 동일한 값으로 aria-pagecache-buffer-size의 값을 설정해줄 필요가 있습니다. 만약 기존에 MyISAM 테이블을 사용하지 않고 있었다면 key_buffer_size64K정도의 매우 낮은 값으로 설정해 두길 권장합니다.

이제 MariaDB를 구동해봅시다. 이상하리만치 MySQL의 그것과 동일합니다.

$ /etc/init.d/mysql start

MariaDB 콘솔에 접속해 봅시다.  그 명령어조차 mysql입니다.

$ mysql
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 3662205
Server version: 5.5.34-MariaDB MariaDB Server

Copyright (c) 2000, 2013, Oracle, Monty Program Ab and others.

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

MariaDB [(none)]>

일반적으로 아무런 문제없이 마이그레이션 작업이 끝납니다만 작은 오류가 발생할수도 있는데 이경우 mysql_upgrade를 실행해 주면 테이블 포맷등의 변동 사항을 업그레이드해줍니다.

참고 자료

[Fedora/CentOS/RHEL] OS의 패키지를 최신으로 업데이트할 수 있는 Les RPM de Remi

리눅스는 IDC에 두고 쓰던 서버에서 RedHat 6부터 설치하여 사용해 왔지만 RedHat의 유료 Enterprise Linux 정책으로 인해 사실상 다른 OS를 선택해야 하는 상황이 왔었습니다. 당시에 RedHat 9을 마지막으로 많은 분열이 일어나면서 비상업성을 띄는 Fedora, 상업성을 띄는 Enterprise Linux, Enterprise Linux의 클론본이라 불리는 CentOS와 WhiteBox가 그마나 선택해볼만한 선택지였습니다.

사용자 삽입 이미지
당시에는 몇번을 뒤엎어가며 여러 배포폰을 번갈아가며 사용해 보았습니다. 당시에 최초로 등장한 Fedora의 느낌은 뭐랄까 RHEL(RedHat Enterprise Linux)의 테스트버젼 같은 느낌이었습니다. 최대한 다양한 테스트 패키지를 시험적으로 돌려보고 장기 목표에서 괜찮은 성과를 내면 RHEL로 들어오는 그런 느낌이었습니다. 실제로 전세계의 대표서비스인 위키피디아의 대부분의 서버가 Fedora서버로 이루어져 있습니다. 하지만 간단히 웹서버를 구성하여 사용하기엔 너무나 많은 잡다한것이 설치가 되더군요. 아무리 최소설치를 해도 제 마음에는 들지 않았습니다. 패키지를 잘 커스터마이징 해서 쓴다거나 아예 신경을 끄면 될일이었을지도 모르겠지만 Fedora는 지금도 역시 저어게는 학습용 그 이상으로 선택되어지지 않습니다;
두번째로 WhiteBox부터 언급해 보겠씁니다. 당시에 CentOS보다 먼저 등장했던것으로 기억합니다. RHEL의 클론본이라고 자신있게 나왔지만 RHEL과는 너무나 달랐습니다. 클론이라기 보다는 흉내라고 부르는게 나았을지도 모르겠습니다.

다음은 CentOS입니다. 이것이 그나마 사실 가장 RHEL의 클론본에 가깝지 않았나 생각됩니다. 실제로 CentOS는 꽤 오래 써왔습니다.(한 6개월?) 많은 분들이 사용하고 계시지만 개인적으로 CentOS를 별로 좋아하지 않습니다. 이유는 CentOS는 순수하게 RHEL의 클론본이 아닙니다. 이것 역시 자신들의 철학이 많이 들어가 있습니다. 그리고 그것이 점점 심해지고 있지 않나 생각됩니다.

가장 기본적으로 최소설치를 해봐도 설치된 패키지에서 많은 차이가 납니다. 설정등에서도 많은 차이가 납니다. 그리고 무엇보다 CentOS를 사용하면서 원인을 알수 없는 문제를 여러번 겪었었습니다. 많은 기업에서 CentOS를 사용하고 계신것으로 알고 있습니다만 저는 CentOS를 신뢰하지 않습니다. 그래서 RHEL을 사용합니다.

사용자 삽입 이미지

하지만 RHEL에도 한계는 있습니다. 라이센스를 정상적으로 구매하여 사용한다면 문제될것이 없겠지만 그것이 아니라면 문제가 됩니다. 저같은 경우에는 개인적으로 업데이트 서버를 구축하여 사용하고 있고 중요 패키지는 직접 빌드하여 사용합니다. 하지만 덜 중요한것들에게는 시간을 투자하는것이 왠지 아깝기 마련입니다.

그래서 찾다 보니 괜찮은것을 발견하였습니다. 실제로 제 개인적으로 가지고 있는 서버에 적용하여 사용해 보았는데 아주 완벽하게 동작합니다. Fedora, CentOS, RHEL등을 매우 깔끔하게 지원합니다.

http://blog.famillecollet.com/


Remi의 RPM저장소쯤으로 보면 되겠네요. 프랑스쪽 사람이 운영자인듯 한데 다행이도 영어버젼의 홈페이지도 운영중입니다. RHEL5기준으로 yum이 설치되어있다고 가정하고 Remi 저장소를 연동하는 과정을 적어보겠습니다. [참고문서]
[code]wget http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-4.noarch.rpm
wget http://rpms.famillecollet.com/enterprise/remi-release-5.rpm
rpm -Uvh remi-release-5*.rpm epel-release-5*.rpm[/code]
저 과정만 거치면 기본적으로 필요한 설정이 알아서 끝나게 됩니다. /etc/yum.repo.d 디렉토리 안에 필요한 설정이 추가되게 됩니다. 이제 다음과 같은 명령으로 Remi 저장소에서 필요한 패키지를 설치하거나 업데이트 할 수 있습니다.
[code]yum –enablerepo=remi install <패키지명>[/code]
rpm에서 GPG키 관련 에러를 뱉을 경우 다음의 명령을 실행해 주시면 됩니다.
[code]rpm –import RPM-GPG-KEY-remi[/code]
몇일째 개인 서버에서 돌려본 소감은 개인이 운영함에도 불구하고 개인의 주관적인 철학이나 특정 +@가 전혀 없다는 점입니다. 어디서나 볼법한 깔끔한 패키지를 제공합니다. 실제로 사용해 보니 아주 만족스럽습니다. 하지만 실제 서비스중인 서버에 적용해도 될지에 대해서는 많은 고민이 필요할 것같습니다. 이 저장소를 사용함으로써 매우 최신의 패키지를 바로바로 업데이트 받아 사용할 수 있게 되었습니다.