03 Managed Postgres CDC
บันทึกสำหรับผู้สอนของโมดูล 03 — เวลา, แนวการบรรยาย, ปัญหาที่พบบ่อย และขั้นตอนรีเซ็ต
คู่มือประกอบของผู้ดำเนินเวิร์กช็อปสำหรับบทเรียนผู้เรียน 03 Managed Postgres CDC
เวลา
ประมาณ 20 นาที instance ของ managed Postgres จะรับการเชื่อมต่อได้ภายในประมาณหนึ่งนาที
หลังจาก clickhousectl cloud postgres create ดังนั้นผู้เข้าร่วมสามารถ provision และกรอก
env ของตนได้ขณะที่คุณบรรยายเรื่อง CDC ตัว ClickPipe มักใช้เวลาสองสามนาทีในการ snapshot และเริ่ม
stream แต่การตรวจสอบพบว่าการ provision เกิน 10 นาที เริ่มมันไว้ก่อนและใช้
เช็กการยกระดับปัญหาในคู่มือแก้ปัญหาของผู้เรียน แทนที่จะสัญญาเวลาเสร็จ
ที่แน่นอน
แนวการบรรยาย
- ผู้เข้าร่วมแต่ละคนสร้าง Postgres ของ ตนเอง ที่จัดการโดย ClickHouse ใน trial org ของตน —
ไม่มี instance ที่ใช้ร่วมกันบนเส้นทางหลัก ผู้เข้าร่วมหนึ่งคนต้องใช้ replication slot เพียงหนึ่งช่อง
และ managed instance ทุกตัวมาพร้อม
wal_level=logicalและ 10 slot โดย ค่าเริ่มต้น ดังนั้นเงื่อนไข "เพิ่ม max_replication_slots" ไม่ได้เกี่ยวกับพวกเขาเลย - Postgres และ ClickPipe ของเขาอยู่ใน org เดียวกันและถูกสร้างด้วย
clickhousectlทั้งคู่ ไม่ต้องแยกไปใช้ wizard ใน console - อธิบาย CDC ในระดับภาพรวม (อ่านจาก write-ahead log) และเหตุใดตาราง destination จึงมี
คอลัมน์บัญชีภายใน
_peerdb_*โดย MV จะกรอง_peerdb_is_deleted = 0 - ชี้ให้เห็นว่า log ของตัว generator เองคือสัญญาณความพร้อม — แอปคือตัวตรวจ
พวกเขาไม่ต้อง poll status API ใด ๆ (คำสั่ง beta
postgres get/listอาจคืนค่าว่างหรือ FORBIDDEN แม้ instance จะ healthy)
ปัญหาที่พบบ่อย
- ทำรหัสผ่านครั้งเดียวหาย มันแสดงเพียงครั้งเดียวโดย
createให้รีเซ็ตด้วย:clickhousectl cloud postgres reset-password <service-id>แล้วอัปเดต.env.workshopและรีสตาร์ต generator - generator log ขึ้น error การเชื่อมต่อในช่วงแรก instance ยัง provision อยู่ container จะออกและรีสตาร์ตเองโดยอัตโนมัติ จึงหายเองภายในประมาณหนึ่งนาที ให้ ตรวจสอบเฉพาะเมื่อ error ยังคงอยู่เกินสองสามนาที
- ClickPipe เชื่อมต่อไม่ได้ ปกติเป็น host หรือรหัสผ่านผิด หรือไม่ได้ตั้ง
PGSSLMODEเป็นrequire(managed Postgres บังคับใช้ TLS) - region ไม่ตรงกัน Postgres-ถึง-ClickHouse ข้าม region ใช้งานได้แต่เพิ่ม latency ให้ชี้นำ ผู้เข้าร่วมสร้าง Postgres ใน region เดียวกับ ClickHouse service ของตน
- ยังไม่ได้เริ่ม data generator จึงดูเหมือนไม่มีอะไรขยับ — ตรวจว่า
pg-trip-writerทำงานอยู่และ log แสดงinserted N trips - การสร้าง pipe ล้มเหลวด้วย
BAD_REQUEST: table realtime_trips exists and is not emptyเกิดเฉพาะเมื่อ รันซ้ำ/รีเซ็ต ไม่ใช่กับผู้เข้าร่วมที่เริ่มใหม่สด ๆ: การลบ ClickPipe จะทิ้ง replication slot ต้นทางแต่ทิ้งตาราง destination ไว้ และ CLI จะไม่ยอม ใช้ตารางที่ไม่ว่างซ้ำ ให้ใช้ขั้นตอนสำรองข้อมูลแบบใส่ timestamp ในคู่มือแก้ปัญหา ของผู้เรียน แล้วสร้าง pipe ใหม่ อย่าทิ้งข้อมูลของผู้เข้าร่วมเป็นค่า เริ่มต้น - managed Postgres ใช้ไม่ได้ใน org นั้น (ความพร้อมใช้ระดับ beta แตกต่างกันไป) — นี่เป็นกรณีเดียว ที่ต้องถอยไปใช้ pool ร่วมของผู้สอน ดูด้านล่าง
ทางสำรอง: cloud Postgres ที่ผู้สอนจัดการ
ถ้า org ของผู้เข้าร่วมไม่สามารถสร้าง managed Postgres ได้ ให้ส่งใบข้อมูลการเชื่อมต่อ managed cloud ให้เขา
Pool บนคลาวด์ (พร้อมข้อควรระวังเรื่อง slot/sender ที่มากับมันเมื่อมีผู้เข้าร่วม 30 คนขึ้นไป) ถูก
provision และบันทึกไว้ใน infra/README.md บนเส้นทางที่ใช้ร่วมกัน ตารางและ
publication ถูกสร้างไว้ล่วงหน้า ดังนั้น log ของ generator จะแสดง publication ... already exists
แทนที่จะสร้างใหม่ — นั่นเป็นเรื่องปกติ ไม่ใช่ error
ขั้นตอนรีเซ็ต
- ลบแล้วสร้าง ClickPipe ใหม่ด้วยคำสั่งในโมดูล 03 ของผู้เรียน
- รีสตาร์ต data generator:
docker compose --profile cdc --env-file .env.workshop -f docker-compose.workshop.yml up -d pg-trip-writer(ปิดมันด้วย--scale pg-trip-writer=0) - รีเซ็ตรหัสผ่าน Postgres ที่หายไปด้วย
clickhousectl cloud postgres reset-password - หลังจบงาน ผู้เข้าร่วมลบ ClickPipe ของตน (โมดูล 09) ส่วน managed Postgres ของผู้เข้าร่วม
เป็นของเขาที่จะลบเองจาก console หรือด้วย
clickhousectl cloud postgres delete <service-id>