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
--resumeterhadap watermarkmax(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 runpertama di Step 2 gagal denganCould not find profile named 'nyc_taxi_ch'. Tidak ada bagian lab yang membuat profil dbt ClickHousenyc_taxi_chsecara otomatis, meskipundbt_project.ymlmembutuhkannya. Pelajaran learner 03 Provisioning dan migrasi membahas ini: bagian "Configure the dbt profile" pada Step 2 menuntun partner menggabungkan bloknyc_taxi_ch:ke dalam~/.dbt/profiles.ymlyang sudah ada sebelumdbt runini 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. VerifikasiCLICKHOUSE_TOKEN_KEYdanCLICKHOUSE_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 padamax(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_PASSWORDdanecho $CLICKHOUSE_HOST $CLICKHOUSE_PASSWORD), lalusource .env && source .clickhouse_statedan coba lagi. dbt rungagal denganConnection refusedatauUnknown host.CLICKHOUSE_HOSTtidak diset di shell saat ini —source .clickhouse_statedariworkshop_public/snowflake_migration_lab/03-migrate-to-clickhouse/lalu coba lagi.
Langkah reset
- Skrip migrasi terputus:
python scripts/02_migrate_trips.py --resumemelanjutkan dari watermark alih-alih memulai ulang seluruh transfer 50M baris. - Layanan ClickHouse Cloud perlu dibangun ulang secara bersih:
source .env && ./teardown.shdariworkshop_public/snowflake_migration_lab/03-migrate-to-clickhouse/(menghancurkan layanan dan container producer ClickHouse jika cutover sudah terjadi), lalu./setup.shlagi. Ini tidak menyentuh sisi Snowflake modul 01 — sisi itu punyateardown.shsendiri diworkshop_public/snowflake_migration_lab/01-setup-snowflake/. - Reset penuh mahal di sini: migrasi baru membayar lagi seluruh transfer 40-50 menit.
Utamakan
--resumeatau perbaikan yang tepat sasaran daripada teardown penuh selama layanan ClickHouse itu sendiri masih sehat.
02 Rencana dan desain
Panduan fasilitator untuk modul perencanaan — mengapa melewatinya merusak semua yang menyusul, dan cara menjaga blok worksheet 90 menit tetap sesuai jadwal.
04 Bangun ulang pipeline dbt
Panduan fasilitator untuk membangun ulang pipeline dbt di ClickHouse — mengapa tabel agregat yang kosong bukan bug.