MySQL Database clustering

*** MySQL Optimizing for Large Scale Server ***
คร่าวๆ นะครับ

เอาเรื่องนี้ก่อนดีกว่า พอดีช่วงนี้ได้ไปคุมเว็บ torrent tracker แห่งหนึ่งอยู่
peer สูงสุดเฉียด 30,000 (avg: 26,000)
users online หน้าเว็บ 500 (avg: 300 <-- น้อยไปหน่อย)

server แยกเป็น 2 เครื่อง
เครื่องที่ 1
httpd 2.0.54 (port: xxxx / listen: localhost) + mod_php
lighttpd 2.1.14 (port: 80 / listen: all) + php_fastcgi + mod_proxy

  • mod_proxy: redirect
    … announce.php ไปเครื่องที่ 2,
    … “.css”, “.js” ไปเครื่องที่ 2,
    … “.php” เข้า httpd

เครื่องที่ 2
litespeed web server 2.1.18 (port: 80 / listen: all / allow: ip เครื่องที่ 1 / deny: all)

  • รับ connection เฉพาะแฟ้มที่ redirect มาจากเครื่องที่ 1 เท่านั้น
    mysql 5.0.24
  • compile แบบ pthread (เห็นแค่ process เดียว)

mysql

  • peers ใช้ MEMORY engine [เคยอ่านเจอจากเรื่อง optimize ของ ThaiLE ขอบคุณพี่วัฒด้วยครับ]
  • crontab copy ตาราง peers เข้าไปเป็นตาราง peerscache [MyISAM] เพื่อ backup ข้อมูล ทุกๆ 10 นาที
  • แก้ init script ของ mysql ให้ backup / restore ตาราง peer ทุกครั้งที่มีการ stop / start mysql ตามลำดับ
  • ทำตาราง userscache เก็บ stat ชั่วคราวของแต่ละ user เป็น memory engine เหมือนกัน
  • crontab copy ตาราง userscache ลงตาราง users ทุกๆ 15 นาที

สถานะเซิฟเวอร์
เครื่องที่ 1

  • Load Average: ~ 0.5-1.5
  • cpu: 10%
  • httpd process: ~ 20

เครื่องที่ 2

  • Load Average: ~0.8-2.0
  • cpu: 20%

รอต่อไป…อิอิ

ขอรอด้วยคนครับ คนเก่งจะมาเขียนบทความให้อ่าน ไม่มีเครื่องลองเหรอครับ
^^ ติดต่อผมได้นะครับ ถ้าเครื่องเหลือพอจะยินดีอย่างยิ่งครับ

ขอบคุณครับ
ปุ๊ก

ไม่มีเครื่องลอง

เครื่องเดียวก็ลองได้ครับ โดยเป็น เรียกใช้งาน mysql คนล่ะ port

ถ้ามี 4 node คุณก็เปิด mysql server คนล่ะ port กัน…

รวมเว็บสอนใช้ MySQL Cluster

ลองดูครับ ผมยังไม่ได้ลองเล่นเหมือนกัน

เยี่ยมจริงคุณ pat ไมได้คุย m กันตั้งนาน(ผมไม่คอ่ย on เองแหละ on เวลาชาวบ้านเขานอนอิอิ)

กำลังรอว่าจะพ้น เม.ย. ก่อนหรือป่าว