하루 2.5억 트윗을 저장하는 트위터의 새로운 저장 스토어

Overview

트위터는 하루 평균 2.5억 건의 트윗을 저장한다고 합니다. 과거 트위터는 날짜 기준으로 데이터를 분할 관리하여 저장을 하였고, 대략 3주에 한번씩 서버를 추가하여 Scale-out 하였습니다.

하지만 이 방식에는 다음과 같은 문제가 있었습니다.

  1. 부하 분산
  2. 고비용
  3. 복잡한 프로세스

문제를 해결하기 위해서 트위터에서 New Tweet Store를 고안했다고 합니다.

자, 그럼 기존 문제점부터 차근차근 알아보도록 합시다^^;

Problems

  • 부하 분산(Load Balancing)
    날짜 기준으로 데이터를 나눠서 분산 저장 및 관리하기 때문에, 시간이 지날수록 과거 데이터 조회 건수는 비약적으로 낮아집니다. 특히 대부분의 데이터 조회 요청은 현재 시각 기준으로 들어오기 때문에, 데이터 읽기 HOTSPOT이 발생할 수 밖에 없습니다. Load Balancing Problem

    [Read More]

MySQL Replication 이해(2) – 구성

Overview

MySQL Replication 개념에 이어, 이번에는 실 구성에 관한 내용입니다.
각 서버 구성 방법은 리눅스에 MySQL 설치하기 편을 참고하시기 바랍니다.

시작에 앞서서 Server_id는 다른 숫자로 설정하세요^^.

Replication 구성은 다음 세 단계를 거쳐서 수행됩니다.

  1. DB 유저 생성
  2. DB 데이터 동기화(셋 중 택 1)
    • DB Data File Copy
    • MySQL Dump (All Lock)
    • Export/Import (Single Transaction)
  3. 리플리케이션 시작

1. DB 유저 생성

복제 데이터 전송을 위한 리플리케이션 권한의 DB 유저를 마스터에 생성합니다. 각 슬레이브 IO 쓰레드들은 추가된 DB 유저를 통해 데이터를 받습니다.

[Read More]

MySQL Table Lock에 관한 이해

Overview

Table Lock 스토리지 엔진 사용 시 반드시 알아야할 사항을 정리 드리겠습니다.

근래에는 물론 InnoDB가 아~주 많이 사용되고 있겠지만, 여전히 서비스에서는 MyISAM이 쓰이고 있습니다. MyISAM은 MySQL의 대표적인 스토리지 엔진이면서 내부적으로는 Table Lock으로 동작합니다.

관련 스토리지 엔진에 관한 설명은 MySQL특성을 정리한 반드시 알아야할 MySQL 특징 세 가지 포스팅을 참고하시면, 간단한 비교를 하실 수 있습니다. 자 그럼 Table Lock 스토리지 엔진 사용 시 반드시 알아야할 사항을 정리 드리겠습니다.

Table Lock 이해

MySQL에서 Table Lock은 다음 기준에 의해서 부여됩니다.

[Read More]
Lock  MyISAM  MySQL 

MySQL Replication 이해(1) – 개념

Overview

오늘은 조금더 제너럴한 주제를 가지고 정리를 할까합니다.
바로 MySQL Replication 입니다. MySQL Community에서 유일하게 HA 또는 분산 구성을 할 수 있는 유일한 기능입니다. 물론 MySQL+DRBD 구성와 같이 HA를 구성하는 방법도 있습니다만, MySQL 제품이 아니므로 스킵~!

먼저 Replication에 대해 간략하게 말씀 드리겠습니다.

MySQL Replication이란?

MySQL Replication이란 말 그대로 복제입니다. 영어 사전에 나온 듯한 DNA는 아니지만 데이터를 “물리적으로 다른 서버의 저장 공간” 안에 동일한 데이터를 복사하는 기술이죠.

다음 그림은 MySQL Replication을 가장 간단하게 나타낸 그림입니다. 데이터 변경을 마스터 장비에서만 수행하기 때문에 마스터 장애 시에는 전체 노드에 데이터 쓰기 작업이 불가능한 한계가 있습니다. MySQL Replicaton Master Slave

[Read More]

리눅스에 MySQL 설치하기(CentOS 5.6)

MySQL DBMS 를 설치할 때 제가 적용하는 내용을 공유합니다. root 계정으로 설치 준비를 하고, mysql 계정으로 DB를 구동합니다.

일단 하단 내용들은 root계정으로 수행을 합니다.

OS 계정 추가

다음과 같이 dba 그룹을 추가하고 그 밑에 mysql 계정을 추가합니다.

groupadd -g 600 dba
useradd -g 600 -u 605 mysql
passwd mysql

Linux 설정 변경

세션 Limit 를 설정합니다.

vi /etc/security/limits.conf
##하단 내용 추가
mysql            soft    nproc  8192
mysql            hard    nproc  16384
mysql            soft    nofile 8192
mysql            hard    nofile 65536

OS에서 limits.conf 파일을 읽어들이도록 설정합니다. 없으면 생성합니다.

[Read More]
Linux  MySQL 

CentOS6 에 Apache+PHP+MySQL 구성

서버를 구성하면서 사용한 스크립트..
나중에 재사용을 위해서 블로그에 올리자!!
Apache -> MySQL -> PHP 순으로 설치!

모든 설치 파일 혹은 소스는 하단 디렉토리에 위치한다.

최근 릴리즈 버전을 /usr/local/src에 다운로드 한다.

Apache 설치

## 컴파일 및 설치
cd /usr/local/src
tar xvzf httpd-2.2.14.tar.gz
cd httpd-2.2.21
./configure --prefix=/usr/local/apache \
--enable-mods-shared=all \
--enable-so \
--enable-module=rewrite
make
make install

## 관리를 위해 Symbolic Link로 연결
cd /usr/local
mv apache apache-2.2.21
ln -s apache-2.2.21 apache

MySQL 설치

## 압축 해제 설치
tar xzvf mysql-5.5.19-linux2.6-x86_64.tar.gz
mv mysql-5.5.19-linux2.6-x86_64 /usr/local/
cd /usr/local

## 관리를 위해 Symbolic Link로 연결
ln -s mysql-5.5.19-linux2.6-x86_64 mysql

자세한 설치는 리눅스에 MySQL 설치하기(CentOS 5.6) 편을 참고하세요.

[Read More]

옴 마니 밧메 훔

다음 이라는 말로 놓치는 수 많은 경험들..

당신들은 언제나 다음을 이야기 하죠. 하지만 다음이란 없어요. 내 날을 잘 들어요. 우리도 항상 다음으로 미루며 살아왔지만, 어느 날 갑자기 나라를 빼앗기고는 모든 것이 달라졌어요. 집을 잃고, 가족들이 뿔뿔이 흩어지고, 우리가 뒤로 미루기만 하던 일들을 하나도 할 수 없게 되었어요.

지구별 여행자 옴 마니 밧메 훔 내용 중

지금을 살고 있는 나에게 과연 다음이라는 것이 있을까?
내 자신을 돌아보게 해주는 나를 바늘로 찌르는 듯한 한마디..

[Read More]

반드시 알아야할 MySQL 특징 세 가지

Overview

MySQL 요구가 전보다 급증하고 있습니다. 이제 친숙해서 사용하는 간단한 소용량 DBMS 이 아닌, 많은 대형 업체에서도 사용되고 있기 때문에 많은 이슈가 되고 있습니다. 트위터, 페이스북, 구글, 야후 뿐만 아니라 최근들어 SNS 열풍으로 국내에도 MySQL 관련하여 엄청난 붐이 시작되려는 찰나인 듯 하네요.

KTH에 입사를 한 당시에 주력 DB는 Oracle이었습니다. 그러나라이선스 비용 문제로 주력 DB 선정을 위한 저울질이 시작되었고, 그중 일반 개발자에게도 친숙한 MySQL을 선택했습니다.

MySQL 세가지 특성?

MySQL 3.X 버전으로 광고 시스템을 만든 적이 있습니다. 꽤나 오래된 얘기..

[Read More]
MySQL 

gywndi의 블로그 오픈!!

2011.11.30

대형사이트 구축을 위한 MySQL 튜닝전략 세션 진행 블로그 필요성을 절감하여 설치형 블로그에 관해 수색!
그리고 Word Press로 결정!
집 개인 서버에 설치하자!

2011.12.01

URL이 안 이뻐서 mod_rewrite 재설정.
브라우저 캐시 때문에 삽질 100번 =_=;; 어이없는 삽질!
허탈한 마음에 연로하신 분들 술자리에 슬쩍 엉덩이를 밀어넣다.
사장님 죄송해요. 오늘 일 안했어요^^;;

2011.12.02 09:00

H3행사, DB프로젝트, 장애처리.. 쏟아지는 업무 요청..
그래서 쉬고 싶어서 휴가를 냈다. 여기는 집 앞 파스쿠찌..
어제 대충 세팅한 블로그가 맘에 안든다! 다 때려쳐!
다시 만들자!

[Read More]