เพิ่มแหล่ง CDC ของฐานข้อมูล MySQL ไปยังเหตุการณ์สตรีม

บทความนี้แสดงวิธีการเพิ่มแหล่งข้อมูลการจับภาพข้อมูลการเปลี่ยนแปลง MySQL ไปยังเหตุการณ์สตรีม

ตัวเชื่อมต่อ Azure MySQL Database Change Data Capture (CDC) ช่วยให้คุณสามารถบันทึกสแนปช็อตของข้อมูลปัจจุบันในฐานข้อมูล Azure MySQL คุณระบุตารางที่จะตรวจสอบและรับการแจ้งเตือนเมื่อมีการเปลี่ยนแปลงระดับแถวต่อมาใดๆ กับตาราง เมื่อบันทึกการเปลี่ยนแปลงในสตรีมแล้ว คุณสามารถประมวลผลข้อมูล CDC นี้แบบเรียลไทม์และส่งไปยังปลายทางต่างๆ ภายใน Fabric เพื่อประมวลผลหรือวิเคราะห์เพิ่มเติม

ปัจจุบัน CDC ฐานข้อมูล MySQL ได้รับการสนับสนุนจากบริการต่อไปนี้ซึ่งฐานข้อมูลสามารถเข้าถึงได้แบบสาธารณะ:

  • <ค 0>Azure Database for MySQL
  • Amazon RDS สําหรับ MySQL
  • Amazon Aurora MySQL
  • Google Cloud SQL สําหรับ MySQL (GCP)

คู่มือนี้ใช้ Azure Database for MySQL CDC เป็นอดีต amp เลอ

เมื่อแหล่งข้อมูล CDC ของฐานข้อมูล MySQL ถูกเพิ่มลงในเหตุการณ์จะบันทึกการเปลี่ยนแปลงระดับแถวไปยังตารางที่ระบุ จากนั้นการเปลี่ยนแปลงเหล่านี้สามารถดําเนินการในแบบเรียลไทม์และส่งไปยังปลายทางที่แตกต่างกันสําหรับการวิเคราะห์เพิ่มเติม

ข้อกำหนดเบื้องต้น

  • การเข้าถึงพื้นที่ทํางานในโหมดสิทธิ์การใช้งานความจุ Fabric (หรือ) โหมดสิทธิ์การใช้งานรุ่นทดลองใช้ที่มีสิทธิ์ Contributor หรือสูงกว่า
  • เข้าถึงอินสแตนซ์ของฐานข้อมูล MySQL เช่น: ฐานข้อมูลใน Azure Database for MySQL - Flexible Server
  • ฐานข้อมูล MySQL ของคุณควรสามารถเข้าถึงได้แบบสาธารณะและไม่อยู่หลังไฟร์วอลล์หรือรักษาความปลอดภัยในเครือข่ายเสมือน ถ้าอยู่ในเครือข่ายที่มีการป้องกัน ให้เชื่อมต่อโดยใช้การแทรกเครือข่ายเสมือนของตัวเชื่อมต่อ Eventstream
  • ถ้าคุณไม่มีเหตุการณ์สตรีม ให้สร้างเหตุการณ์สตรีม

ตั้งค่าฐานข้อมูล MySQL

ตัวเชื่อมต่อใช้ตัวเชื่อมต่อ Debezium MySQL เพื่อบันทึกการเปลี่ยนแปลงในฐานข้อมูล MySQL ของคุณ คุณต้องกําหนดผู้ใช้ MySQL พร้อมสิทธิ์ที่เหมาะสมในฐานข้อมูลทั้งหมดที่ตัวเชื่อมต่อการรับส่งข้อความสามารถบันทึกการเปลี่ยนแปลงได้ คุณสามารถใช้ ผู้ใช้ผู้ดูแลระบบ โดยตรงเพื่อเชื่อมต่อกับฐานข้อมูล ซึ่งโดยปกติจะมีสิทธิ์ที่เหมาะสม หรือคุณสามารถทําตามขั้นตอนเหล่านี้เพื่อสร้างผู้ใช้ใหม่:

หมายเหตุ

ผู้ใช้ใหม่หรือบัญชีผู้ดูแลระบบและรหัสผ่านที่เกี่ยวข้องจะถูกใช้เพื่อเชื่อมต่อกับฐานข้อมูลในภายหลังภายใน Eventstream

  1. mysqlที่พร้อมท์คําสั่ง ให้สร้างผู้ใช้ MySQL:

    mysql> CREATE USER 'user'@'%' IDENTIFIED BY 'password';
    
  2. ให้สิทธิ์ที่จําเป็นแก่ผู้ใช้:

    mysql> GRANT SELECT, SHOW DATABASES, REPLICATION REPLICA, REPLICATION CLIENT ON *.* TO 'user'@'%';
    

    หมายเหตุ

    เมื่อการล็อกการอ่านส่วนกลางไม่พร้อมใช้งาน เช่นเดียวกับในตัวเลือกที่โฮสต์ เช่น Amazon Relational Database Service (RDS) หรือ Aurora ระบบจะใช้การล็อกระดับตารางเพื่อสร้างสแนปช็อตที่สอดคล้องกัน ในกรณีนี้ คุณจําเป็นต้องให้สิทธิ์ LOCK TABLES แก่ผู้ใช้ นอกจากนี้ เพื่อสนับสนุน FLUSH การดําเนินการในระหว่างสแนปช็อต คุณอาจต้องให้สิทธิ์ RELOAD หรือ FLUSH_TABLES สิทธิ์การใช้งานด้วย

  3. ดําเนินการสิทธิ์ของผู้ใช้ให้เสร็จสมบูรณ์:

    mysql> FLUSH PRIVILEGES;
    

หากต้องการยืนยันว่าผู้ใช้หรือผู้ดูแลระบบมีสิทธิ์ที่จําเป็นให้เรียกใช้คําสั่งนี้หรือไม่จากนั้นควรแสดงสิทธิ์ที่จําเป็นในขั้นตอนที่ #2:

SHOW GRANTS FOR user;

สําหรับข้อมูลเพิ่มเติมเกี่ยวกับการให้สิทธิ์ที่จําเป็นแก่ผู้ใช้ โปรดดู ที่ ตัวเชื่อมต่อ Debezium สําหรับ MySQL: คู่มือ Debezium

เปิดใช้งาน binlog

คุณต้องเปิดใช้งานการบันทึกไบนารีสําหรับการจําลอง MySQL แฟ้มบันทึกไบนารีบันทึกการปรับปรุงทรานแซคชันสําหรับเครื่องมือการจําลองแบบเพื่อเผยแพร่การเปลี่ยนแปลง ส่วนนี้ใช้ Azure Database for MySQL CDC เป็นตัวอย่างเพื่อแสดงขั้นตอนการกําหนดค่า

  1. บนหน้าพอร์ทัล Azure สําหรับบัญชี Azure Database for MySQL ของคุณ ให้เลือก Server parameters ภายใต้ Settings ในการนําทางด้านซ้าย

  2. บนหน้า พารามิเตอร์ของเซิร์ฟเวอร์ ให้กําหนดค่าคุณสมบัติต่อไปนี้ จากนั้นเลือก บันทึก

    • สําหรับ binlog_row_image ให้เลือก เต็ม

    • สําหรับ binlog_expire_logs_seconds ให้ตั้งค่าจํานวนวินาทีที่บริการรอก่อนที่ไฟล์บันทึกไบนารีจะถูกลบออก ตั้งค่าเพื่อให้ตรงกับความต้องการของสภาพแวดล้อมของคุณ ตัวอย่างเช่น 86400

    สกรีนช็อตของการตั้งค่า binlog สําหรับการจําลองแบบภายใต้พารามิเตอร์เซิร์ฟเวอร์

เพิ่ม MySQL Database (DB) Change Data Capture (CDC) เป็นแหล่งที่มา

หากคุณยังไม่ได้เพิ่มแหล่งข้อมูลใดๆ ลงในสตรีมเหตุการณ์ของคุณ ให้เลือกไทล์ เชื่อมต่อแหล่งข้อมูล คุณยังสามารถเลือก เพิ่มแหล่งข้อมูล>Connect บนริบบิ้นได้อีกด้วย

สกรีนช็อตที่แสดงการเลือกไทล์สําหรับการใช้แหล่งข้อมูลภายนอก

หากคุณกําลังเพิ่มแหล่งที่มาไปยังสตรีมเหตุการณ์ที่เผยแพร่แล้ว ให้เปลี่ยนเป็นโหมดแก้ไข บน Ribbon ให้เลือก เพิ่มแหล่งข้อมูล Connect>

สกรีนช็อตที่แสดงการเลือกสําหรับการเพิ่มแหล่งข้อมูลภายนอก

บนหน้า เลือกแหล่งข้อมูล ให้ค้นหาและเลือก เชื่อมต่อ บนไทล์ MySQL DB (CDC)

สกรีนช็อตที่แสดงการเลือก MySQL DB (CDC) เป็นชนิดแหล่งข้อมูลในตัวช่วยสร้างรับเหตุการณ์

กําหนดค่าและเชื่อมต่อกับ MySQL DB (CDC)

  1. บนหน้าจอ เชื่อมต่อ ภายใต้ การเชื่อมต่อ ให้เลือก การเชื่อมต่อ ใหม่ เพื่อสร้างการเชื่อมต่อระบบคลาวด์

    สกรีนช็อตที่แสดงหน้าเชื่อมต่อ

  2. ป้อนการตั้งค่าการเชื่อมต่อและข้อมูลประจําตัวการเชื่อมต่อต่อไปนี้สําหรับฐานข้อมูล MySQL ของคุณ แล้วเลือก เชื่อมต่อ

  3. ป้อนข้อมูลต่อไปนี้เพื่อกําหนดค่าแหล่งข้อมูล MySQL DB CDC จากนั้นเลือก ถัดไป

    • พอร์ต: ค่าเริ่มต้นคือ 3306 ถ้าการเชื่อมต่อระบบคลาวด์ที่คุณเลือกได้รับการกําหนดค่าใน จัดการการเชื่อมต่อและเกตเวย์ตรวจสอบให้แน่ใจว่าหมายเลขพอร์ตตรงกับชุดนั้น หากไม่ตรงกัน หมายเลขพอร์ตในการเชื่อมต่อระบบคลาวด์ใน จัดการการเชื่อมต่อและเกตเวย์ จะมีความสําคัญมากขึ้น

    • ตาราง: เลือกตารางทั้งหมดหรือป้อนชื่อตาราง หากคุณเลือกรายการหลัง ให้ระบุตารางโดยใช้รายการตัวระบุตารางที่คั่นด้วยเครื่องหมายจุลภาค (databaseName.tableName) หรือนิพจน์ปกติที่ถูกต้อง เช่น:

      • ใช้ databaseName.test.* เพื่อเลือกตารางทั้งหมดที่มีชื่อเริ่มต้นด้วย databaseName.test
      • ใช้ databaseName\.(test1|test2) เพื่อเลือก databaseName.test1 และ databaseName.test2

      คุณสามารถผสมรูปแบบทั้งสองได้โดยใช้เครื่องหมายจุลภาค ขีดจํากัดอักขระทั้งหมดสําหรับรายการทั้งหมดคือ 102,400 อักขระ

    • ID เซิร์ฟเวอร์: ป้อนค่าที่ไม่ซ้ํากันสําหรับแต่ละเซิร์ฟเวอร์และไคลเอ็นต์การจําลองแบบในคลัสเตอร์ MySQL ค่าเริ่มต้นคือ 1000

    หมายเหตุ

    ตั้งค่า ID เซิร์ฟเวอร์ที่แตกต่างกันสําหรับผู้อ่านแต่ละราย ทุกไคลเอ็นต์ฐานข้อมูล MySQL สําหรับการอ่าน binlog ควรมี ID ที่ไม่ซ้ํากัน ซึ่งเรียกว่า ID ของเซิร์ฟเวอร์ MySQL Server ใช้ ID นี้เพื่อรักษาการเชื่อมต่อเครือข่ายและตําแหน่ง binlog งานอื่นที่ใช้รหัสเซิร์ฟเวอร์เดียวกันอาจส่งผลให้อ่านจากตําแหน่ง binlog ไม่ถูกต้องได้ ดังนั้น ขอแนะนําให้ตั้งค่า ID เซิร์ฟเวอร์ที่แตกต่างกันสําหรับโปรแกรมอ่านแต่ละตัว

  4. คุณสามารถขยาย การตั้งค่าขั้นสูง เพื่อเข้าถึงตัวเลือกการกําหนดค่าเพิ่มเติมสําหรับแหล่งที่มา CDC ของฐานข้อมูล MySQL:

    • โหมดการล็อกสแนปช็อต: ตัวเลือกคือ:
      • Minimal (default): ระงับการล็อกการอ่านส่วนกลางเฉพาะในช่วงเริ่มต้นเพื่อบันทึกสคีมาและข้อมูลเมตา ส่วนที่เหลือของสแนปช็อตใช้ทรานแซคชัน REPEATABLE READ ซึ่งทําให้สามารถอัปเดตขณะอ่านข้อมูลได้
      • Extended: รักษาการล็อกการอ่านส่วนกลางตลอดระยะเวลาสแนปช็อต โดยบล็อกการเขียนทั้งหมด ใช้เพื่อความสอดคล้องอย่างเต็มที่หากการบล็อกการเขียนเป็นที่ยอมรับได้
      • None: ข้ามการรับการล็อกตารางระหว่างสแนปช็อต ปลอดภัยเฉพาะเมื่อไม่มีการเปลี่ยนแปลง Schema เกิดขึ้นระหว่างกระบวนการ
    • โหมดการจัดการทศนิยม: ระบุวิธีที่ตัวเชื่อมต่อจัดการ DECIMAL และ NUMERIC ค่าคอลัมน์:
      • Precise: แสดงค่าโดยใช้ประเภททศนิยมที่แน่นอน (เช่น Java BigDecimal) เพื่อให้มั่นใจถึงความแม่นยําและความถูกต้องอย่างเต็มที่ในการแสดงข้อมูล
      • Double: แปลงค่าเป็นจํานวนจุดทศนิยมลอยตัวที่มีความแม่นยําสองเท่า ตัวเลือกนี้ช่วยปรับปรุงการใช้งานและประสิทธิภาพ แต่อาจส่งผลให้สูญเสียความแม่นยํา
      • String: เข้ารหัสค่าเป็นสตริงที่จัดรูปแบบ ตัวเลือกนี้ทําให้ง่ายต่อการใช้ในระบบดาวน์สตรีม แต่สูญเสียข้อมูลความหมายเกี่ยวกับประเภทตัวเลขดั้งเดิม
    • โหมดสแนปช็อต: ระบุเกณฑ์สําหรับการดําเนินการสแนปช็อตเมื่อตัวเชื่อมต่อเริ่มทํางาน:
      • Initial: ตัวเชื่อมต่อจะเรียกใช้สแนปช็อตเฉพาะเมื่อไม่มีการบันทึกออฟเซ็ตสําหรับชื่อเซิร์ฟเวอร์เชิงตรรกะ หรือหากตรวจพบว่าสแนปช็อตก่อนหน้านี้ล้มเหลวในการทําให้เสร็จสมบูรณ์ หลังจากสแนปช็อตเสร็จสมบูรณ์ ตัวเชื่อมต่อจะเริ่มสตรีมเรกคอร์ดเหตุการณ์สําหรับการเปลี่ยนแปลงฐานข้อมูลในภายหลัง
      • InitialOnly: ตัวเชื่อมต่อจะเรียกใช้สแนปช็อตเฉพาะเมื่อไม่มีการบันทึกออฟเซ็ตสําหรับชื่อเซิร์ฟเวอร์เชิงตรรกะ หลังจากสแนปช็อตเสร็จสิ้น ขั้วต่อจะหยุดทํางาน จะไม่เปลี่ยนเป็นการสตรีมเพื่ออ่านเหตุการณ์การเปลี่ยนแปลงจากบิงล็อก
      • NoData: ตัวเชื่อมต่อเรียกใช้สแนปช็อตที่บันทึกเฉพาะ Schema แต่ไม่ใช่ข้อมูลตารางใดๆ ตั้งค่าตัวเลือกนี้ถ้าคุณไม่ต้องการสแนปช็อตข้อมูลที่สอดคล้องกัน แต่คุณต้องการเฉพาะการเปลี่ยนแปลงที่เกิดขึ้นตั้งแต่ตัวเชื่อมต่อเริ่มทํางาน

รายละเอียดสตรีมหรือแหล่งที่มา

  1. บนหน้า เชื่อมต่อ ให้ทําตามขั้นตอนใดขั้นตอนหนึ่งเหล่านี้โดยพิจารณาจากว่าคุณกําลังใช้ Eventstream หรือ Real-Time ฮับ

    • สตรีมเหตุการณ์:

      ในบานหน้าต่าง รายละเอียดแหล่งที่มา ทางด้านขวา ให้ทําตามขั้นตอนเหล่านี้:

      1. สําหรับ ชื่อแหล่งที่มา ให้เลือกปุ่ม ดินสอ เพื่อเปลี่ยนชื่อ

      2. โปรดสังเกตว่า ชื่อ Eventstream และ ชื่อสตรีม เป็นแบบอ่านอย่างเดียว

    • ฮับReal-Time:

      ในส่วน รายละเอียดสตรีม ทางด้านขวา ให้ทําตามขั้นตอนเหล่านี้:

      1. เลือกพื้นที่ทํางาน Fabric ที่คุณต้องการสร้างสตรีมเหตุการณ์

      2. สําหรับ ชื่อสตรีมเหตุการณ์ ให้เลือกปุ่ม ดินสอ และป้อนชื่อสําหรับสตรีมเหตุการณ์

      3. ค่า ชื่อสตรีม จะถูกสร้างขึ้นให้คุณโดยอัตโนมัติโดยการผนวก -stream ต่อท้ายชื่อของสตรีมเหตุการณ์ สตรีมนี้จะปรากฏบนหน้า สตรีมข้อมูลทั้งหมดของ ฮับแบบเรียลไทม์เมื่อตัวช่วยสร้างเสร็จสิ้น

  2. เลือก ถัดไป ที่ด้านล่างของหน้า กําหนดค่า

ตรวจสอบและเชื่อมต่อ

บนหน้าจอ ตรวจสอบ + เชื่อมต่อ ให้ตรวจสอบข้อมูลสรุป แล้วเลือก เพิ่ม (สตรีมเหตุการณ์) หรือ เชื่อมต่อ (ฮับReal-Time)

ดูเหตุการณ์ที่อัปเดตแล้ว

  1. คุณจะเห็นแหล่งข้อมูล MySQL DB (CDC) ที่เพิ่มลงในเหตุการณ์ของคุณใน โหมดแก้ไข

    ภาพหน้าจอของแหล่งที่มา MySQL DB CDC Azure ที่เพิ่มในโหมดแก้ไขโดยไฮไลต์ปุ่มเผยแพร่

  2. เลือก เผยแพร่ เพื่อเผยแพร่การเปลี่ยนแปลง และเริ่มต้นการสตรีมข้อมูล MySQL DB CDC ไปยังกระแสข้อมูล

    ภาพหน้าจอของแหล่งที่มา MySQL DB CDC Azure ที่เพิ่มในโหมด Live

ตัวเชื่อมต่ออื่นๆ: