PHP용 데이터베이스 마이그레이션 툴 Phinx 발견!

스크린샷 2014-07-28 21.11.04

저는 Codeigniter와 Laravel 이라는 PHP 프레임워크를 사용해보았는데, 둘 다 migration 기능을 제공하고 있습니다. 프레임워크가 제공하는 마이그레이션 기능을 사용하면 데이터베이스의 변경 이력을 남길 수 있고, 롤백이 가능하며, 특히 개발팀이 PHP 코드를 이용하여 데이터베이스 스키마를 쉽게 동기화 할 수 있게 됩니다.

 

마이그레이션을 통해서 쉽고 안정적으로 데이터베이스를 변경(alter) 할 수 있습니다. 수작업으로 sql을 만들 수도 있지만, 그럴경우 어떤것이 변경되었는지 ,다음 배포때는 어떤것이 수행되어야하는지, 기억하고 있어야 합니다.

데이터베이스 테이블 마이그레이션은 어떤 마이그레이션이 수행되었는지 지속적으로 추적해 주기 때문에, 개발자는 단지 프로그램 파일을 업데이트 하고 $this->migrate->current() 만 호출하면,배포에 필요한 마이그레이션이 수행됩니다.현재버전은 config/migration.php에 있습니다.

http://www.cikorea.net/user_guide_2.1.0/libraries/migration.html

 

프레임워크를 쓰지 않는 레거시 시스템에 사용할 수 있는 데이터베이스 마이그레이션용 라이브러리가 없나 찾아보았는데, 아주 멋진 녀석이 있었네요. Phinx  라는 녀석입니다. 사용방법은 Laravel 의 migration 사용법과 비슷하고, 무료입니다~!

관심있으신 분들은 http://phinx.org 로 고고~

 

제 1회 육회 모임

매주 일요일 마다 술은 마시지 않고, 고기만 먹는 모임을 시작했습니다. 크로스핏 최강 회원들이 참여대상이에요. 회라고는 하지만 회원은 따로 없고, 누구든 참여를 원하면 그냥 나오면 되는 느슨한 모임입니다. 목적은 육류 섭취를 통한 운동 능력 회복과 친목 도모!
오늘 첫 모임을 가졌어요.저를 포함해 3명이서 시서대 근방의 한우집에 가서 차돌박이 600그램, 등심 600그램을 처묵처묵. 아 역시 고기 마시~따~!

5 to 10

20140723_132841

홍대 웃샤브 옆에 있는 작은 피자집.

오후 5시에 열어 밤 10시에 닫는다.

돈이 많고 적고를 떠나서 이 시대를 사는 사람이라면 누구나 ‘투자한 것 이상을, 가능하다면 최대한 많이! 뽑아내야해’라는 유혹을 받고 대부분은 그것이 당연하다고 여긴다. 오히려 돈이 적은 사람보다도 돈이 많은 사람들이 훨씬 더 심하게 투자 수익률과 기회비용에 민감한 것 같다. 그런데, 땅값 비싸기로 유명한 홍대에 가게를 차려놓고 저리 태평할 수 있다니. 취미로 하는 것이거나, 혹은 돈 보다는 다른 것이 더 가치있다고 여기고 사는 것이거나 그런 것들 중 하나겠지. 이유가 뭐가 되었던 자본의 유혹에 초연할 수 있다는게 멋지게 보인다.

Pyjog

10550004_265621256973738_6606875167999516876_o

Pyjog 꾸준 정기 주말 코딩 모임이다. 슬이가 초대해서 참여했는데, 카페 한 층을 통채로 빌려서 남자들끼리 우글우글 모여 각자 한 자리씩 차지하고 코딩하는게 뭐 나름 나쁘지 않았다. ㅎㅎ

지금 시점에 파이썬을 새로 배우는게 조금은 부담스럽긴 하다. 꼭 파이썬이 아니어도 괜찮다고는 하지만 그래도 모임에 온 사람들과 더 소통하려면 파이썬을 하는게 낫겠지?

격주로 모여서 코딩하는 모임에 관심있으신 분들은 아래 링크 타고 오세요~

Pyjog 소개글 https://www.facebook.com/events/744146492314553/?ref_dashboard_filter=past

MySQL에 FEDERATED 스토리지 엔진 추가하기

FEDERATED 스토리지 엔진을 사용하면 리플리케이션이나 클러스터 기술을 이용하지 않고도 원격의 MySQL 데이터베이스에 접근할 수 있다. 서비스 운영을 위해 여러 데이터베이스를 사용하는데, 한 데이터베이스의 데이터를 다른 데이터베이스들이 참조하여 사용할 때 활용할 수 있다. Oracle의 DBLink와 유사한 기능이라고 한다.

FEDERATED 엔진은 MySQL에 기본으로 설정되어 있지 않기 때문에 이를 사용하기 위해서는 별도의 작업이 필요하다. 검색을 해보면 처음에 설치할 때 부터 –with-federated-storage-engine 옵션을 주어야 한다는 등의 이야기 등이 있지만, 실제로는 재설치를 하거나 할 필요는 없다.

mysql 에 root 로 접속해서 아래 명령어를 입력한다.

install plugin federated soname 'ha_federated.so'

 

이제 show engine 을 해보면 목록에서 FEDERATED Engine 이 나타나지만 꺼져있는 상태이다.

스크린샷 2014-07-21 19.02.28

/etc/my.cnf 를 열어 [mysqld] 아래에 federated 라는 단어를 추가한다.

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

federated

 

MySQL을 다시 실행시킨 후 다시 show engines 를 하면 FEDERATED Engine 이 사용가능하게 된 것을 확인할 수 있다.

스크린샷 2014-07-21 19.02.21

 

[참고 문헌]

[MySQL] Oracle의 DBLink 와 유사한 Federated Engine

MySQL – federated engine

[Mysql] FEDERATED 스토리지 엔진(1)

Add federated to Mysql

14.11 The FEDERATED Storage Engine