All Products
Search
Document Center

ApsaraDB for ClickHouse:Migrasi data antar kluster ClickHouse yang kompatibel dengan komunitas

Last Updated:Jul 30, 2026

Saat berencana mengganti versi kluster Alibaba Cloud ClickHouse edisi kompatibel komunitas, Anda dapat menggunakan fitur migrasi instans di Konsol Alibaba Cloud ClickHouse untuk melakukan migrasi data. Fitur ini mendukung migrasi data penuh maupun inkremental guna memastikan integritas data.

Prasyarat

  • Kluster sumber dan tujuan harus memenuhi persyaratan berikut:

    • Keduanya merupakan kluster edisi kompatibel komunitas.

      Catatan

      Jika Anda perlu melakukan migrasi dari kluster edisi kompatibel komunitas ke kluster edisi enterprise, atau sebaliknya, lihat Migrasi kluster ClickHouse edisi kompatibel komunitas ke kluster edisi enterprise.

    • Kedua kluster berada dalam status Running.

    • Anda memiliki akun database dan kata sandi untuk masing-masing kluster.

    • Kedua kluster memiliki kebijakan penyimpanan bertingkat yang sama untuk data hot dan cold.

    • Kedua kluster menggunakan VPC yang sama, berada di wilayah yang sama, dan alamat IP-nya saling terdaftar dalam daftar putih satu sama lain. Jika kondisi ini tidak terpenuhi, Anda harus menyelesaikan masalah konektivitas jaringan terlebih dahulu. Untuk informasi lebih lanjut, lihat Cara menyelesaikan masalah konektivitas jaringan antara kluster tujuan dan sumber data.

      Catatan

      Anda dapat melihat alamat IP instans Alibaba Cloud ClickHouse dengan menjalankan perintah SELECT * FROM system.clusters;. Untuk informasi tentang cara mengonfigurasi daftar putih, lihat Konfigurasi daftar putih.

  • Kluster tujuan juga harus memenuhi persyaratan berikut:

    • Versinya lebih baru dari atau sama dengan versi kluster sumber. Untuk informasi tentang versi terbaru, lihat Edisi kompatibel komunitas.

    • Ruang disk yang tersedia (tidak termasuk cold storage) minimal 1,2 kali ruang disk yang digunakan (tidak termasuk cold storage) pada kluster sumber.

  • Setiap tabel lokal di kluster sumber harus memiliki satu tabel terdistribusi yang unik.

Catatan penggunaan

  • Kecepatan migrasi: Biasanya, kecepatan migrasi untuk satu node di kluster tujuan lebih besar dari 20 MB/s. Jika kecepatan penulisan data untuk satu node di kluster sumber juga lebih besar dari 20 MB/s, Anda harus mengevaluasi apakah kecepatan migrasi kluster tujuan mampu mengimbangi kecepatan penulisan kluster sumber. Jika tidak, migrasi mungkin tidak pernah selesai.

  • Selama migrasi, kluster tujuan menghentikan sementara operasi merge, tetapi kluster sumber tidak.

  • Konten migrasi:

    • Konten migrasi yang didukung mencakup kluster, database, tabel, kamus data, tampilan yang di-materialisasi, izin pengguna, dan konfigurasi kluster.

      • Hanya kamus data yang dibuat menggunakan Pernyataan SQL yang dimigrasikan. Kamus data yang dibuat menggunakan file XML tidak didukung.

        Untuk memeriksa, jalankan perintah berikut: SELECT * FROM system.dictionaries WHERE (database = '') OR isNull(database);. Jika ada hasil yang dikembalikan, berarti terdapat kamus data yang dibuat menggunakan file XML.

      • Jika kamus data mengakses layanan eksternal, pastikan layanan tersebut tersedia dan daftar putihnya dikonfigurasi untuk mengizinkan akses dari kluster. Jika sumber data untuk kamus data adalah tabel internal dari instans Alibaba Cloud ClickHouse saat ini dan parameter HOST diatur ke alamat IP, kamus tersebut mungkin gagal berfungsi setelah migrasi karena alamat IP berubah. Dalam hal ini, Anda harus mengonfirmasi HOST baru dari instans Alibaba Cloud ClickHouse dan membuat ulang kamus data secara manual.

    • Tabel yang menggunakan engine Kafka atau RabbitMQ tidak dimigrasikan.

    • Penting

      Untuk mencegah data terpecah antara kluster sumber dan tujuan, hapus tabel engine Kafka dan RabbitMQ dari kluster sumber sebelum membuatnya di kluster tujuan. Atau, gunakan kelompok konsumen yang berbeda.

      Untuk tabel non-MergeTree, seperti tabel eksternal dan tabel Log, hanya skema tabel yang dimigrasikan.

      Catatan

      Jika kluster sumber berisi tabel non-MergeTree, tabel-tabel tersebut di kluster tujuan hanya akan berisi skema tanpa data bisnis setelah migrasi. Untuk memigrasikan data bisnis untuk tabel-tabel ini, gunakan fungsi remote. Untuk informasi lebih lanjut, lihat Migrasi data menggunakan fungsi remote.

  • Volume data:

    • Data dingin: Migrasi data dingin relatif lambat. Kami menyarankan Anda membersihkan data dingin yang tidak diperlukan dari kluster sumber agar ukuran totalnya tidak melebihi 1 TB. Jika tidak, migrasi yang berlangsung lama berisiko gagal.

    • Data hot: Jika ukuran total data hot melebihi 10 TB, tugas migrasi kemungkinan besar akan gagal. Kami tidak menyarankan menggunakan metode migrasi ini dalam skenario tersebut.

  • Jika data Anda tidak memenuhi kondisi ini, pertimbangkan untuk melakukan migrasi manual.

Dampak terhadap kluster

  • Kluster sumber: Selama migrasi, Anda dapat membaca dan menulis data ke kluster sumber. Namun, operasi DDL seperti membuat, menghapus, atau memodifikasi metadata database dan tabel tidak didukung.

    Penting
    • Untuk memastikan migrasi selesai, penulisan data ke kluster sumber akan dihentikan secara otomatis dalam jendela penghentian penulisan yang telah dikonfigurasi ketika perkiraan waktu tersisa kurang dari atau sama dengan 10 menit.

    • Penulisan data ke kluster sumber akan dilanjutkan secara otomatis setelah semua data dimigrasikan dalam jendela penghentian penulisan, atau ketika jendela waktu berakhir, meskipun migrasi belum selesai.

  • Kluster tujuan: Setelah migrasi selesai, kluster tujuan akan melakukan operasi merge secara intensif selama periode tertentu. Hal ini meningkatkan utilisasi I/O dan dapat menyebabkan latensi lebih tinggi pada permintaan bisnis Anda. Kami menyarankan Anda merencanakan potensi dampak dari peningkatan latensi ini. Hitung sendiri durasi merge. Untuk informasi lebih lanjut, lihat Hitung durasi merge setelah migrasi.

Prosedur

Penting

Lakukan operasi berikut pada kluster tujuan, bukan kluster sumber.

Langkah 1: Catat dan bersihkan tabel engine Kafka/RabbitMQ

Catatan

Jika kluster sumber tidak berisi tabel engine Kafka/RabbitMQ, lewati Langkah 1, 5, 6, dan 7, lalu mulai dari Langkah 2.

Sebelum memulai migrasi, catat definisi semua tabel engine Kafka/RabbitMQ beserta tampilan materialisasi downstream-nya di kluster sumber, tangani tabel implisit, lalu hapus tabel-tabel tersebut untuk menghindari error migrasi.

  1. Login ke kluster sumber dan kueri semua tabel engine Kafka dan RabbitMQ beserta dependensinya.

    /*
    create_table_query: definisi tabel
    dependencies_database: database dari tabel yang bergantung pada tabel ini
    dependencies_table: tabel yang bergantung pada tabel ini
    Dari dependencies_database dan dependencies_table, Anda dapat mengidentifikasi tampilan materialisasi yang bergantung pada tabel Kafka/RabbitMQ
    */
    SELECT * FROM system.tables WHERE engine IN ('RabbitMQ', 'Kafka');
  2. Lihat definisi tampilan materialisasi untuk memeriksa apakah tabel targetnya merupakan tabel implisit.

    /*
    Lihat definisi tampilan materialisasi.
    Jika tabel target tampilan materialisasi adalah tabel implisit, beri perhatian khusus:
    Menghapus tampilan materialisasi juga akan menghapus tabel implisit, menyebabkan kehilangan data.
    Contoh: Jika CREATE MATERIALIZED VIEW [db.]table_name [TO[db.]name] tidak menentukan TO,
    sistem secara otomatis membuat tabel implisit, mungkin dalam format '.inner_id.<TABLE_UUID>' atau '.inner.<TABLE>'
    */
    SELECT * FROM system.tables WHERE database='<DATABASE>' AND name = '<MATERIALIZED_VIEW_NAME>';
  3. Jika tabel target tampilan materialisasi adalah tabel implisit, RENAME tabel target tersebut ke nama baru untuk mencegah kehilangan data saat tampilan materialisasi di-drop nanti.

    -- Rename tabel target implisit ke nama baru untuk melindungi data
    RENAME TABLE <DATABASE>.`.inner_id.<TABLE_UUID>` TO <DATABASE>.<new_target_table_name>;
  4. Hapus tabel engine Kafka/RabbitMQ dan tampilan materialisasi downstream-nya.

    -- Drop tampilan materialisasi terlebih dahulu
    DROP TABLE <DATABASE>.<MATERIALIZED_VIEW_NAME>;
    -- Lalu drop tabel engine Kafka/RabbitMQ
    DROP TABLE <DATABASE>.<KAFKA_OR_RABBITMQ_TABLE_NAME>;
Penting

Pastikan untuk menyimpan semua Pernyataan DDL yang telah dicatat. Anda akan membutuhkannya untuk membangun kembali tabel-tabel ini di kedua kluster (sumber dan tujuan) nanti. Jika Anda melakukan operasi RENAME, gunakan klausa TO yang mengarah ke tabel target yang telah di-rename saat membangun kembali tampilan materialisasi. Untuk informasi lebih lanjut, lihat CREATE MATERIALIZED VIEW.

Langkah 2: Buat tugas migrasi

  1. Login ke Konsol Alibaba Cloud ClickHouse.

  2. Pada halaman Clusters, klik tab Clusters of Community-compatible Edition, lalu klik ID kluster tujuan.

  3. Di panel navigasi kiri, klik Data Migration and Synchronization > Migration from ClickHouse.

  4. Klik Create Migration Task.

    1. Konfigurasi instans sumber dan tujuan.

      Konfigurasikan informasi yang diperlukan lalu klik Test Connectivity and Proceed.

      Catatan

      Jika pengujian koneksi berhasil, lanjutkan ke langkah berikutnya. Jika gagal, konfigurasi ulang instans sumber dan tujuan sesuai petunjuk.

      • Source Instance: Pilih source access method (seperti Express Connect/VPN Gateway/Smart Access Gateway/ECS-hosted ClickHouse), lalu tentukan Instance Region, Cluster Name, Source Cluster Name, VPC IP Address, Database Account, dan Database Password.

      • Destination Instance: Tentukan Instance Region, Instance ID, Database Account, dan Database Password.

    2. Konfirmasi konten migrasi.

      Tinjau konten migrasi, lalu klik Next: Pre-detect and Start Synchronization.

    3. Sistem menjalankan pemeriksaan awal dan memulai tugas.

      Sistem melakukan Instance Status Detection, Storage Space Detection, dan Local Table and Distributed Table Detection pada instans sumber dan tujuan.

      • Jika pemeriksaan awal berhasil:

        1. Tinjau dampak terhadap instans selama migrasi.

        2. Tetapkan Time of Stopping Data Writing.

          Catatan
          • Penulisan ke kluster sumber harus dihentikan selama 10 menit terakhir migrasi untuk memastikan konsistensi data.

          • Untuk memastikan tingkat keberhasilan tinggi, kami menyarankan Anda menetapkan durasi penghentian penulisan minimal 30 menit.

          • Tugas migrasi harus diselesaikan dalam waktu lima hari sejak dibuat. Oleh karena itu, tanggal akhir untuk Time of Stopping Data Writing harus paling lambat tanggal saat ini + 5 hari.

          • Untuk meminimalkan dampak terhadap bisnis Anda, kami menyarankan Anda menetapkan jendela penghentian penulisan pada jam sepi Anda.

        3. Klik Completed.

          Catatan

          Setelah mengklik tombol ini, tugas dibuat dan dimulai.

      • Jika pemeriksaan awal gagal, ikuti petunjuk untuk menyelesaikan masalah dan coba lagi migrasi data. Tabel berikut menjelaskan item pemeriksaan awal dan persyaratannya.

        Item pemeriksaan

        Persyaratan

        Instance Status Detection

        Pastikan tidak ada tugas management seperti scaling atau perubahan konfigurasi yang sedang berjalan di kluster sumber atau tujuan. Anda tidak dapat memulai migrasi jika ada tugas yang sedang berlangsung.

        Storage Space Detection

        Ruang storage space yang tersedia di kluster tujuan harus minimal 1,2 kali ruang storage space yang digunakan di kluster sumber.

        Local Table and Distributed Table Detection

        Pemeriksaan gagal jika tabel lokal di kluster sumber tidak memiliki tabel terdistribusi yang sesuai atau jika tabel terdistribusinya tidak unik. Anda harus menghapus tabel terdistribusi tambahan atau membuat satu tabel terdistribusi unik untuk setiap tabel lokal.

Langkah 3: Evaluasi penyelesaian migrasi

Jika kecepatan penulisan kluster sumber kurang dari 20 MB/s, Anda dapat melewati langkah ini.

Jika kecepatan penulisan kluster sumber lebih dari 20 MB/s, Anda harus memeriksa kecepatan penulisan aktual kluster tujuan untuk menilai apakah migrasi dapat selesai. Kecepatan penulisan kluster tujuan harus mampu mengimbangi kluster sumber. Untuk melakukannya, ikuti langkah-langkah berikut:

  1. Periksa throughput disk kluster tujuan untuk menentukan kecepatan penulisan aktualnya. Untuk informasi lebih lanjut, lihat Lihat informasi pemantauan kluster.

  2. Bandingkan kecepatan penulisan kluster tujuan dan sumber.

    1. Jika kecepatan penulisan kluster tujuan lebih besar dari kluster sumber, migrasi sangat mungkin berhasil. Lanjutkan ke Langkah 4.

    2. Jika kecepatan penulisan kluster tujuan lebih kecil dari kluster sumber, migrasi sangat mungkin gagal. Kami menyarankan Anda membatalkan tugas migrasi dan melakukan migrasi manual.

Langkah 4: Lihat tugas migrasi

  1. Pada halaman Clusters, klik tab Clusters of Community-compatible Edition, lalu klik ID kluster tujuan.

  2. Di panel navigasi kiri, klik Data Migration and Synchronization > Migration from ClickHouse.

    Pada halaman daftar migrasi instans, lihat Migration Status, Running Information, dan Data Write-Stop Window untuk tugas tersebut.

    Catatan

    Ketika perkiraan waktu tersisa pada kolom Running Information kurang dari atau sama dengan 10 menit dan Migration Status-nya Migrating, penghentian penulisan dipicu pada kluster sumber untuk memastikan konsistensi data. Aturannya sebagai berikut:

    • Jika waktu pemicu berada dalam jendela penghentian penulisan yang dikonfigurasi, penulisan ke kluster sumber dihentikan.

    • Jika waktu pemicu di luar jendela penghentian penulisan yang dikonfigurasi tetapi pada atau sebelum tanggal mulai tugas (yaitu tanggal pembuatan tugas) + 5 hari, Anda dapat mengubah jendela penghentian penulisan untuk melanjutkan migrasi.

    • Jika waktu pemicu di luar jendela penghentian penulisan yang dikonfigurasi dan setelah tanggal mulai tugas (yaitu tanggal pembuatan tugas) + 5 hari, migrasi gagal. Anda harus membatalkan tugas migrasi, membersihkan data yang telah dimigrasikan dari kluster tujuan, dan membuat tugas migrasi baru.

    Penting
    • Jika kluster sumber berisi tabel engine Kafka/RabbitMQ: ketika tugas migrasi memasuki fase migrasi data (yaitu migrasi skema tabel selesai), lakukan Langkah 5 untuk membangun kembali tabel engine Kafka/RabbitMQ di kluster sumber agar data inkremental kembali mengalir dan disinkronkan ke kluster tujuan.

    • Sesaat sebelum jendela penghentian penulisan yang dikonfigurasi, lakukan Langkah 6 untuk menghapus tabel engine Kafka/RabbitMQ dan tampilan materialisasi downstream-nya di kluster sumber guna mencegah penumpukan pesan selama periode penghentian penulisan yang dapat menyebabkan inkonsistensi data.

Langkah 5: Bangun kembali tabel engine Kafka/RabbitMQ di kluster sumber

Setelah tugas migrasi memasuki fase migrasi data (yaitu migrasi skema tabel selesai), gunakan Pernyataan DDL yang telah disimpan sebelumnya untuk membangun kembali tabel engine Kafka/RabbitMQ dan tampilan materialisasi downstream-nya di kluster sumber. Setelah dibangun kembali, data inkremental akan kembali mengalir dan secara otomatis disinkronkan ke kluster tujuan.

Penting

Jika Anda sebelumnya melakukan operasi RENAME pada tabel target implisit, gunakan klausa TO yang mengarah ke tabel target yang telah di-rename saat membangun kembali tampilan materialisasi. Untuk informasi lebih lanjut, lihat CREATE MATERIALIZED VIEW.

-- Bangun kembali tabel engine Kafka/RabbitMQ di kluster sumber
CREATE TABLE <database>.<kafka_or_rabbitmq_table_name> (...)
ENGINE = Kafka/RabbitMQ
SETTINGS ...;
-- Bangun kembali tampilan materialisasi (mengarah ke tabel target yang di-rename)
CREATE MATERIALIZED VIEW <database>.<materialized_view_name> TO <database>.<new_target_table_name>
AS SELECT ... FROM <database>.<kafka_or_rabbitmq_table_name>;

Langkah 6: Hapus tabel engine Kafka/RabbitMQ di kluster sumber

Sesaat sebelum jendela penghentian penulisan yang dikonfigurasi, hapus tabel engine Kafka/RabbitMQ dan tampilan materialisasi downstream-nya di kluster sumber untuk menghentikan penulisan data inkremental dan memastikan konsistensi sinkronisasi data akhir.

-- Hapus tampilan materialisasi terlebih dahulu
DROP TABLE <database>.<materialized_view_name> ON CLUSTER default;

-- Lalu hapus tabel engine Kafka/RabbitMQ
DROP TABLE <database>.<kafka_or_rabbitmq_table_name> ON CLUSTER default;

Langkah 7: Bangun kembali tabel engine Kafka/RabbitMQ di kluster tujuan

Setelah tugas migrasi selesai, gunakan Pernyataan DDL yang telah disimpan sebelumnya untuk membangun kembali tabel engine Kafka/RabbitMQ dan tampilan materialisasi downstream-nya di kluster tujuan guna memulihkan pipeline konsumsi data inkremental.

Penting

Jika Anda sebelumnya melakukan operasi RENAME pada tabel target implisit, gunakan klausa TO yang mengarah ke tabel target yang telah di-rename saat membangun kembali tampilan materialisasi. Untuk informasi lebih lanjut, lihat CREATE MATERIALIZED VIEW.

-- Bangun kembali tabel engine Kafka/RabbitMQ di kluster tujuan
CREATE TABLE <database>.<kafka_or_rabbitmq_table_name> (...)
ENGINE = Kafka/RabbitMQ
SETTINGS ...;
-- Bangun kembali tampilan materialisasi
CREATE MATERIALIZED VIEW <database>.<materialized_view_name> TO <database>.<target_table_name>
AS SELECT ... FROM <database>.<kafka_or_rabbitmq_table_name>;

Langkah 8: (Opsional) Batalkan tugas migrasi

  1. Pada halaman Clusters, klik tab Clusters of Community-compatible Edition, lalu klik ID kluster tujuan.

  2. Di panel navigasi kiri, klik Data Migration and Synchronization > Migration from ClickHouse.

  3. Pada kolom Actions untuk tugas migrasi, klik Cancel Migration.

  4. Pada kotak dialog Cancel Migration, klik OK.

    Catatan
    • Setelah membatalkan migrasi, daftar tugas tidak langsung diperbarui. Segarkan halaman secara berkala untuk memeriksa status tugas.

    • Setelah tugas dibatalkan, Migration Status-nya berubah menjadi Completed.

    • Sebelum memulai migrasi baru, Anda harus membersihkan data yang telah dimigrasikan dari kluster tujuan untuk mencegah duplikasi data.

Langkah 9: (Opsional) Ubah jendela penghentian penulisan

  1. Pada halaman Clusters, klik tab Clusters of Community-compatible Edition, lalu klik ID kluster tujuan.

  2. Di panel navigasi kiri, klik Data Migration and Synchronization > Migration from ClickHouse.

  3. Pada kolom Actions untuk tugas migrasi, klik Modify Data Write-Stop Time Window.

  4. Pada kotak dialog Modify Data Write-Stop Time Window, pilih Time of Stopping Data Writing yang baru.

    Catatan

    Aturan untuk menetapkan Time of Stopping Data Writing sama dengan aturan saat membuat tugas migrasi.

  5. Klik OK.

Dokumentasi terkait

Untuk mempelajari cara memigrasikan data dari kluster ClickHouse self-managed ke Alibaba Cloud ClickHouse, lihat Migrasi data dari kluster ClickHouse self-managed ke kluster Alibaba Cloud ClickHouse edisi kompatibel komunitas.