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

 

Centos에 mysqlreport 설치 방법

누군가가 나에게 CPU 점유율이 100%인 MySQL 서버의 부하를 줄여달라고 이야기할 때,  내가 처음으로 하는 행동은 mysqlreport를 실행하는 일이다. 고객과 10분 이야기 하는 것보다 mysqlreport의 결과를 한번 보는 것으로 더 많은 정보를 얻을 수 있다.” – 출처 : MySQL 관리자를 위한 오픈 툴

위의 문구를 보고 바로 mysqlreport 란 녀석을 써봐야겠다는 생각을 했다. 조금 오래된 글이라는 건 함정일지도 모르지만 어쨋든. 설치 및 사용 방법은 의외로 간단하다.

mysqlreport 설치 방법

 

0. perl 과 mysql 이 설치되어 있어야 한다.

1. mysqlreport 설치

cd /usr/local/sbin
wget hackmysql.com/scripts/mysqlreport
chmod 755 mysqlreport
cd /

끝! 참 쉽죠잉~

 

2. 사용

mysqlreport –user root –password

 

3. 결과의 해석

The Guide To Understanding mysqlreport 에 한 줄 한 줄 자세한 해설이 되어있다. 영어인건 함정. 혹시 같이 번역해서 공유하실 분 계시면 연락주세요~

 

한 번 돌려보니까 아래와 같은 값이 나오길래 table_open_cache를 올려주었다.  뭐 이렇게 쓰면 되는거겠지요? ㅋ

__ Tables __
Open 512 of 512 %Cache: 100.00
Opened 1.19k 0.0/s

 

PHP 성능을 향상시키는 방법

[요약]

  • PHP 버전을 올린다.
  • opcache 를 사용한다.
  • Xdebug 와 WinCacheGrind 를 사용하여 느린 코드를 찾아내 리팩토링 한다.

추가적으로 이야기하면 Opcache 가 APC 보다 5~20% 빠르다고 함. 게다가 Opcache 는 php에 5.5 이상에 기본 포함이기 때문에 한 달 쯤 늦게 대응되는 APC 를 쓸 이유가 없다고 함. (https://wiki.php.net/rfc/optimizerplus , What’s new in PHP 5.5에서 재인용)

워드프레스 KBoard 소셜 공유 플러그인를 이용하여 페이스북 공유시 정보가 엉뚱하게 나오는 것 수정하기

워드프레스의 KBoard를 사용시 KBoard 소셜 공유 플러그인을 사용하면 페이스북에 공유할 때 제목과 URL 등이 엉뚱하게 나온다. KBoard 소셜 공유 플러그인 뿐 아니라 다른 플러그인을 사용하여도 마찬가지 현상이 발생한다.

원인은 워드프레스에서 canonical url 을 설정하는데, KBoard 의 게시물에 대해서는 일괄적으로 게시판까지만 url을 잡아주기 때문이다. 예를들어 게시판을 설치한 페이지명이 bbs 인 경우,  게시판의 첫번째 글은 http://당신의_도메인명/bbs/?uid=1&mod=document 로 인식되어야 하지만 워드프레스에서 http://당신의_도메인명/bbs 을 canonical url 로 설정한다.

스크린샷 2014-05-26 13.54.27
소스보기를 하면 canonical url 이 설정되어 있는 것을 확인할 수 있다.
스크린샷 2014-05-26 13.46.23
페이스북 오픈 그래프 오브젝트 디버거를 이용해 http://321go.co.kr/bbs/?uid=2&mod=document 를 확인해본 결과.
Canonical URL 이 실제 조회한 URL과 다름을 알 수 있다.
스크린샷 2014-05-26 13.46.48
Canonical URL 을 Final URL 로 인식하기 때문에 엉뚱한 내용이 공유된다.

따라서 Canonical URL을 수정해주거나 없애주면 된다. 소셜 공유 플러그인 편집하기를 눌러 최하단에 remove_action(‘wp_head’, ‘rel_canonical’); 를 삽입해주면 canonical 설정을 없앨 수 있다.

스크린샷 2014-05-26 13.55.26

이렇게 수정해주면 아래에서 보는 것 처럼 공유하고자 하는 url과 canonical url 이 일치하게 되어 원하는 내용을 공유할 수 있게 된다.

스크린샷 2014-05-26 13.58.57