AI SREClickHouse Workshops

03 Managed Postgres CDC

บันทึกสำหรับผู้สอนของโมดูล 03 — เวลา, แนวการบรรยาย, ปัญหาที่พบบ่อย และขั้นตอนรีเซ็ต

Your computer
macOS terminal: Run workshop commands in Terminal using zsh or bash.

คู่มือประกอบของผู้ดำเนินเวิร์กช็อปสำหรับบทเรียนผู้เรียน 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>

ในหน้านี้

TH