Mysql Cluster에 관련하여 질문좀 드려요.

navitago의 이미지

Mysql Cluster로 리눅스에서 구현 했는데요.

Fail over 부분의 확인해는데..

Access 속도가 한대 일때 보다 두대가 빨라 져야 하는거 아닌가요?

Cluster Management System : 192.168.0.1, 192.168.0.2
Main Mysql API System : 192.168.0.1, 192.168.0.2
Node1 : 192.168.0.1
Node2 : 192.168.0.2

위와 같이 구했습니다..

node1 만 켜놓고 외부에서 insert로 데이터 2만개를 삽입하고 select 로 보았습니다.

-> Insert Time to Run : 030.82 sec
-> Select Time to Run : 002.16 sec
-> Total Time to Run : 032.98 sec

위와 같이 나왔구요.

node2를 켜서 node 1, node 2 를 다 켠 상태에서 똑같이 프로그램을 돌려 보았습니다.

[root@cluster0 MysqlTest]# ndb_mgm -e "show"
Connected to Management Server at: 192.168.0.1:1186
Cluster Configuration
---------------------
[ndbd(NDB)] 2 node(s)
id=3 @192.168.0.1 (Version: 4.1.22, Nodegroup: 0, Master)
id=4 @192.168.0.2 (Version: 4.1.22, Nodegroup: 0)

[ndb_mgmd(MGM)] 2 node(s)
id=1 @192.168.0.1 (Version: 4.1.22)
id=2 @192.168.0.2 (Version: 4.1.22)

[mysqld(API)] 2 node(s)
id=5 @192.168.0.1 (Version: 4.1.22)
id=6 @192.168.0.2 (Version: 4.1.22)

위와 같이 만들고..

했을 때 밑에 와 같은 결과가 나왔습니다.

-> Insert Time to Run : 071.82 sec
-> Select Time to Run : 004.16 sec
-> Total Time to Run : 075.98 sec

왜 이런 결과가 나오는지 모르겠습니다.

aero의 이미지

뭔가 잘 못 이해하고 계신듯 합니다.

DB를 떠나서 어떤 A 데이터를 실시간으로 B로 복제를 한다면.
A에 대해서 write i/o가(DB에서는 insert) 발생한다면 그것을 B에 똑같이 적용하는 부하가
추가로 발생하게 됩니다. 그래서 A하나만 돌렸을때 보다 A,B가 모든 작업을 완료하기 까지
시간이 더 걸립니다.

반면 read i/o (DB에서는 select) 의 경우는 부하를 반으로 줄일 수 있는데 이것은 read 작업을
A,B 양쪽으로 반씩 분산 시켰을때 적용됩니다. 복제를 걸어놓고 하나에 대해서 read만 한다면
A 하나만 썼을때와 차이는 없습니다.

DB를 단순히 미러해서 클러스트링 한다면 write 작업에 대한 이점은 없습니다. 2대가 아니라
3대 4대 몇백대로 늘인다고 해도 각 DB에 걸리는 write 부하는 똑같이 주어집니다.

정리하면 write(insert) 부하를 줄이려면 데이터를 쪼개서 별도의 DB로 나누어야 합니다.
read의 부하를 줄이려면 복제하고 복제된 갯수만큼 read작업에 대해서 1/n로 작업을 분산시켜야 합니다.

http://www.slideshare.net/vishnu/livejournals-backend-a-history-of-scaling/
의 20페이지 부터 보시면 제가 무슨 말을 하려는지 이해가 가실겁니다.

guerrillalds의 이미지

그런기능이 아니죠.. 하나가 죽으면 자동적으로 다른 하나가 동작하는....DNS 처럼 master와 slave 개념입니다.

navitago의 이미지

aero // 답변 감사 합니다. 큰 도움이 되었습니다.
querrillalds // 제가 질문을 이상하게 드렸네요. fail over 기능을 알고 있고요. 테스트해서 직접 확인 해봤습니다.^^
근데 access 속도 관련 문제 때문에 질문 드렸습니다.

그런데요..

mgm node 있고 node 1, node 2 가 있을 때..

select 문으로 데이터를 2만개 정도 요청한다고 하면...

어떤 방식으로 데이터를 가져 오는지 궁금합니다.

node 1, node 2에서 각각 만개씩 가져오나요?

oneday의 이미지

두대를 연결해서 더 빨라지는건 분산처리 시스템 아닌가요..

지금 설정하신 클러스터는 클러스터 매니저가 기동되어 있고........
어느 한 노드가 죽으면 failover가 발생하여 다른 노드가 올라오는..
그런 개념입니다.

디비는 공유디스크에 저장되어 있겠죠 ???
노드1/2를 모두 올려놓고 실행시키신거라면 클러스터 노드 확인이나
기타등등에 쓰여지는 cpu+memory때문에 살짜쿵 느려지는게
아닐려나.. 하고 생각해봅니다만.. ㅡㅡ?

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.