หมายเหตุ
การเข้าถึงหน้านี้ต้องได้รับการอนุญาต คุณสามารถลอง ลงชื่อเข้าใช้หรือเปลี่ยนไดเรกทอรีได้
การเข้าถึงหน้านี้ต้องได้รับการอนุญาต คุณสามารถลองเปลี่ยนไดเรกทอรีได้
บทความนี้อธิบายวิธีการเพิ่ม MySQL Database Change Data Capture (CDC) เป็นแหล่งข้อมูลเหตุการณ์ใน Fabric Real-Time hub
ตัวเชื่อมต่อ Azure MySQL Database Change Data Capture (CDC) ช่วยให้คุณสามารถจับภาพสแนปช็อตของข้อมูลปัจจุบันในฐานข้อมูล Azure MySQL ได้ คุณระบุตารางที่จะตรวจสอบและรับการแจ้งเตือนเมื่อมีการเปลี่ยนแปลงระดับแถวต่อมาใดๆ กับตาราง เมื่อการเปลี่ยนแปลงถูกบันทึกไว้ในสตรีม คุณสามารถประมวลผลข้อมูล CDC นี้ในแบบเรียลไทม์ และส่งไปยังปลายทางอื่นภายใน Fabric เพื่อประมวลผลหรือวิเคราะห์เพิ่มเติม
ปัจจุบัน CDC ฐานข้อมูล MySQL ได้รับการสนับสนุนจากบริการต่อไปนี้ซึ่งฐานข้อมูลสามารถเข้าถึงได้แบบสาธารณะ:
- ฐานข้อมูล Azure สําหรับ MySQL
- Amazon RDS สําหรับ MySQL
- Amazon Aurora MySQL
- Google Cloud SQL สําหรับ MySQL (GCP)
คู่มือนี้ใช้ Azure Database สําหรับ MySQL CDC เป็นตัวอย่าง
เมื่อแหล่งข้อมูล CDC ของฐานข้อมูล MySQL ถูกเพิ่มลงในเหตุการณ์จะบันทึกการเปลี่ยนแปลงระดับแถวไปยังตารางที่ระบุ จากนั้นการเปลี่ยนแปลงเหล่านี้สามารถดําเนินการในแบบเรียลไทม์และส่งไปยังปลายทางที่แตกต่างกันสําหรับการวิเคราะห์เพิ่มเติม
Prerequisites
- เข้าถึงพื้นที่ทํางานในโหมดสิทธิ์การใช้งาน Fabric capacity (หรือ) โหมดสิทธิ์การใช้งานรุ่นทดลองใช้ที่มีสิทธิ์ผู้สนับสนุนหรือสูงกว่า
- เข้าถึงอินสแตนซ์ของฐานข้อมูล MySQL เช่น ฐานข้อมูลในฐานข้อมูล Azure สําหรับ MySQL - เซิร์ฟเวอร์แบบยืดหยุ่น
- ฐานข้อมูล MySQL ของคุณควรสามารถเข้าถึงได้แบบสาธารณะและไม่อยู่หลังไฟร์วอลล์หรือรักษาความปลอดภัยในเครือข่ายเสมือน ถ้าอยู่ในเครือข่ายที่มีการป้องกัน ให้เชื่อมต่อโดยใช้การแทรกเครือข่ายเสมือนของตัวเชื่อมต่อ Eventstream
- ถ้าคุณไม่มีเหตุการณ์สตรีม ให้สร้างเหตุการณ์สตรีม
ตั้งค่าฐานข้อมูล MySQL
ตัวเชื่อมต่อใช้ตัวเชื่อมต่อ Debezium MySQL เพื่อบันทึกการเปลี่ยนแปลงในฐานข้อมูล MySQL ของคุณ คุณต้องกําหนดผู้ใช้ MySQL พร้อมสิทธิ์ที่เหมาะสมในฐานข้อมูลทั้งหมดที่ตัวเชื่อมต่อการรับส่งข้อความสามารถบันทึกการเปลี่ยนแปลงได้ คุณสามารถใช้ ผู้ใช้ผู้ดูแลระบบ โดยตรงเพื่อเชื่อมต่อกับฐานข้อมูล ซึ่งโดยปกติจะมีสิทธิ์ที่เหมาะสม หรือคุณสามารถทําตามขั้นตอนเหล่านี้เพื่อสร้างผู้ใช้ใหม่:
Note
ผู้ใช้ใหม่หรือบัญชีผู้ดูแลระบบและรหัสผ่านที่เกี่ยวข้องจะถูกใช้เพื่อเชื่อมต่อกับฐานข้อมูลในภายหลังภายใน Eventstream
mysqlที่พร้อมท์คําสั่ง ให้สร้างผู้ใช้ MySQL:mysql> CREATE USER 'user'@'%' IDENTIFIED BY 'password';ให้สิทธิ์ที่จําเป็นแก่ผู้ใช้:
mysql> GRANT SELECT, SHOW DATABASES, REPLICATION REPLICA, REPLICATION CLIENT ON *.* TO 'user'@'%';Note
เมื่อการล็อกการอ่านส่วนกลางไม่พร้อมใช้งาน เช่นเดียวกับในตัวเลือกที่โฮสต์ เช่น Amazon Relational Database Service (RDS) หรือ Aurora ระบบจะใช้การล็อกระดับตารางเพื่อสร้างสแนปช็อตที่สอดคล้องกัน ในกรณีนี้ คุณจําเป็นต้องให้สิทธิ์
LOCK TABLESแก่ผู้ใช้ นอกจากนี้ เพื่อสนับสนุนFLUSHการดําเนินการในระหว่างสแนปช็อต คุณอาจต้องให้สิทธิ์RELOADหรือFLUSH_TABLESสิทธิ์การใช้งานด้วยดําเนินการสิทธิ์ของผู้ใช้ให้เสร็จสมบูรณ์:
mysql> FLUSH PRIVILEGES;
หากต้องการยืนยันว่าผู้ใช้หรือผู้ดูแลระบบมีสิทธิ์ที่จําเป็นให้เรียกใช้คําสั่งนี้หรือไม่จากนั้นควรแสดงสิทธิ์ที่จําเป็นในขั้นตอนที่ #2:
SHOW GRANTS FOR user;
สําหรับข้อมูลเพิ่มเติมเกี่ยวกับการให้สิทธิ์ที่จําเป็นแก่ผู้ใช้ โปรดดู ที่ ตัวเชื่อมต่อ Debezium สําหรับ MySQL: คู่มือ Debezium
เปิดใช้งาน binlog
คุณต้องเปิดใช้งานการบันทึกไบนารีสําหรับการจําลอง MySQL แฟ้มบันทึกไบนารีบันทึกการปรับปรุงทรานแซคชันสําหรับเครื่องมือการจําลองแบบเพื่อเผยแพร่การเปลี่ยนแปลง ส่วนนี้ใช้ Azure Database สําหรับ MySQL CDC เป็นตัวอย่างเพื่อแสดงขั้นตอนการกําหนดค่า
บนหน้าพอร์ทัล Azure สําหรับฐานข้อมูล Azure ของคุณสําหรับบัญชี MySQL ให้เลือก พารามิเตอร์ เซิร์ฟเวอร์ภายใต้ การตั้งค่า ในการนําทางด้านซ้าย
บนหน้า พารามิเตอร์ของเซิร์ฟเวอร์ ให้กําหนดค่าคุณสมบัติต่อไปนี้ จากนั้นเลือก บันทึก
สําหรับ binlog_row_image ให้เลือก เต็ม
สําหรับ binlog_expire_logs_seconds ให้ตั้งค่าจํานวนวินาทีที่บริการรอก่อนที่ไฟล์บันทึกไบนารีจะถูกลบออก ตั้งค่าเพื่อให้ตรงกับความต้องการของสภาพแวดล้อมของคุณ ตัวอย่างเช่น 86400
หน้าแหล่งข้อมูล
ลงชื่อเข้าใช้ Microsoft Fabric
ถ้าคุณเห็น Power BI ที่ด้านล่างซ้ายของหน้า ให้สลับไปยังปริมาณงาน Fabric โดยเลือก Power BI แล้วเลือก Fabric
เลือก เรียลไทม์ บนแถบนําทางด้านซ้าย
หน้า ข้อมูลสตรีมมิง จะเปิดขึ้นตามค่าเริ่มต้น คลิกที่ปุ่มเพิ่มข้อมูลเพื่อไปที่หน้าเพิ่มข้อมูล
คุณยังสามารถไปที่หน้า เพิ่มข้อมูล ได้โดยตรงโดยเลือกตัวเลือก เพิ่มข้อมูล ในแถบนําทางด้านซ้าย
บนหน้า แหล่งข้อมูล ให้เลือกประเภท CDC ฐานข้อมูล ที่ด้านบน แล้วเลือก เชื่อมต่อ บนไทล์ การบันทึกข้อมูลการเปลี่ยนแปลง (CDC) ของฐานข้อมูล MySQL (DB)
ใช้คําแนะนําจากเพิ่ม Azure MySQL Database CDC เป็นส่วนแหล่งที่มา
เพิ่ม CDC ฐานข้อมูล Azure MySQL เป็นแหล่งข้อมูล
บนหน้าจอ เชื่อมต่อ ภายใต้ การเชื่อมต่อ ให้เลือก การเชื่อมต่อใหม่ เพื่อสร้างการเชื่อมต่อระบบคลาวด์
ป้อนการตั้งค่าการเชื่อมต่อและข้อมูลประจําตัวการเชื่อมต่อต่อไปนี้สําหรับฐานข้อมูล MySQL ของคุณ แล้วเลือก เชื่อมต่อ
Server: ที่อยู่เซิร์ฟเวอร์ของฐานข้อมูล MySQL ของคุณ ตัวอย่างเช่น my-mysql-server.mysql.database.azure.com
ฐานข้อมูล: ชื่อฐานข้อมูล ตัวอย่างเช่น my_database
ชื่อการเชื่อมต่อ: สร้างขึ้นโดยอัตโนมัติ หรือคุณสามารถป้อนชื่อใหม่สําหรับการเชื่อมต่อนี้
ชื่อผู้ใช้และรหัสผ่าน : ใส่ข้อมูลประจําตัวสําหรับฐานข้อมูล MySQL ของคุณ ตรวจสอบให้แน่ใจว่าคุณใส่บัญชีผู้ดูแลเซิร์ฟเวอร์หรือบัญชีผู้ใช้ที่สร้างขึ้นโดยมีสิทธิ์ที่จําเป็นที่มอบให้
ป้อนข้อมูลต่อไปนี้เพื่อกําหนดค่าแหล่งข้อมูล MySQL DB CDC จากนั้นเลือก ถัดไป
พอร์ต: ค่าเริ่มต้นคือ 3306 ถ้าการเชื่อมต่อระบบคลาวด์ที่คุณเลือกได้รับการกําหนดค่าใน จัดการการเชื่อมต่อและเกตเวย์ตรวจสอบให้แน่ใจว่าหมายเลขพอร์ตตรงกับชุดนั้น หากไม่ตรงกัน หมายเลขพอร์ตในการเชื่อมต่อระบบคลาวด์ใน จัดการการเชื่อมต่อและเกตเวย์ จะมีความสําคัญมากขึ้น
ตาราง: เลือกตารางทั้งหมดหรือป้อนชื่อตาราง หากคุณเลือกรายการหลัง ให้ระบุตารางโดยใช้รายการตัวระบุตารางที่คั่นด้วยเครื่องหมายจุลภาค (
databaseName.tableName) หรือนิพจน์ปกติที่ถูกต้อง เช่น:- ใช้
databaseName.test.*เพื่อเลือกตารางทั้งหมดที่มีชื่อเริ่มต้นด้วยdatabaseName.test - ใช้
databaseName\.(test1|test2)เพื่อเลือกdatabaseName.test1และdatabaseName.test2
คุณสามารถผสมรูปแบบทั้งสองได้โดยใช้เครื่องหมายจุลภาค ขีดจํากัดอักขระทั้งหมดสําหรับรายการทั้งหมดคือ 102,400 อักขระ
- ใช้
ID เซิร์ฟเวอร์: ป้อนค่าที่ไม่ซ้ํากันสําหรับแต่ละเซิร์ฟเวอร์และไคลเอ็นต์การจําลองแบบในคลัสเตอร์ MySQL ค่าเริ่มต้นคือ 1000
Note
ตั้งค่า ID เซิร์ฟเวอร์ที่แตกต่างกันสําหรับผู้อ่านแต่ละราย ทุกไคลเอ็นต์ฐานข้อมูล MySQL สําหรับการอ่าน binlog ควรมี ID ที่ไม่ซ้ํากัน ซึ่งเรียกว่า ID ของเซิร์ฟเวอร์ MySQL Server ใช้ ID นี้เพื่อรักษาการเชื่อมต่อเครือข่ายและตําแหน่ง binlog งานอื่นที่ใช้รหัสเซิร์ฟเวอร์เดียวกันอาจส่งผลให้อ่านจากตําแหน่ง binlog ไม่ถูกต้องได้ ดังนั้น ขอแนะนําให้ตั้งค่า ID เซิร์ฟเวอร์ที่แตกต่างกันสําหรับโปรแกรมอ่านแต่ละตัว
คุณสามารถขยาย การตั้งค่าขั้นสูง เพื่อเข้าถึงตัวเลือกการกําหนดค่าเพิ่มเติมสําหรับแหล่งที่มา CDC ของฐานข้อมูล MySQL:
-
โหมดการล็อกสแนปช็อต: ตัวเลือกคือ:
-
Minimal (default): ระงับการล็อกการอ่านส่วนกลางเฉพาะในช่วงเริ่มต้นเพื่อบันทึกสคีมาและข้อมูลเมตา ส่วนที่เหลือของสแนปช็อตใช้ทรานแซคชัน REPEATABLE READ ซึ่งทําให้สามารถอัปเดตขณะอ่านข้อมูลได้ -
Extended: รักษาการล็อกการอ่านส่วนกลางตลอดระยะเวลาสแนปช็อต โดยบล็อกการเขียนทั้งหมด ใช้เพื่อความสอดคล้องอย่างเต็มที่หากการบล็อกการเขียนเป็นที่ยอมรับได้ -
None: ข้ามการรับการล็อกตารางระหว่างสแนปช็อต ปลอดภัยเฉพาะเมื่อไม่มีการเปลี่ยนแปลง Schema เกิดขึ้นระหว่างกระบวนการ
-
-
โหมดการจัดการทศนิยม: ระบุวิธีที่ตัวเชื่อมต่อจัดการ
DECIMALและNUMERICค่าคอลัมน์:-
Precise: แสดงค่าโดยใช้ชนิดทศนิยมที่แน่นอน (ตัวอย่างเช่น JavaBigDecimal) เพื่อให้แน่ใจว่ามีความแม่นยําและความแม่นยําเต็มในการแสดงข้อมูล -
Double: แปลงค่าเป็นจํานวนจุดทศนิยมลอยตัวที่มีความแม่นยําสองเท่า ตัวเลือกนี้ช่วยปรับปรุงการใช้งานและประสิทธิภาพ แต่อาจส่งผลให้สูญเสียความแม่นยํา -
String: เข้ารหัสค่าเป็นสตริงที่จัดรูปแบบ ตัวเลือกนี้ทําให้ง่ายต่อการใช้ในระบบดาวน์สตรีม แต่สูญเสียข้อมูลความหมายเกี่ยวกับประเภทตัวเลขดั้งเดิม
-
-
โหมดสแนปช็อต: ระบุเกณฑ์สําหรับการดําเนินการสแนปช็อตเมื่อตัวเชื่อมต่อเริ่มทํางาน:
-
Initial: ตัวเชื่อมต่อจะเรียกใช้สแนปช็อตเฉพาะเมื่อไม่มีการบันทึกออฟเซ็ตสําหรับชื่อเซิร์ฟเวอร์เชิงตรรกะ หรือหากตรวจพบว่าสแนปช็อตก่อนหน้านี้ล้มเหลวในการทําให้เสร็จสมบูรณ์ หลังจากสแนปช็อตเสร็จสมบูรณ์ ตัวเชื่อมต่อจะเริ่มสตรีมเรกคอร์ดเหตุการณ์สําหรับการเปลี่ยนแปลงฐานข้อมูลในภายหลัง -
InitialOnly: ตัวเชื่อมต่อจะเรียกใช้สแนปช็อตเฉพาะเมื่อไม่มีการบันทึกออฟเซ็ตสําหรับชื่อเซิร์ฟเวอร์เชิงตรรกะ หลังจากสแนปช็อตเสร็จสิ้น ขั้วต่อจะหยุดทํางาน จะไม่เปลี่ยนเป็นการสตรีมเพื่ออ่านเหตุการณ์การเปลี่ยนแปลงจากบิงล็อก -
NoData: ตัวเชื่อมต่อเรียกใช้สแนปช็อตที่บันทึกเฉพาะ Schema แต่ไม่ใช่ข้อมูลตารางใดๆ ตั้งค่าตัวเลือกนี้ถ้าคุณไม่ต้องการสแนปช็อตข้อมูลที่สอดคล้องกัน แต่คุณต้องการเฉพาะการเปลี่ยนแปลงที่เกิดขึ้นตั้งแต่ตัวเชื่อมต่อเริ่มทํางาน
-
-
โหมดการล็อกสแนปช็อต: ตัวเลือกคือ:
รายละเอียดสตรีมหรือแหล่งที่มา
บนหน้า เชื่อมต่อ ให้ทําตามขั้นตอนใดขั้นตอนหนึ่งเหล่านี้โดยพิจารณาจากว่าคุณกําลังใช้ Eventstream หรือ Real-Time ฮับ
สตรีมเหตุการณ์:
ในบานหน้าต่าง รายละเอียดแหล่งที่มา ทางด้านขวา ให้ทําตามขั้นตอนเหล่านี้:
สําหรับ ชื่อแหล่งที่มา ให้เลือกปุ่ม ดินสอ เพื่อเปลี่ยนชื่อ
โปรดสังเกตว่า ชื่อ Eventstream และ ชื่อสตรีม เป็นแบบอ่านอย่างเดียว
ฮับReal-Time:
ในส่วน รายละเอียดสตรีม ทางด้านขวา ให้ทําตามขั้นตอนเหล่านี้:
เลือก พื้นที่ทํางาน Fabric ที่คุณต้องการสร้างสตรีมเหตุการณ์
สําหรับ ชื่อสตรีมเหตุการณ์ ให้เลือกปุ่ม ดินสอ และป้อนชื่อสําหรับสตรีมเหตุการณ์
ค่า ชื่อสตรีม จะถูกสร้างขึ้นให้คุณโดยอัตโนมัติโดยการผนวก -stream ต่อท้ายชื่อของสตรีมเหตุการณ์ สตรีมนี้จะปรากฏบนหน้า สตรีมข้อมูลทั้งหมดของ ฮับแบบเรียลไทม์เมื่อตัวช่วยสร้างเสร็จสิ้น
เลือก ถัดไป ที่ด้านล่างของหน้า กําหนดค่า
ตรวจสอบและเชื่อมต่อ
บนหน้าจอ ตรวจสอบ + เชื่อมต่อ ให้ตรวจสอบข้อมูลสรุป แล้วเลือก เพิ่ม (สตรีมเหตุการณ์) หรือ เชื่อมต่อ (ฮับReal-Time)
ดูรายละเอียดสตรีมข้อมูล
บนหน้า ตรวจสอบ + เชื่อมต่อ ถ้าคุณเลือก เปิดเหตุการณ์สตรีม ตัวช่วยสร้างจะเปิดเหตุการณ์ที่สร้างขึ้นให้คุณด้วย Azure MySQL DB CDC ที่เลือกเป็นแหล่งข้อมูล เมื่อต้องการปิดตัวช่วยสร้าง ให้เลือก เสร็จสิ้น หรือ X* ที่มุมบนขวาของหน้า
คุณควรเห็นสตรีมในส่วนข้อมูลการสตรีมล่าสุดของโฮมเพจฮับReal-Time สําหรับขั้นตอนโดยละเอียด ดูรายละเอียดของสตรีมข้อมูลใน Fabric Real-Time hub
.
เนื้อหาที่เกี่ยวข้อง
หากต้องการเรียนรู้เกี่ยวกับการใช้สตรีมข้อมูล โปรดดูบทความต่อไปนี้: