시스템이야기2015.06.19 12:17

zabbix 를 오래 운영하면 zabbix DB가 무럭무럭 자라서 용량이 상당히 커지고 속도도 느려진다.
수집한 데이터는 오래될수록 필요가 없으므로 이 데이터는 제외하고, 'zabbix 설정값만' 뽑아서 zabbix DB를 새로 구축하려고 한다.


[ 조건 ]
- 수집한 데이터는 버린다.
- 설정값(호스트, 템블릿, ...)만 받는다.
- zabbix DB를 새롭게 시작한다.

zabbix


1. 설정값만 백업하기

Zabbiz 2.0, 2.2, 2.4를 지원하는 zabbix-mysql-dump 라는 간단한 스크립트가 있다.
https://github.com/maxhq/zabbix-backup/wiki 에서 셀스크립트를 다운 받는다.

스크립트에서 zabbix DB 접속 정보와 mysqldump 경로(스크립트내에서는 /usr/bin/mysqldump로 되어 있음)를 확인한다.


DBHOST="127.0.0.1"
DBNAME="zabbix"
DBUSER="..."
DBPASS="..."


스크립트를 실행하면 현재디렉토리 dump 파일이 생겼을 것이다.


# sh zabbix-mysql-dump
# ls
zabbix_localhost_20150526-1347.sql.gz


스크립트로 dump 받은 것 외에 trigger에 의해 발생한 event정보를 옮기고 싶다면, zabbix 데이터 중에 2가지가 추가로 필요하다.


1) trigger에 의해 발생한 event를 담고 있는 'events' 테이블 데이터
2) 각 event에 대해 코멘트가 담긴 'acknowledges' 테이블 데이터


[ zabbix : trigger에 의해 발생한 event 정보 ]


# mysqldump --opt --single-transaction --skip-lock-tables --extended-insert=FALSE -u zabbix -p zabbix \
  acknowledges events > zabbix_acknowledges_events.sql



2. zabbix DB를 새롭게 구축하기


1) zabbix server 데몬을 내린다.
2) MySQL 서버를 내린다.
3) 기존 zabbix innodb파일을 다른 이름으로 임시 백업해둔다.
   zabbix 스키마( MySQL DATA DIR/zabbix/) 는 그대로 둔다.


4) MySQL 서버를 실행한다.
5) 조금 전에 dump받은 셋팅값을 넣어준다.
   gunzip zabbix_localhost_20150526-1347.sql
   mysql -u zabbix -p zabbix < zabbix_localhost_20150526-1347.sql


   기존에 있던 zabbix 테이블을 drop하고 -> 새로 create -> 셋팅값 insert


6) 별도로 백업받은 acknowledges 테이블의 데이터를 insert한다.
   acknowledges 테이블의 데이터를 기준으로 해당된 event만 뽑아 insert한다.


7) zabbix server를 올린다.

신고
Posted by 좋은진호
시스템이야기2012.06.26 19:20

전직 페이스북(facebook) 개발자 Eric Frenkiel과 Nikita Shamgunov가 만든 MemSQL.



MemSQLMemSQL


1. 특징을 간단히 살펴보자.

1) 개발자가 주장하기는  MemSQL 개발자에 따른 disk기반 DB보다 30배까지 빠르다고 한다.
   MemSQL은 초당 8만쿼리를 처리했고 MySQL은 초당 3천500쿼리를 처리해서 MySQL보다는 23배 빠르다고.

2) MemSQL은 메모리에 데이터를 유지하고 있어서 빠른 성능을 달성했다.

페이스북이 PHP코드를 C로 변환하여 성능을 향상시켰는데, 이 때 PHP -> C++로 변환한 툴이 'HipHop'이다. 이 HipHop툴처럼 MemSQL은 SQL을 C++로 변환하여
성능을 급격히 높였다. 개발자인 Frenkiel은 이렇게 말했다. "This is like HipHop for SQL"

3) MemSQL은 MySQL API와 인터페이스를 사용한다.

그래서 관리적 이슈도 없고, 어떤것도 새로 배울 것이 없다.

4) 하지만, 아직 지원 안되는게 있다. 그래도 나온지 얼마안된 DB가 위의 말대로의 성능만 내준다면, 앞으로 엄청난 물건이 될게 분명하다.

* UNSUPPORTED FEATURES


- Views
- Prepared Queries
- Stored procedures
- User Defined Functions
- Triggers
- Foreign keys
- Charsets other than utf8



5) MemSQL 투자자에 애쉬튼 커쳐(Ashton Kutcher)가 있다.

애쉬튼 커쳐는 IT에 관심이 많은 것 같다. 사진 공유 SNS인 Path(※ Path 공동창업자 중의 한명이 냅스터의 공동차업자 '숀 패닝')에도 투자를 했다. flipboard에도 투자하고.

2. 실제 사용해보기

MemSQL 사이트( http://memsql.com/ )에서 메일주소 입력하고 다운로드 받으면 된다.

- 64비트만 지원
- RHEL(또는 CentOS)의 경우 6.0 이상

바이너리 받아서 압축만 풀면 끝. 그리고, MySQL client 로 접속하니 정말 잘 되더라.


# ./memsqld -u root --port 3307 & <-- MemSQL 데몬 실행
#
# mysql -u root -h 127.0.0.1 -P 3307 --prompt="memsql> "
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 250
Server version: 5.5.8 MemSQL source distribution



쿼리를 실행하면 아래처럼 쿼리를 C++로 컴파일하게 된다. 그래서 초기 쿼리는 실행시간이 좀 걸리고, 그 이후는 MySQL보다 나은 성능을 보인다.
아래 'miliseconds'숫자는 생각보다 높긴한데, 실제 운영하는 DB서버라면 훨씬 낮은 수치를 보일 것이다.
맛보기 테스트를 하려고 듀얼코어, 4G 서버에서 설치한 것이다.


1688649195 2012-06-26 16:22:23 INFO: Query test.'select count(*) from test2' compiled in 669 miliseconds
2140046715 2012-06-26 16:29:55 INFO: Query test.'INSERT INTO test2(name, date) values (?, now())' compiled in 1369 miliseconds
3317465154 2012-06-26 16:49:32 INFO: Query test.'select name from test2 where id = @' compiled in 714 miliseconds
9867440156 2012-06-26 18:38:42 INFO: Query test.'update test2 set name = ^ where id = @' compiled in 1390 miliseconds


3. 성능은?

- php 5.3에서 microtime으로 시간 체크. 각 쿼리별로 5만회 실행한 시간 체크. 테스트는 3회씩.
- insert : INSERT INTO test2(name, date) VALUES ('aaaaa', now())
- select : SELECT name FROM test2 WHERE id = $i
- update : UPDATE test2 SET name = 'bbbbb' WHERE id = $i

테스트 환경은?

- 설정 튜닝이 제대로 되지 않은 상태에서 테스트가 이뤄졌고,
- MemSQL의 권장 메모리인 8G보다 적은 4G에서 테스트를 했다.
- 서비스에 투입할 수도 없는 상황이고,
- 서비스 환경에 근접하게 테스트 요청을 할 수도 없으므로

아래 수치는 성능이 MySQL보다 낫긴 낫구나라는 정도로만 이해해야 한다. 절대적인 것으로 봐서는 안된다. 정말 참고만.
수치상으로는 1.5~2배정도. 아래 수치 단위는 초.
서비스에서는 쿼리도 복잡하고, 다양한 쿼리가 한꺼번에 이뤄지므로 오히려 테스트 결과보다 성능이 더 나을 수 있을 것 같다.


1. INSERT

MemSQL 2.715 2.371 2.491
MySQL  4.004 3.974 3.982

2. SELECT

MemSQL 2.484 2.772 2.741
MySQL  4.271 4.296 4.088

3. UPDATE

MemSQL 2.380 2.527 2.177
MySQL  4.283 3.975 3.968


* 참고글 :
  Ex-Facebookers launch MemSQL to make your database fly (2012.6.18)

신고
Posted by 좋은진호
시스템이야기2010.05.31 19:14
MySQL의 SELECT LOAD_FILE() 함수, LOAD DATA는 서버내에 있는 파일을 읽어들이는 명령이다. MySQL 데몬이 파일을 읽을 권한이 있다면, 서버내의 경로와 상관없이 어떠한 파일이라도 읽을 수 있다. 만약 웹페이지가 SQL Injection 공격의 취약점이 있다고 할 때 다음과 같은 형식으로 쉽게 웹에서 서버 내의 파일을 확인할 수 있는 위험성이 존재한다.

select ...생략... from ...생략...  UNION SELECT LOAD_FILE("/etc/passwd");

이 함수가 편리성, 활용성 측면에서는 좋을 수 있지만, 보안에는 취약한 통로를 제공하는 셈이다.

2009월 말, 루마니아의 Unu 해커는 세계 주요 사이트와 국내 보안 업체 사이트를 SQL Injection공격으로 해킹을 했다. 그리고, MySQL의 load_file() 함수로 서버의 /etc/ 파일까지 캡쳐하여 블로그에 공개한 적이 있다.

mysql


MySQL 5.1.17부터는 LOAD_FILE() 함수, LOAD DATA, SELECT ... OUTFILE을 특정 디렉토리내의 파일만 허용하도록 설정할 수 있다. --secure-file-priv 옵션은 동적으로는 설정값을 변경할 수가 없다. my.conf 의 '[mysqld]' 섹션에 다음과 같은 설정을 한다. (경로는 운영 환경에 맞게 할 것)

[mysqld]

secure-file-priv=/var/tmp

위처럼 설정하고 MySQL 데몬을 실행하면 load_file()을 사용할 수 있는 경로가 /var/tmp으로 제한이 된다.

자세한 글은 커피닉스의 'MySQL에서 보안위해 load_file() 경로 제한하기' ( 2010.5 )를 읽어보기 바란다.


* 관련글

- 2009/11/30 - [IT이야기] - nProtect 웹사이트, SQL Injection공격 당해
- 2008/12/11 - [시스템이야기] - MySQL 인젝션 공격 방어하는 GreenSQL
- 12.22~23 커피닉스 이야기 (Intel사이트 SQL Injection등) (2009.12.24)
- 대량 SQL Injection 공격 주의 (2009.12.11)


신고
Posted by 좋은진호
IT이야기2009.11.30 19:18

'보안뉴스'에 '[단독] 엔프로텍트, 해킹당해 100만 고객 DB와 ID/PW 유출!' 이라는 기사가 올라왔다. 며칠전 Symantec Japan 사이트를 해킹했던 루마니아 해커 우누(Unu)가 SQL Injection 공격을 사용해서 http://www.nprotect.com/ 웹페이지를 해킹했다. ID, 메일주소, 비밀번호가 유출됐을 가능성이 있다.

공격한 해커의 블로그를 보면 다음과 같은 사항을 알 수 있다.
  • MySQL 5.0.x 버전 사용
  • DB데이터는 별도 내부망이 아닌 공인 IP를 통해서 통신 (211.200.28.x)
  • MySQL load_file() 함수를 사용할 수 있도록 되어 있어 시스템의 파일들도 쉽게 볼 수 있었다.
  • 비밀번호는 암호화 되어 있지 것으로 보인다. (추측)
  • 유저 DB건수는 약 108만여건

[+] Gathering MySQL Server Configuration …
Database: ??????
User: ????????@211.200.28.???
Version: 5.0.41-log
... 생략 ...
[+] Number of Rows: 1079630

nProtect는 홈페이지에 비밀번호 변경 공지가 띄워진 상태이고, '엔프로텍트 보안강화 조치를 위한 개인정보 변경 안내'라는 메일을 고객들에게 발송했다. 해킹에 대한 이야기는 없고, '고객님의 정보보호 강화를 위하여 패스워드(비밀번호)를 변경해 주세요'라는 내용으로 변경을 권고하고 있다. 개인정보가 유출되지 않았기를 바라지만, 가입된 사용자라면 빨리 변경하시길...

nProtect 비밀번호 변경 공지

[ nProtect웹사이트에 올라온 비밀번호 변경 공지 ]


이 번 nProtect 웹사이트 해킹을 보니 다음과 같은 생각이 든다.

  • 유저들의 보안강화를 위해 노력은 했지만, 정작 본인의 웹사이트 보안에는 구멍이 생겼다.
  • 중이 제 머리 못 깍는다 격이다.
  • 비교적 빨리 조치를 취해서 다행일지도 모르겠다.
  • 그럴지라도, nProtect 관계자분들은 이번 사건을 심각하게 생각해야 하고, 후속조치(망분리, 비밀번호 암호화 등)가 필요하다.

신고
Posted by 좋은진호
시스템이야기2009.06.24 18:49
LAMP환경(Linux, Apache, MySQL, PHP) 구축과 튜닝에 대해 주로 컨설팅 하는 Percona라는 곳이 있다. 대표적인 블로그 중 하나가 'MySQL Performance Blog'이다. 이 업체에서 컨퍼런스 영상과 실행 화면 등을 제공하는 percona.tv 사이트를 얼마전 오픈했다.
이 사이트의 성격은 'BSD 관련의 동영상'을 유튜브 한 곳에 모아둔 'BSDConferences' 동영상과 비슷할 것 같다. (관련글 : 유튜브 BSDConferences에 모여진 동영상 )

현재 몇 개의 동영상이 올라와 있다.
  • Emulate a More Granular Slow Query Log With Maatkit
  • InnoDB recovery tutorial using innodb-tools 등



percona.tv는 유튜브에 동영상을 올리고 있다. 유튜브의 PerconaPerformance채널에서도 볼 수 있다.
앞으로 MySQL의 양질의 기술적 동영상을 쉽게 접할 수 있을 것 같다. 

신고
Posted by 좋은진호
시스템이야기2009.06.08 12:41
MySQL 설정값(my.cnf) 튜닝하는게 어려웠죠? 그 튜닝값이 내 환경이 맞는 것인지도 확인하기 어려웠죠?
MySQL의 설정값이 현재 운영중인 환경에 적합한지를 쉽게 판단할 수 있도록 도와주는 스크립트가 있다.
MySQL Performance Tuning Primer Script 에서 Download 받을 수 있다.

이 스크립트는 "SHOW STATUS LIKE..."와 "SHOW VARIABLES LIKE..."정보를 얻어낸다. 바로 이 설정값과 운영에 따라 나온 수치를 비교하여 적정한 값을 권장해준다. DB서버는 반드시 운영중이어야 하며, 최소 2일 이상 운영한 상태를 권장하고 있다. 스크립트는 Linux, Solaris, FreeBSD, MacOS에서 사용 가능.

  • DB 업타임, 평균 QPS
  • Slow Query Log
  • Max Connections
  • Worker Threads
  • Key Buffer
  • Query Cache
  • Sort Buffer
  • Joins
  • Temp Tables
  • Table (Open & Definition) Cache
  • Table Locking
  • Table Scans (read_buffer)
  • Innodb Status  (사용중인 경우만)

결과는 몇초만에 나온다.

mysql tuning

[ MySQL Performance Tuning Primer Script 결과 일부 ]



신고
Posted by 좋은진호
시스템이야기2008.12.11 00:34
GreenSQL( http://www.greensql.net/ )은 MySQL에 대한 SQL 인젝션(Injection) 공격을 방어하는 프락시 개념의 어플리케이션이다. 웹페이지를 호출하면 DB쿼리는 먼저 GreenSQL 로 넘어겨지고, 검사한 후 정상적이면 MySQL 서버로 요청하는 과정을 거친다.
GreenSQL을 설치하고 실행과정은 이렇다. MySQL 서버는 기존 그대로 실행(디폴트 3306 포트)하고, GreenSQL을 3305포트로 실행(127.0.0.1:3305)한다. 이 때 GreenSQL은 MySQL 서버로 커넥션이 이뤄진다. 웹페이지는 DB커넥션을 GreenSQL의 3305포트로 커넥션하도록 변경해주면 된다. (MySQL을 3305로, GreenSQL을 3306으로 실행할 수도 있을 것이다.)

[ 이미지 출처 : GreenSQL 홈페이지 ]

DB 쿼리의 정상, 비정상은 어떻게 판단하는가?

1) '관리자가 실행할 SQL 유형'이나 '민간한 형태의 SQL 유형'(flush privileges, show 명령, 불법적 형태 등)을 패턴 매칭 방식으로 찾아서 불법 요청으로 간주한다. 예를들면 DB관리 명령어, DB 스키마를 변경시도하는 경우, 시스템 파일을 액세스하려는 경우 등을 불법으로 간주한다. 이 패턴에 대해서는 설정 파일을 통해서 변경이 가능하다.

2) 그후 각 쿼리 유형에는 점수가 할당되어 있는데, 이 점수를 합산한다. 지정된 값 이상이 될 경우, 경고 메시지를 뿌려주거나 차단할 수 있다. 유형은 다음과 같다.

* Access to sensitive tables increases risk query (users, accounts, credit information)
* Comments inside SQL commands increases query risk
* Usage of an empty password string
* Found ‘or’ token inside query
* Found SQL expression that always return true (SQL tautology)
* Comparison of constant values (SQL tautology)
* ... 등 ...

점수는 설정 파일을 통해서 변경이 가능하다. 다음은 샘플 설정 파일의 일부이다.
# If query risk is bigger then specified value, query will be blocked
block_level = 30
# Level of risk used to generate warnings. It is recomended to run application
# in low warning level and then to acknowledge all valid queries and
# then to lower the block_level
warn_level=20
# Risk factor associated with SQL comments
risk_sql_comments=30

차단된 샘플 로그이다. (sCag님 제공. 감사합니다.)

2008-12-09 16:54:18 mysql SELECT * FROM user WHERE name = 'x' or 1=1; --' AND pwd=SHA('')  blocked

GreenSQL에 대한 결론이다.

  • 멋진 생각이다. ^^
  • 패턴 설정과 차단수준을 유동적으로 변경 가능하다.
  • 대부분의 리눅스 배포판을 지원하며, FreeBSD도 지원한다.
  • 성능 테스트 결과 약간의 성능 저하가 발생한다. (2~12%정도)
  • 대용량 서비스에서 사용하기는 무리가 있을 것 같다.
  • 소규모 사이트나 웹호스팅에서는 고려해볼만 하다.
  • SQL Relay(DB 풀링과 로드발런싱 등)에서 제공하는 기능 등이 하나로 합쳐진다면 멋질 것 같다.
※ 개인적으로 GreenSQL을 운영하지 않습니다. 소규모 사이트, 웹호스팅에서 유용할 것 같아 소개해드리는 것이며, 운영상 궁금한 점을 저에게 질문하셔도 답해드릴 수 없습니다. ^^
※ 글쓰고 나니깐 sCag님도 GreenSQL 글을 쓰셨네. 안쓰실 것 처럼 말씀하시더니. ㅋㅋ

신고
Posted by 좋은진호
시스템이야기2008.11.27 13:05
MySQL 5.1 Reference Manual, MySQL 5.1 HA 문서이며, MySQL Korea에 올라와 있습니다. 25일부터 서비스를 했나봅니다.

* 공지내용
11월 25일부터 MySQL 5.1 사용자 매뉴얼과 HA 매뉴얼을 한글로 제공해 드리고 있습니다.
5.1 사용자 매뉴얼은 패키지 구매시 함께 제공되는 것과 같은 내용입니다.
HA 매뉴얼은 리플리케이션과 클러스터 부분을 따로 분리하여 업데이트된 부분을 다시 번역하였습니다.
... 생략 ...

http://www.mysqlkorea.co.kr/sub.html?mcode=develop&scode=01_1&lang=k
신고
Posted by 좋은진호
시스템이야기2008.11.26 01:19
MySQL서버는 log 옵션(my.cnf에서 log=파일명. slow query는 log-slow-queries=파일명)을 통해서 실행된 DB 쿼리를 모두 파일로 저장할 수가 있다. 그러나 DB 서버에서 작은 사이트가 아니고선 엄청난 양의 실시간 쿼리를 모두 쌓는다는 것은 힘들다. DB 운영도중에 잠시동안 쿼리 로그를 쌓겠다고 MySQL 재실행할 수도 없는 노릇이다. MySQL 5.1에서는 재실행없이 로그를 쌓을 것인지 안할 것인지를 결정할 수 있지만, 이부분은 뒤에서 설명하기로 하고, 패킷 스니핑 방법으로 실시간으로 살펴보는 방법을 소개한다.

Poor man’s query logging (Posted by Maciej Dobrzanski) 에서 tcpdump와 perl의 정규표현으로 실시간 쿼리를 살펴보는 괜찮은 방법을 소개하고 있다.

* 위 블로그에 올라온 간단한 명령
     # tcpdump -i eth0 -s 0 -l -w - dst port 3306 | strings | perl -e '
while(<>) { chomp; next if /^[^ ]+[ ]*$/;
   if(/^(SELECT|UPDATE|DELETE|INSERT|SET|COMMIT|ROLLBACK|CREATE|DROP|ALTER)/i) {
      if (defined $q) { print “$q\n”; }
      $q=$_;
   } else {
      $_ =~ s/^[ \t]+//; $q.=” $_”;
   }
}’
    
위 명령을 활용하여 SELECT/UPDATE/DELETE/INSERT 등을 highlight 하도록 작성했다. highlight 에 대한 자세한 글은 '로그 모니터링시 특정 문자를 highlight하기 (2008.1, 글 좋은진호)'를 살펴보기 바란다.

* query_sniff.sh 내려받기
* query_view.pl 내려받기

[ MySQL 쿼리를 스니핑한 후 highlight. 'count'문자도 함께 highlight ]


MySQL 5.1에서는 쿼리를 로깅할지 안할지 여부를 재실행없이 변경할 수 있는 기능이 있다. 다음과 같이 로그 저장을 ON으로 설정할 수 있고, 필요없을 때 다시 OFF를 하면 된다.

SET GLOBAL general_log = 'ON';
SET GLOBAL slow_query_log = 'ON';
... 생략 ...
SET GLOBAL general_log = 'OFF';
SET GLOBAL slow_query_log = 'OFF';

파일이 아닌 테이블로 로그를 저장하려면 다음과 같이 설정한다.
SET GLOBAL log_output = 'TABLE';

log_output= 설정 값으로는 FILE, TABLE, NONE (log_output = 'FILE', log_output = 'TABLE', ..)을 지정할 수 있다. DB 테이블로 쿼리를 저장하게 되면 쿼리 전체는 general_log 테이블에, slow 쿼리는 slow_log 테이블에 각각 저장된다. general_log 테이블의 스키마는 다음과 같으며, slow_log 테이블은 query_time, lock_time 등 다른 형식의 데이터들이 저장된다.

mysql> desc mysql.general_log;
+--------------+-------------+------+-----+-------------------+-----------------------------+
| Field        | Type        | Null | Key | Default           | Extra                       |
+--------------+-------------+------+-----+-------------------+-----------------------------+
| event_time   | timestamp   | NO   |     | CURRENT_TIMESTAMP | on update CURRENT_TIMESTAMP |
| user_host    | mediumtext  | NO   |     | NULL              |                             |
| thread_id    | int(11)     | NO   |     | NULL              |                             |
| server_id    | int(11)     | NO   |     | NULL              |                             |
| command_type | varchar(64) | NO   |     | NULL              |                             |
| argument     | mediumtext  | NO   |     | NULL              |                             |
+--------------+-------------+------+-----+-------------------+-----------------------------+
6 rows in set (0.00 sec)

보다 자세한 것은 커피닉스에 써둔 'MySQL 쿼리 실시간 모니터링 및 저장하기'를 살펴보기 바란다.
신고
Posted by 좋은진호
IT이야기2008.04.16 17:20
Santa Clara에서 열리고 있는 'MySQL Conference & Expo'에서 Sun은 MySQL 5.1이 정식버전(GA, General Availability)으로 될 것이라고 발표했다. 지금까지 정식버전(GA)은 5.0이며, 5.1은 RC(Release Candidate)버전 상태이다. 그만큼 5.1버전이 그만큼 5.1버전이 안정 상태에 접어들었다는 의미이다. 5.1 정식버전은 이번 분기말에에 나올 예정이다. 또한 MySQL Community Server, Enterprise Server, Embedded Server 등 3종류로 발표된다.

사용자 삽입 이미지

5.1은 5.1.23까지 나와 있고, 5.1 정식버전에 가장 가까운 상태의 RC 버전은 http://dev.mysql.com/downloads/ 에서 받을 수 있다.

http://www.mysql.com/news-and-events/press-release/release_2008_14.html
http://www.sun.com/aboutsun/pr/2008-04/sunflash.20080415.1.xml (2개 URL모두 같은 내용)

* Table and Index Partitioning
* Row-Based and Hybrid Replication
* Event Scheduler
* New Upgrade Advisor in MySQL Enterprise Monitor


파티셔닝은 오라클 DB 등을 사용해보신 분은 알 것이다. 하나의 table인데, 물리적 DB파일은 여러개로 쪼개서 저장 가능하는 것. 예를들어 table은 하나인데, 2007년과 2008년이 다른 DB파일로 저장될 수 있다.
결국 select할 때 2007년을 조건으로 줄 경우에, 통 DB파일보다 빠른 결과를 얻을 수 있다.

그리고, row기반 리플리케이션. 현재까지는 DB전체 리플리케이션만 가능했다.

이벤트 스케쥴러는 DB내의 cron으로 이해하면 될 것이다. DB내에 주기적으로 반복되는 일을 스케줄러에 등록해주면, 자동으로 실행이 된다. 자정에 통계정보를 일괄처리해야 할 경우 스케줄러에 넣어주면 될 것이다.

Sun 발표내용에서는 웹크롤러인 spinn3r.com에 대한 얘기도 있다. spinn3r.com MySQL 5.1을 사용중이며, 대략 1일 1800만 URL을 인덱싱하고 있다.

We're using MySQL 5.1 in production for a Weblog discovery code database which indexes approximately 18 million URLs per day," said Kevin Burton, founder and CEO of Spinn3r.com.

덧붙여서 4월 29일(화) 그랜드 인터컨티넨탈 호텔에서 'Sun/MySQL Korea Launching Seminar'( http://www.theseminar.co.kr/sun/ )가 있다. 무료 세미나에 무료 주차권 제공. 덤으로 티셔츠까지. ^^

신고
Posted by 좋은진호