Development

Debezium 2026: คู่มือ Change Data Capture (CDC) บน PostgreSQL/MySQL สำหรับ SME ไทย

คู่มือ Debezium ฉบับ SME ไทย ทำ Change Data Capture จาก PostgreSQL/MySQL/MongoDB ส่งเข้า Kafka เชื่อม Data Warehouse และ Microservices แบบ Real-time พร้อมตัวอย่าง Production

AF
ADS FIT Team
·9 นาที
Share:
Debezium 2026: คู่มือ Change Data Capture (CDC) บน PostgreSQL/MySQL สำหรับ SME ไทย

# Debezium 2026: คู่มือ Change Data Capture (CDC) บน PostgreSQL/MySQL สำหรับ SME ไทย

หลายธุรกิจไทยที่เริ่มสเกลระบบหลังบ้านมักเจอปัญหาคล้ายกัน คือ ฐานข้อมูลหลักโตเร็วและมี Service ปลายทางจำนวนมากที่ต้องอ่านข้อมูล ทั้ง Data Warehouse, Search, Cache, Notification และ Analytics ต่างต้องการข้อมูลล่าสุดทันทีที่มีการเปลี่ยนแปลง

วิธีเดิมที่เคยใช้คือยิง Cron Job ดึงข้อมูลทุก 5 นาที หรือเขียน Trigger ในฐานข้อมูลโดยตรง ทั้งสองวิธีนี้สร้างภาระให้ Database หลักและทำให้ระบบช้าลงเมื่อข้อมูลเยอะ จุดนี้เองที่ Change Data Capture (CDC) เข้ามาเป็นทางออก โดยอ่าน Transaction Log ของฐานข้อมูลแทน เพื่อกระจายเหตุการณ์ไปยังบริการอื่นแบบ Real-time

Debezium คือ Open-Source CDC Platform ยอดนิยมที่สร้างบน Kafka Connect รองรับ PostgreSQL, MySQL, MariaDB, MongoDB, SQL Server และ Oracle บทความนี้จะสรุปสถาปัตยกรรม วิธีติดตั้ง การปรับแต่ง Production และ Use Case ที่ SME ไทยใช้งานได้จริง

Change Data Capture คืออะไรและทำไมต้องใช้

CDC คือเทคนิคในการตรวจจับการเปลี่ยนแปลงของข้อมูลในฐานข้อมูล (Insert/Update/Delete) แล้วส่งเหตุการณ์เหล่านั้นไปยังระบบปลายทางแบบ Real-time โดยไม่กระทบ Performance ของ DB หลัก เพราะอ่านจาก Write-Ahead Log (WAL/Binlog) แทนการ Query Table โดยตรง

ผลลัพธ์คือ SME สามารถสร้าง Architecture แบบ Event-Driven ได้ Service ปลายทางอ่านข้อความที่สนใจจาก Kafka แทนการเชื่อมตรงเข้า DB ลด Coupling ระหว่างระบบ และทำให้ Scaling ง่ายขึ้นมาก

รู้จัก Debezium ใน 1 นาที

Debezium ทำหน้าที่เป็น Source Connector ของ Kafka Connect คือดึง Change Events จาก DB แล้วส่งเข้า Kafka Topic จากนั้นทีมไหนสนใจเหตุการณ์อะไรก็ Subscribe Topic นั้นเอง

จุดเด่นของ Debezium ที่ทำให้กลายเป็นมาตรฐานของวงการ:

  • รองรับ DB หลักครบ ทั้ง PostgreSQL (logical decoding), MySQL (binlog), MongoDB (oplog), SQL Server, Oracle
  • ส่ง Schema เปลี่ยนแปลงไป Schema Registry เพื่อ Compatibility
  • มี Snapshot Mode สำหรับ Backfill ข้อมูลเก่าก่อนเริ่ม Stream ของใหม่
  • Open-Source 100% บน Apache 2.0 License
  • ตารางเปรียบเทียบ Debezium กับวิธีอื่น

    | วิธี | Latency | ภาระต่อ DB | ความครบถ้วน | ความซับซ้อน |

    |---|---|---|---|---|

    | Cron Job Polling | นาที | สูง | ขาด Delete | ต่ำ |

    | DB Trigger | วินาที | กลาง | ครบ | กลาง |

    | Dual Write | วินาที | สูง | เสี่ยงไม่ Sync | สูง |

    | Debezium CDC | <1 วินาที | ต่ำ | ครบ + Schema | กลาง |

    จะเห็นว่า Debezium ให้ Latency ต่ำสุดและภาระต่อ DB น้อย เพราะอ่านจาก Replication Log ที่ DB ทำอยู่แล้ว

    สถาปัตยกรรมตัวอย่างสำหรับ SME ไทย

    ระบบทั่วไปที่นำ Debezium ไปใช้งานในธุรกิจ E-Commerce หรือ Logistics ของไทย ประกอบด้วยส่วนหลัก:

  • PostgreSQL/MySQL เป็น Source DB ของระบบหลัก เช่น OMS, CRM
  • Debezium Connector รันบน Kafka Connect Cluster อ่าน WAL/Binlog
  • Apache Kafka เป็น Message Bus กลาง รองรับ Replay, Multi-consumer
  • Schema Registry (Apicurio หรือ Confluent) เก็บ Schema ของ Event
  • Sink Connector ส่งข้อมูลต่อไป ClickHouse, Elasticsearch, S3, Snowflake
  • Microservice ปลายทาง Subscribe Topic ที่สนใจ เช่น Notification, Search Indexer
  • How-to: Setup Debezium PostgreSQL ใน 6 ขั้นตอน

    ตัวอย่างนี้เหมาะกับ SME ที่มี PostgreSQL 14+ ติดตั้ง Kafka แล้ว และต้องการเริ่ม CDC ภายในไม่กี่ชั่วโมง:

  • Step 1: เปิด wal_level = logical, max_replication_slots >= 5, max_wal_senders >= 5 ใน postgresql.conf และ Restart DB
  • Step 2: สร้าง Replication User เช่น CREATE ROLE cdc_user WITH REPLICATION LOGIN PASSWORD '...';
  • Step 3: GRANT SELECT ให้ User บนตารางที่ต้องการ และเพิ่ม Publication: CREATE PUBLICATION dbz_pub FOR TABLE orders, customers;
  • Step 4: ติดตั้ง Kafka Connect และ Debezium PostgreSQL Connector (debezium-connector-postgres) ลง /plugins
  • Step 5: ส่ง Connector Config ผ่าน REST API: POST /connectors โดยระบุ database.hostname, database.dbname, plugin.name=pgoutput, slot.name, publication.name
  • Step 6: เริ่ม Snapshot อัตโนมัติ (initial) แล้วระบบจะ Stream Change ต่อเองทุกครั้งที่มี Insert/Update/Delete
  • จากนั้นข้อมูลจะปรากฏใน Kafka Topic ชื่อ schema.table ทันที ใช้ kafka-console-consumer ดูเหตุการณ์ได้

    ตารางเปรียบเทียบ Connector ตามฐานข้อมูล

    | Source DB | Mechanism | ข้อกำหนดพิเศษ | Latency |

    |---|---|---|---|

    | PostgreSQL | logical decoding | wal_level=logical | <500ms |

    | MySQL/MariaDB | binlog row | binlog_format=ROW | <500ms |

    | MongoDB | oplog | Replica Set | <1s |

    | SQL Server | CDC feature | Enable CDC tables | 1–2s |

    | Oracle | LogMiner/XStream | License เพิ่ม | 1–3s |

    Use Case ของ SME ไทย

    สถานการณ์ที่ Debezium ช่วยแก้ปัญหาธุรกิจไทยได้ดี:

  • E-Commerce: Sync Order/Stock จาก PostgreSQL ไป Elasticsearch สำหรับ Search และ ClickHouse สำหรับ Dashboard
  • Logistics: Stream สถานะพัสดุไปแอปลูกค้าผ่าน WebSocket เกือบ Real-time
  • Banking/FinTech: ส่งธุรกรรมไป Fraud Detection Engine และ AML Pipeline ทันที
  • SaaS: ทำ Analytics Layer แยกจาก OLTP เพื่อไม่ให้ Report กระทบระบบจริง
  • Migration ข้าม Cloud: Sync DB เก่า กับ DB ใหม่แบบ Zero Downtime
  • ปรับแต่งและ Best Practice บน Production

    หลายโปรเจกต์ล้มเหลวไม่ใช่เพราะ Debezium แต่เพราะตั้งค่าไม่เหมาะสม สิ่งที่ทีม SME ไทยควรทำตั้งแต่เริ่ม:

  • ตั้ง Kafka Topic ให้มี Partition พอ (>= จำนวน Sink Consumer) และ Replication Factor 3
  • เปิด Compaction บน Topic ที่ใช้ key เป็น Primary Key เพื่อให้เก็บสถานะล่าสุดของแต่ละ Row
  • ตั้ง Heartbeat Interval ใน Connector เพื่อกัน Replication Slot โตจน Disk เต็ม
  • ใช้ Avro/Protobuf + Schema Registry แทน JSON ดิบ ลดขนาดและบังคับ Schema Compatibility
  • Monitor Lag ของ Connector ผ่าน JMX + Prometheus + Grafana
  • ทำ Disaster Recovery แผนสองชั้น: Kafka Cluster Backup และ Snapshot Replay
  • Checklist ก่อนขึ้น Production

  • [x] Source DB ตั้งค่า WAL/Binlog ถูกต้อง และมี Disk เผื่อ Replication Slot
  • [x] Kafka Cluster ขั้นต่ำ 3 Broker, Topic Replication Factor 3
  • [x] เปิด TLS + SASL/SCRAM ระหว่าง Connector กับ Kafka
  • [x] Backup Schema Registry และ Connector Config ลง Git
  • [x] มีระบบ Alert Lag > 60 วินาที ส่งเข้า Slack/Line
  • [x] Load Test ด้วย pgbench/sysbench ให้แน่ใจว่า DB หลักไม่กระทบ
  • [x] Document Runbook สำหรับกรณี Slot โตหรือ Connector ค้าง
  • เปรียบเทียบ Debezium กับทางเลือกอื่น

    | Tool | Open-Source | Real-time | DB ที่รองรับ | จุดเด่น |

    |---|---|---|---|---|

    | Debezium | ใช่ | ใช่ | ครบ | Community ใหญ่, Mature |

    | Maxwell | ใช่ | ใช่ | MySQL เท่านั้น | เบา ติดตั้งง่าย |

    | AWS DMS | ไม่ (Managed) | ใช่ | ครบ | Serverless แต่ Vendor Lock-in |

    | Fivetran | ไม่ (SaaS) | ใช่ | ครบมาก | ใช้ง่าย, ค่าบริการสูง |

    ถ้า SME ไทยต้องการความยืดหยุ่นและคุมต้นทุนระยะยาว Debezium คือคำตอบที่ดีที่สุด

    สรุปและขั้นตอนถัดไป

    Debezium ช่วยให้ SME ไทยสร้าง Real-time Data Pipeline บนเครื่องมือ Open-Source ได้โดยไม่ต้องเปลี่ยน DB หลัก ค่าใช้จ่ายต่ำ ความเสี่ยง Vendor Lock-in ก็ต่ำ และ Scale ได้สูงเมื่อใช้ Kafka เป็น Backbone

    ขั้นตอนแนะนำ: เริ่มจาก POC บน 1 ตารางสำคัญ เช่น orders ตามด้วยทดสอบ Snapshot + Streaming ครบรอบ จากนั้นค่อยขยายไปยังตารางอื่น และเชื่อม Sink ปลายทางทีละตัวเพื่อกัน Risk

    หากต้องการที่ปรึกษาออกแบบ Real-time Data Architecture วาง Kafka, ทำ CDC, หรือเชื่อม Data Warehouse สำหรับ SME ไทย ทีม ADS FIT พร้อมช่วยให้ระบบของคุณเร็วและพร้อมสเกล ติดต่อรับคำปรึกษาฟรี หรืออ่านบทความ Development อื่น ๆ บน adsfit.co.th

    Tags

    #Debezium#CDC#PostgreSQL#MySQL#Kafka Connect#Real-time Data

    สนใจโซลูชันนี้?

    ปรึกษาทีม ADS FIT ฟรี เราพร้อมออกแบบระบบที่ฟิตกับธุรกิจของคุณ

    ติดต่อเรา →

    บทความที่เกี่ยวข้อง