MySQL Tip
[MySQL Tip] การทำ Replication Master Slave แบบ real-time

[MySQL Tip] การทำ Replication Master Slave แบบ real-time

มีคนถามมานานแล้ว การทำ Replication แบบ MySQL Real-time ทำยัง ?
ซึ่งจริงๆแล้ว มีคู่มือในเว็บ หรือ หาอ่านได้จากกลุ่ม HOSxP ก็มีนะครับ

วันนี้เลยมารวบรวม วิธีการทำแบบที่ผมทำละกัน (อาจจะไม่แตกต่างกัน จาก อ.ท่านอื่นๆนะครับ ผมก็ไปศึกษาจาก อ.หลายๆท่านเหมือนกัน)
มาเริ่มกันเลย
1. มาเตรียมความพร้อมกันก่อนนะ

เตรียม server ไว้ 2 เครื่องนะครับ เราจะทำการ Master Server และอีกเครื่องคือทำ Slave Server กัน
กำหนด ip ตามตัวอย่างนี้ละกัน

Master Server
———————————–
Hostname : master-1
IP : 192.168.1.127
ID : 127

———————————–

Slave Server
———————————–
Hostname : slave-1
IP : 192.168.1.128
ID : 128

โดยทั้ง 2 เครื่อง ติดตั้ง MySQL หรือ Mariadb ไว้เรียบร้อยแล้ว และ ping หากันเจอแล้ว
และเปิด port 3306 ทั้ง 2 เครื่องด้วยนะครับ



2. อย่างแรกกำหนดคุณสมบัติที่ Master Server ก่อน

กำหนดค่าใน my.cnf (ถ้าแก้ไขเสร็จ ต้อง restart mysql ด้วย)
#ID Master server
server-id = 127
bind-address = 192.168.1.127
log_bin = mysql-bin
log-bin-index=bin-log.index
max_binlog_size=100M
binlog_format=row
expire_logs_days=3
log_bin_trust_function_creators = 1

เสร็จแล้ว restart mariadb  แล้วตรวจสอบ สถานะ master ด้วยคำสั่ง
show master status\G
หรือถ้าหากเครื่องนี้เคยเป็น slave มาก่อน ต้องสั่ง stop slave; ก่อนด้วยนะครับ ถ้าค่อยมากำหนดมา master server ใหม่

ให้จำค่าของ File: mysql-bin.00003 และ Position: 342 ไว้ด้วยนะครับ  เพราะต้องเอาเลขนี้ไปใช้งาน

สร้าง user สำหรับให้เครื่อง Slave server เข้ามาเชื่อม

stop slave; (กรณี ถ้าเคยทำเครื่องนี้เป็น slave มาก่อน)

grant replication slave on *.* to ‘replicate_user’@’%.192.168.1.128’ identified by ‘replicate_password’;
flush privileges;

3. ต่อไปกลับไปที่ฐาน Slave Server

กำหนดค่าใน my.cnf (ถ้าแก้ไขเสร็จ ต้อง restart mysql ด้วย)
#ID Slave server
server-id = 128
bind-address = 192.168.1.128
log_bin = mysql-bin
log-bin-index=bin-log.index
max_binlog_size=100M
binlog_format=row
expire_logs_days=3
log_bin_trust_function_creators = 1

แก้ไขแล้วสั่ง restart mariadb
แล้วเข้าไป mysql สั่งคำสั่ง ต่อไปนี้

สั่งคำสั่ง stop slave; (หากเคยทำมาก่อนหน้านี้แล้ว)

สั่งคำสั่งเพื่อสร้าง Master_Host
CHANGE MASTER TO
MASTER_HOST=’192.168.1.127′,
MASTER_USER=’replicate_user’,
MASTER_PASSWORD=’replicate_password’,
MASTER_LOG_FILE=’mysql-bin.000003′,
MASTER_LOG_POS=342;

เสร็จแล้ว สั่ง start slave;     เพื่อเริ่มเชื่อมต่อฐาน Master Server
และรันคำสั่ง
show slave status\G
เพื่อดูว่า Slave_IO_Running: Yes อยู่ไหม
และดูว่า Slave_SQL_Running: Yes อยู่ไหม


ถ้าขึ้นแบบนี้แสดงว่า Slave Node ทำงานปกติ
เป็นอันเสร็จทางฝั่ง Slave Server นะครับ

4. กลับไป Master Server แล้วลองสร้างฐานข้อมูลมา 1 ฐาน แล้วกลับไปดูที่ Slave Server ว่ามีฐานที่สร้างขึ้นเมื่อกี่ด้วยหรือไม่ ถ้าขึ้นทั้ง Slave และ Master ก็แสดงว่าการทำงาน Replicate ถูกต้องแล้ว

ปล. ถ้าจะหยุดการเชื่อม Master ก็เพียงสั่งคำสัง stop slave;

เสร็จแล้ว ถ้าไม่มีอะไร error นะครับ ถ้ามี error ให้กลับไปเริ่มต้นใหม่นะครับ

– ขอบคุณที่ติดตาม แล้วพบกันใหม่ครับ

 

Loading

13 thoughts on “[MySQL Tip] การทำ Replication Master Slave แบบ real-time

ใส่ความเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *

This site uses Akismet to reduce spam. Learn how your comment data is processed.