Snowflake MigrationClickHouse Workshops

03 Provisioning dan migrasi

Panduan fasilitator untuk modul provisioning ClickHouse dan migrasi — transfer tanpa pengawasan 40 sampai 50 menit dan profil dbt yang hilang.

Pendamping fasilitator untuk pelajaran learner 03 Provisioning dan migrasi.

Waktu

Sekitar 60 menit total, dan bentuknya lebih penting daripada totalnya: kira-kira 10-15 menit kerja langsung (Step 1 memprovisi layanan ClickHouse Cloud lewat Terraform, sekitar 2-3 menit; Step 2 membuat trips_raw, melakukan seeding data referensi zona, dan menjalankan dbt run kosong pertama, beberapa menit lagi) diikuti 40-50 menit transfer data tanpa pengawasan (skrip migrasi Step 3, memindahkan 50 juta baris pada sekitar 20K baris/s).

Ini adalah satu fakta penjadwalan terpenting di seluruh workshop: begitu Step 3 dimulai, tidak ada yang bisa dikerjakan ruangan selama hampir satu jam. Mulai skripnya, lalu ambil istirahat di sini, atau gunakan waktu tunggu untuk materi alur pembicaraan modul 02 yang tidak sempat dibahas ruangan, atau Q&A langsung tentang keputusan migration-plan.md partner. Jangan jadwalkan istirahat di tempat lain dalam modul ini — jadwalkan di sini, dengan sengaja.

Alur pembicaraan

  • Alasan modul ini sendiri mengenai mengapa lab ini memindahkan data dengan skrip Python alih-alih konektor native: Snowflake bukan sumber ClickPipes yang didukung (Kafka, S3, Kinesis, dan CDC Postgres/MySQL didukung; Snowflake tidak), dan setiap alternatif (ekspor S3, Snowflake -> Kafka -> ClickHouse) menukar setup skala lab dengan infrastruktur yang tidak berkaitan dengan migrasinya sendiri — sebuah bucket S3, sebuah IAM role, sebuah cluster Kafka.
  • Nilai jual sebenarnya dari skrip Python, yang layak disebut eksplisit: tidak perlu akun AWS, mandiri (kedua paket baru berada di venv yang sama dengan dbt), bisa dilanjutkan lewat --resume terhadap watermark max(pickup_at), dan cukup transparan sehingga partner bisa membaca pemetaan kolomnya alih-alih mengeklik lewat wizard UI.
  • Sebutkan alternatif produksi secara jujur: melewati sekitar 500M baris, atau ketika biaya warehouse untuk full table scan menjadi penting, ekspor S3 adalah pilihan lebih baik — ekspor paralel, pemuatan paralel. Skrip Python tepat untuk skala lab, bukan rekomendasi universal.
  • Beri gambaran awal tentang selisih migrasi sekarang, meskipun modul 05 yang menutupnya: producer Snowflake terus menulis sepanjang Step 3 berjalan, sehingga ClickHouse tertinggal dari Snowflake sebesar kira-kira panjang transfernya. Selisih itu wajar di sini, dan itu justru yang dibangun untuk ditutup dan diukur oleh cutover modul 05 — katakan ini sebelum seseorang bertanya apakah waktu tunggu 40-50 menit itu "membuang" data.

Kegagalan umum

  • dbt run pertama di Step 2 gagal dengan Could not find profile named 'nyc_taxi_ch'. Tidak ada bagian lab yang membuat profil dbt ClickHouse nyc_taxi_ch secara otomatis, meskipun dbt_project.yml membutuhkannya. Pelajaran learner 03 Provisioning dan migrasi membahas ini: bagian "Configure the dbt profile" pada Step 2 menuntun partner menggabungkan blok nyc_taxi_ch: ke dalam ~/.dbt/profiles.yml yang sudah ada sebelum dbt run ini berjalan. Jika partner melewatkan atau salah menyalin langkah itu, arahkan mereka kembali ke sana alih-alih menjelaskan ulang solusinya di sini.
  • Autentikasi Terraform gagal dengan 401 Unauthorized. Verifikasi CLICKHOUSE_TOKEN_KEY dan CLICKHOUSE_TOKEN_SECRET — keduanya berada di UI ClickHouse Cloud di bawah Settings -> API keys dan harus memiliki scope Admin.
  • Skrip migrasi gagal di tengah jalan. Jalankan ulang dengan --resume; ia menandai watermark pada max(pickup_at) yang sudah ada di ClickHouse dan melewati baris yang sudah dimuat, sehingga memulai ulang tidak pernah menghasilkan pemuatan sebagian yang tak terselamatkan.
  • Skrip migrasi gagal terhubung sama sekali. Konfirmasi setiap variabel lingkungan Snowflake dan ClickHouse sudah diset (echo $SNOWFLAKE_ORG $SNOWFLAKE_ACCOUNT $SNOWFLAKE_USER $SNOWFLAKE_PASSWORD dan echo $CLICKHOUSE_HOST $CLICKHOUSE_PASSWORD), lalu source .env && source .clickhouse_state dan coba lagi.
  • dbt run gagal dengan Connection refused atau Unknown host. CLICKHOUSE_HOST tidak diset di shell saat ini — source .clickhouse_state dari workshop_public/snowflake_migration_lab/03-migrate-to-clickhouse/ lalu coba lagi.

Langkah reset

  • Skrip migrasi terputus: python scripts/02_migrate_trips.py --resume melanjutkan dari watermark alih-alih memulai ulang seluruh transfer 50M baris.
  • Layanan ClickHouse Cloud perlu dibangun ulang secara bersih: source .env && ./teardown.sh dari workshop_public/snowflake_migration_lab/03-migrate-to-clickhouse/ (menghancurkan layanan dan container producer ClickHouse jika cutover sudah terjadi), lalu ./setup.sh lagi. Ini tidak menyentuh sisi Snowflake modul 01 — sisi itu punya teardown.sh sendiri di workshop_public/snowflake_migration_lab/01-setup-snowflake/.
  • Reset penuh mahal di sini: migrasi baru membayar lagi seluruh transfer 40-50 menit. Utamakan --resume atau perbaikan yang tepat sasaran daripada teardown penuh selama layanan ClickHouse itu sendiri masih sehat.

Di halaman ini

ID