全部产品
Search
文档中心

ApsaraDB for ClickHouse:Migrasi kluster ClickHouse yang dikelola sendiri ke ApsaraDB for ClickHouse Enterprise Edition

更新时间:Jan 22, 2026

Topik ini menjelaskan cara migrasi kluster ClickHouse yang dikelola sendiri ke kluster ApsaraDB for ClickHouse Enterprise Edition menggunakan konsol atau metode manual.

Prasyarat

  • Kluster yang dikelola sendiri

    • Anda harus membuat akun database dan kata sandi. Akun tersebut harus memiliki izin baca pada database dan tabel serta izin untuk mengeksekusi perintah SYSTEM. Untuk migrasi tabel eksternal yang melibatkan akun dan kata sandi, akun tersebut juga harus memiliki izin displaySecretsInShowAndSelect.

    • Kluster harus menggunakan versi 22.10 atau lebih baru.

  • Kluster tujuan

    Anda telah membuat akun database dan kata sandi dengan izin tertinggi.

  • Konektivitas jaringan

    • Jika kluster yang dikelola sendiri dan kluster tujuan berada dalam VPC yang sama, Anda harus menambahkan alamat IP semua node di kluster tujuan dan blok CIDR IPv4 vSwitch-nya ke daftar putih kluster yang dikelola sendiri.

      • Untuk informasi selengkapnya tentang cara menambahkan alamat IP ke daftar putih di ApsaraDB for ClickHouse, lihat Konfigurasi daftar putih.

      • Untuk informasi selengkapnya tentang cara menambahkan alamat IP ke daftar putih kluster yang dikelola sendiri, lihat dokumentasi produk Anda.

      • Anda dapat menjalankan pernyataan SELECT * FROM system.clusters; untuk melihat alamat IP semua node di kluster ApsaraDB for ClickHouse.

    • Jika kluster yang dikelola sendiri dan kluster tujuan berada dalam VPC yang berbeda, atau jika kluster yang dikelola sendiri berada di pusat data on-premises atau di-host oleh penyedia cloud lain, Anda harus terlebih dahulu menyelesaikan masalah konektivitas jaringan. Untuk informasi selengkapnya, lihat Bagaimana cara mengaktifkan komunikasi jaringan antara kluster tujuan dan sumber data?.

      Catatan

      Dalam skenario ini, Anda dapat menggunakan pemetaan IP untuk menghindari konflik blok CIDR antar-VPC. Jika Anda menggunakan pemetaan IP, Anda harus menambahkan alamat IP yang dipetakan ke daftar putih kedua kluster.

Validasi migrasi

Sebelum memulai migrasi data, kami menyarankan Anda membuat lingkungan staging untuk menguji kompatibilitas bisnis, kinerja, dan proses migrasi. Lakukan migrasi data di lingkungan produksi hanya setelah validasi selesai. Langkah ini sangat penting karena membantu Anda mengidentifikasi dan menyelesaikan potensi masalah lebih awal, memastikan migrasi berjalan lancar, serta mencegah dampak yang tidak perlu pada lingkungan produksi Anda.

  1. Buat tugas migrasi untuk migrasi data.

  2. Analisis bottleneck kinerja dan tentukan apakah migrasi dapat diselesaikan.

  3. Tersedia dua metode untuk validasi kompatibilitas cloud:

    1. Validasi manual. Untuk informasi selengkapnya, lihat Analisis dan solusi kompatibilitas.

    2. Validasi konsol. Untuk informasi selengkapnya, lihat (Opsional) Periksa kompatibilitas SQL.

Pilih solusi

Solusi migrasi

Kelebihan

Kekurangan

Skenario

Migrasi konsol

Menyediakan operasi visual. Anda tidak perlu melakukan migrasi metadata secara manual.

Hanya mendukung migrasi penuh dan inkremental data dari seluruh kluster. Anda tidak dapat hanya memigrasikan database, tabel, atau data historis tertentu.

Migrasi data dari seluruh kluster.

Migrasi manual

Memungkinkan Anda mengontrol database dan tabel mana yang akan dimigrasikan.

Operasinya kompleks. Anda perlu melakukan migrasi metadata secara manual.

  • Migrasi data dari database dan tabel tertentu.

  • Data dingin pada satu node melebihi 1 TB.

  • Data panas pada satu node melebihi 10 TB.

  • Migrasi data dari seluruh kluster ketika kondisi untuk migrasi konsol tidak terpenuhi.

Prosedur

Migrasi konsol

Catatan

Selama migrasi

  • Operasi merge untuk database dan tabel yang sedang dimigrasikan dijeda di kluster tujuan. Operasi merge di kluster yang dikelola sendiri tidak dijeda.

    Catatan

    Jika migrasi data memakan waktu terlalu lama, metadata berlebih dapat menumpuk di kluster tujuan. Kami menyarankan agar tugas migrasi tidak berlangsung lebih dari 5 hari. Tugas akan secara otomatis dibatalkan jika berjalan lebih dari 5 hari.

  • Kluster tujuan harus menggunakan kluster `default`. Jika kluster yang dikelola sendiri menggunakan nama berbeda, definisi kluster di tabel terdistribusi akan secara otomatis dikonversi menjadi `default`.

Konten yang didukung

Catatan

Skema beberapa mesin database dan tabel ditransformasikan selama migrasi. Tabel berikut menyediakan informasi tentang mesin setelah migrasi.

  • Skema database: Tabel berikut mencantumkan mesin database yang didukung.

    Nama mesin

    Deskripsi transformasi mesin

    Atomic

    Diganti dengan database Replicated

    Replicated

    Tidak berubah

    Ordinary

    Diganti dengan database Replicated

  • Skema tabel: Tabel berikut mencantumkan mesin tabel yang didukung.

    Nama Mesin

    Deskripsi transformasi mesin

    MaterializedView

    Tidak berubah

    View

    GenerateRandom

    Buffer

    URL

    Null

    Merge

    SharedMergeTree

    SharedVersionedCollapsingMergeTree

    SharedSummingMergeTree

    SharedReplacingMergeTree

    SharedAggregatingMergeTree

    SharedCollapsingMergeTree

    SharedGraphiteMergeTree

    MergeTree

    Akan diganti dengan SharedMergeTree

    ReplicatedMergeTree

    VersionedCollapsingMergeTree

    Akan diganti dengan SharedVersionedCollapsingMergeTree

    ReplicatedVersionedCollapsingMergeTree

    SummingMergeTree

    Akan diganti dengan SharedSummingMergeTree

    ReplicatedSummingMergeTree

    ReplacingMergeTree

    Akan diganti dengan SharedReplacingMergeTree

    ReplicatedReplacingMergeTree

    AggregatingMergeTree

    Akan diganti dengan SharedAggregatingMergeTree

    ReplicatedAggregatingMergeTree

    ReplicatedCollapsingMergeTree

    Akan diganti dengan SharedCollapsingMergeTree

    CollapsingMergeTree

    GraphiteMergeTree

    Akan diganti dengan SharedGraphiteMergeTree

    ReplicatedGraphiteMergeTree

  • Data: Migrasi inkremental data dari tabel dalam keluarga MergeTree.

Penting
  • Skema database dan tabel yang tercantum dalam tabel di atas dapat dimigrasikan. Untuk skema database dan tabel lainnya, Anda harus menanganinya secara manual berdasarkan peringatan dan pesan error yang muncul selama migrasi.

  • Jika data Anda tidak memenuhi kondisi di atas, Anda harus melakukan migrasi manual.

Dampak pada kluster

  • Kluster yang dikelola sendiri

    • Penggunaan CPU dan memori kluster yang dikelola sendiri meningkat saat data dibaca darinya.

    • Operasi Data Definition Language (DDL) tidak diizinkan.

  • Kluster tujuan

    • Penggunaan CPU dan memori kluster tujuan meningkat saat data ditulis ke dalamnya.

    • Operasi DDL tidak diizinkan pada database dan tabel yang sedang dimigrasikan. Pembatasan ini tidak berlaku untuk database dan tabel yang tidak sedang dimigrasikan.

    • Operasi merge hanya dihentikan untuk database dan tabel yang sedang dimigrasikan.

    • Setelah migrasi selesai, kluster melakukan operasi merge secara intensif selama periode tertentu. Hal ini meningkatkan penggunaan I/O dan dapat menyebabkan peningkatan latensi permintaan bisnis. Kami menyarankan Anda menghitung waktu merge setelah migrasi dan merencanakan terlebih dahulu untuk menangani potensi dampak pada latensi permintaan bisnis.

Langkah 1: Periksa kluster yang dikelola sendiri dan aktifkan tabel sistem

Sebelum migrasi data, Anda harus memodifikasi file `config.xml` untuk mengaktifkan migrasi inkremental. Modifikasi ini bergantung pada apakah `system.part_log` dan `system.query_log` telah diaktifkan di kluster yang dikelola sendiri.

Jika system.part_log dan system.query_log belum diaktifkan

Jika Anda belum mengaktifkan system.part_log dan system.query_log, tambahkan konfigurasi berikut ke file config.xml.

system.part_log
<part_log>
    <database>system</database>
    <table>part_log</table>
    <partition_by>event_date</partition_by>
    <order_by>event_time</order_by>
    <ttl>event_date + INTERVAL 15 DAY DELETE</ttl>
    <flush_interval_milliseconds>7500</flush_interval_milliseconds>
</part_log>
system.query_log
<query_log>
    <database>system</database>
    <table>query_log</table>
    <partition_by>event_date</partition_by>
    <order_by>event_time</order_by>
    <ttl>event_date + INTERVAL 15 DAY DELETE</ttl>
    <flush_interval_milliseconds>7500</flush_interval_milliseconds>
</query_log>

system.part_log dan system.query_log telah diaktifkan

  1. Bandingkan konfigurasi system.part_log dan system.query_log di file config.xml dengan konten berikut. Jika ada ketidaksesuaian, modifikasi konfigurasinya agar sesuai. Jika tidak, migrasi dapat gagal atau berjalan lambat.

    system.part_log
    <part_log>
        <database>system</database>
        <table>part_log</table>
        <partition_by>event_date</partition_by>
        <order_by>event_time</order_by>
        <ttl>event_date + INTERVAL 15 DAY DELETE</ttl>
        <flush_interval_milliseconds>7500</flush_interval_milliseconds>
    </part_log>
    system.query_log
    <query_log>
        <database>system</database>
        <table>query_log</table>
        <partition_by>event_date</partition_by>
        <order_by>event_time</order_by>
        <ttl>event_date + INTERVAL 15 DAY DELETE</ttl>
        <flush_interval_milliseconds>7500</flush_interval_milliseconds>
    </query_log>
  2. Setelah memodifikasi konfigurasi, jalankan pernyataan drop table system.part_log dan drop table system.query_log. Tabel system.part_log dan system.query_log akan secara otomatis dibuat ulang saat Anda memasukkan data ke tabel bisnis.

Langkah 2: Konfigurasi kluster tujuan agar kompatibel dengan versi kluster yang dikelola sendiri

Untuk memastikan perilaku kluster tujuan sekompatibel mungkin dengan kluster yang dikelola sendiri, hubungkan ke kluster tujuan dan modifikasi parameter compatibility agar sesuai dengan nomor versi kluster yang dikelola sendiri.

Penting

Jika Anda mengatur parameter compatibility ke versi yang lebih lama, beberapa fitur baru seperti ParallelReplica akan dinonaktifkan.

Contoh:

SELECT currentProfiles(); // Mendapatkan profil yang digunakan oleh pengguna.
SELECT
    profile_name,
    setting_name,
    value
FROM system.settings_profile_elements
WHERE (setting_name = 'compatibility') AND (profile_name = 'xxxx'); // Menanyakan nilai pengaturan compatibility.
ALTER PROFILE XXXX SETTINGS compatibility = '23.8'; // Memodifikasi profil.

Langkah 3: Buat tugas migrasi

  1. Masuk ke Konsol ApsaraDB for ClickHouse. Pada halaman Clusters, klik tab Enterprise Edition Clusters, lalu klik ID kluster tujuan.

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

  3. Klik Create Migration Task.

  4. Pilih instans sumber dan tujuan.

    Konfigurasikan informasi untuk kluster yang dikelola sendiri dan klik Next.

    Item konfigurasi

    Deskripsi

    Contoh

    Task Name

    Nama tugas migrasi. Hanya boleh berisi huruf besar, huruf kecil, dan angka. Nama harus unik.

    MigrationTask1229

    Source Cluster Name

    Jalankan SELECT * FROM system.clusters; untuk mendapatkan nama kluster instans yang dikelola sendiri.

    default

    VPC IP Address

    Alamat IP dan nomor port setiap shard di kluster, dipisahkan koma. Format: IP:PORT,IP:PORT,....

    Anda dapat menggunakan pernyataan SQL berikut untuk mendapatkan alamat IP dan nomor port kluster yang dikelola sendiri:

    SELECT shard_num, replica_num, host_address as ip, port FROM system.clusters WHERE cluster = '<cluster_name>' and replica_num = 1;

    Deskripsi parameter:

    • cluster_name: Nama kluster tujuan.

    • replica_num=1 menunjukkan bahwa set replika pertama dipilih. Anda juga dapat memilih set replika lain atau memilih satu replika dari setiap shard.

    Penting
    • Jangan gunakan nama domain VPC atau alamat SLB ClickHouse.

    • Jika alamat IP dan nomor port dipetakan ke Alibaba Cloud setelah transformasi, konfigurasikan alamat IP dan nomor port yang sesuai berdasarkan konektivitas jaringan.

    192.168.0.5:9000,192.168.0.6:9000

    Database Account

    Akun database kluster yang dikelola sendiri.

    test

    Database Password

    Password untuk akun database kluster yang dikelola sendiri.

    test******

  5. Periksa konektivitas dan konfigurasi.

    1. Klik Start Check.

      Klik untuk melihat item pemeriksaan.

      • Validasi konektivitas: Memeriksa apakah jaringan sepenuhnya terhubung antara instans yang dikelola sendiri dan instans tujuan serta apakah node di kedua ujung dapat saling mengakses.

      • Validasi izin akun: Memeriksa apakah akun dan kata sandi sumber benar dan dapat digunakan untuk menghubungkan ke instans sumber.

      • Pemeriksaan tabel sistem instans sumber: Memeriksa apakah instans yang dikelola sendiri memiliki tabel sistem system.query_log, system.parts, dan system.part_log.

      • Pemeriksaan konfigurasi: Memeriksa apakah instans yang dikelola sendiri dan instans tujuan memiliki zona waktu yang sama dan apakah item konfigurasi compatibility instans tujuan sama dengan versi sumber.

    2. Selama pemeriksaan, klik image di pojok kanan atas untuk melihat progres pemeriksaan secara real-time.

    3. Setelah pemeriksaan selesai, lakukan operasi selanjutnya berdasarkan hasilnya.

      Anda dapat memilih Result Level dan item pemeriksaan, lalu klik tombol image untuk melihat hasil pemeriksaan yang sesuai. Hasil pemeriksaan dijelaskan sebagai berikut.

      • Berhasil: Jika semua item pemeriksaan lolos, klik Next untuk melanjutkan.

      • Peringatan: Ini adalah item non-blocking. Anda harus memastikan apakah peringatan tersebut akan memengaruhi bisnis atau tugas migrasi Anda. Anda dapat memilih untuk mengabaikan peringatan tersebut, atau menyelesaikan masalah berdasarkan isi peringatan lalu klik Start Check lagi.

      • Error: Ini adalah item blocking. Anda harus menyelesaikan masalah berdasarkan isi error lalu klik Start Check lagi.

        Untuk informasi selengkapnya tentang pesan error dan solusinya, lihat FAQ.

  6. Periksa skema database dan tabel.

    1. Klik Start Check.

    2. Selama pemeriksaan, klik image di pojok kanan atas untuk melihat progres pemeriksaan secara real-time.

    3. Setelah pemeriksaan selesai, lakukan operasi selanjutnya berdasarkan hasil pemeriksaan.

      Untuk deskripsi hasil pemeriksaan, lihat Langkah 5.

  7. Migrasi skema database dan tabel.

    1. Klik Start Migration.

    2. Selama migrasi, klik image di pojok kanan atas untuk melihat progres migrasi secara real-time.

    3. Setelah pemeriksaan selesai, lakukan operasi selanjutnya berdasarkan hasil pemeriksaan.

      Untuk deskripsi hasil pemeriksaan, lihat Langkah 5.

  8. (Opsional) Periksa kompatibilitas SQL.

    Pemeriksaan kompatibilitas SQL memverifikasi kompatibilitas sintaks versi kernel yang berbeda dengan memutar ulang pernyataan SQL dari instans yang dikelola sendiri di instans tujuan. Putuskan apakah akan melakukan langkah ini berdasarkan kebutuhan Anda.

    • Jika Anda tidak perlu melakukan langkah ini, klik Skip.

    • Untuk melakukan langkah ini, pilih Request Replay Time, lalu klik Start Check. Setelah pemeriksaan lolos, klik Next. Untuk informasi tentang cara menangani pemeriksaan yang gagal, lihat Langkah 5.

      Penting
      • Database dan tabel instans tidak memiliki data. Fitur ini hanya memverifikasi kompatibilitas sintaks. Jika Anda memerlukan data, Anda dapat terlebih dahulu melakukan langkah berikutnya untuk memigrasikan sebagian data.

      • Hasil positif palsu dapat terjadi karena versi client yang digunakan untuk memutar ulang pernyataan SQL tidak cocok dengan instans tujuan. Jika hasilnya abnormal, Anda dapat mengeksekusi pernyataan SQL tersebut sendiri untuk validasi.

  9. Mulai sinkronisasi.

    1. Klik Start Sync.

    2. Selama sinkronisasi, klik image di pojok kanan atas untuk melihat progres sinkronisasi secara real-time.

      Selama sinkronisasi, Anda dapat melakukan operasi Stop, Restart, dan Cancel Migration untuk mengontrol alur migrasi. Klik untuk melihat deskripsi, dampak, dan informasi lain tentang operasi ini.

      Operasi

      Makna fitur

      Dampak

      Skenario

      Stop

      Segera menghentikan migrasi data dan memigrasikan skema database dan tabel yang tersisa.

      • Data mungkin tidak sepenuhnya dimigrasikan.

      • Sebelum memulai ulang migrasi, Anda harus menghapus data yang telah dimigrasikan di kluster tujuan untuk menghindari duplikasi data.

      • Setelah semua data dimigrasikan, hentikan tugas migrasi secara aktif.

      • Anda ingin menguji setelah memigrasikan sebagian data tetapi tidak ingin menghentikan penulisan ke kluster yang dikelola sendiri.

      Restart

      Jika terjadi pengecualian selama proses pemeriksaan dan pembersihan database dan tabel lain, migrasi data, atau migrasi skema database dan tabel yang tersisa, pelanggan dapat menangani masalah berdasarkan pesan error. Langkah saat ini akan diulang, dan langkah-langkah berikutnya akan berjalan normal.

      Tidak ada

      Terjadi pengecualian selama proses migrasi. Pelanggan ingin mencoba ulang dari titik gangguan setelah menyelesaikan masalah berdasarkan prompt.

      Cancel Migration

      Membatalkan tugas secara paksa dan melewati langkah-langkah berikutnya.

      • Tugas migrasi dihentikan secara paksa. Skema database dan tabel serta konfigurasi instans tujuan mungkin tidak lengkap dan tidak dapat digunakan untuk bisnis.

      • Sebelum memulai ulang migrasi, Anda harus menghapus data yang telah dimigrasikan di kluster tujuan untuk menghindari duplikasi data.

      Tugas migrasi telah memengaruhi kluster yang dikelola sendiri, dan Anda ingin mengakhiri migrasi serta mengaktifkan penulisan sesegera mungkin.

    3. Saat proses mencapai langkah Migrate Data, beralihlah ke tab Migrate Data dan klik tombol image untuk melihat Migration Progress dan Estimated Remaining Time.

      Klik untuk mempelajari cara menilai apakah migrasi dapat diselesaikan.

      Apakah migrasi dapat diselesaikan bergantung pada hubungan antara kecepatan migrasi dan kecepatan penulisan kluster yang dikelola sendiri.

      • Tabel berikut menunjukkan data uji kecepatan migrasi:

        Ukuran rata-rata bagian tabel data

        Tipe instans sumber

        Spesifikasi disk sumber

        Tipe instans tujuan

        Media penyimpanan tujuan

        Jumlah node kluster

        Kecepatan migrasi per node

        Kecepatan migrasi keseluruhan

        402,54 MB

        8 vCPU, 32 GB

        PL1

        16 CCU

        OSS

        16

        47 MB/dtk

        752,34 MB/dtk

        402,54 MB

        80 vCPU, 384 GB

        PL3

        48 CCU

        ESSD_L2

        8

        197,74 MB/dtk

        1581,95 MB/dtk

      • Tentukan hubungan antara kecepatan penulisan kluster tujuan dan kecepatan penulisan kluster yang dikelola sendiri:

        Kecepatan migrasi data terkait dengan faktor-faktor seperti ukuran part, tipe instans, spesifikasi disk, dan atribut data bisnis. Dalam eksperimen uji, kecepatan migrasi yang cepat dipertahankan ketika ukuran rata-rata part berada di antara 100 MB dan 10 GB. Oleh karena itu, data uji ini hanya untuk referensi. Anda harus menentukan kecepatan penulisan aktual kluster tujuan dengan melihat throughput disk-nya. Untuk informasi selengkapnya tentang cara melihat throughput disk, lihat Lihat informasi pemantauan kluster.

        • Jika kecepatan penulisan kluster tujuan kurang dari kecepatan penulisan kluster yang dikelola sendiri, migrasi kemungkinan besar akan gagal. Kami menyarankan Anda membatalkan tugas migrasi dan melakukan migrasi manual.

        • Jika kecepatan penulisan kluster tujuan lebih besar dari kecepatan penulisan kluster yang dikelola sendiri, Anda dapat melanjutkan ke langkah berikutnya. Untuk meningkatkan tingkat keberhasilan migrasi, kami menyarankan agar waktu migrasi yang diperlukan, dihitung sebagai Volume Data / (Kecepatan Migrasi - Kecepatan Penulisan Instans yang Dikelola Sendiri), adalah 5 hari atau kurang.

      Penting

      Anda harus memantau secara ketat Migration Progress tugas tersebut. Berdasarkan Estimated Remaining Time, Anda harus secara proaktif menghentikan penulisan ke kluster yang dikelola sendiri dan menangani tabel mesin Kafka dan RabbitMQ.

      Klik untuk mempelajari cara memperkirakan kapan harus berhenti menulis data ke kluster yang dikelola sendiri.

      Sebelum beralih bisnis Anda, Anda harus memastikan tidak ada data baru yang dihasilkan di instans yang dikelola sendiri untuk menjamin integritas data setelah migrasi. Oleh karena itu, Anda perlu menghentikan penulisan bisnis dan menghapus tabel Kafka dan RabbitMQ. Operasi spesifiknya adalah sebagai berikut:

      1. Masuk ke kluster yang dikelola sendiri dan gunakan pernyataan berikut untuk menanyakan tabel yang perlu Anda proses.

        SELECT * FROM system.tables WHERE engine IN ('RabbitMQ', 'Kafka');
      2. Lihat pernyataan CREATE TABLE untuk tabel target.

        SHOW CREATE TABLE <aim_table_name>;
      3. Hubungkan ke kluster tujuan dan eksekusi pernyataan CREATE TABLE yang Anda peroleh pada langkah sebelumnya.

      4. Masuk ke kluster yang dikelola sendiri dan hapus tabel mesin Kafka dan RabbitMQ yang telah dimigrasikan.

        Penting

        Saat Anda menghapus tabel Kafka, Anda juga harus menghapus tampilan materialisasi yang mereferensikan tabel Kafka tersebut. Jika tidak, migrasi tampilan materialisasi tidak dapat diselesaikan, yang menyebabkan seluruh migrasi gagal.

    4. Saat Migration Progress mencapai 100% dan Anda telah memastikan bahwa instans sumber telah berhenti menerima penulisan, klik tombol Stop untuk mengakhiri proses migrasi dan melanjutkan ke langkah berikutnya.

      image

    5. Setelah sinkronisasi selesai, klik Completed.

Langkah 4: Migrasi data bisnis dari tabel non-MergeTree

Tugas migrasi hanya mendukung migrasi skema tabel untuk beberapa tabel non-MergeTree, seperti tabel MySQL. Untuk tabel lain, seperti tabel Log, migrasi sama sekali tidak didukung. Oleh karena itu, setelah tugas migrasi selesai, kluster tujuan mungkin berisi tabel yang hanya memiliki skema tanpa data bisnis. Anda harus memigrasikan data bisnis tersebut sendiri. Operasi spesifiknya adalah sebagai berikut:

  1. Masuk ke kluster yang dikelola sendiri dan lihat tabel non-MergeTree yang datanya perlu Anda migrasikan.

    SELECT
        `database` AS database_name,
        `name` AS table_name,
        `engine`
    FROM `system`.`tables`
    WHERE (`engine` NOT LIKE '%MergeTree%') AND (`engine` != 'Distributed') AND (`engine` != 'MaterializedView') AND (`engine` NOT IN ('Kafka', 'RabbitMQ')) AND (`database` NOT IN ('system', 'INFORMATION_SCHEMA', 'information_schema')) AND (`database` NOT IN (
        SELECT `name`
        FROM `system`.`databases`
        WHERE `engine` IN ('MySQL', 'MaterializedMySQL', 'MaterializeMySQL', 'Lazy', 'PostgreSQL', 'MaterializedPostgreSQL', 'SQLite')
    ))
  2. Masuk ke kluster tujuan dan lakukan migrasi data menggunakan fungsi remote.

Migrasi manual

Migrasi data dari kluster ClickHouse yang dikelola sendiri ke kluster ApsaraDB for ClickHouse Enterprise Edition

image.png

Catatan

Untuk ApsaraDB for ClickHouse Enterprise Edition, Anda hanya perlu membuat tabel tujuan, terlepas dari apakah tabel sumber Anda di-sharding atau direplikasi. Anda dapat menghilangkan parameter `Engine` untuk tabel tujuan karena sistem secara otomatis menggunakan mesin tabel `SharedMergeTree`. Kluster ApsaraDB for ClickHouse Enterprise Edition menangani skalabilitas vertikal dan horizontal secara otomatis. Anda tidak perlu mengelola implementasi replikasi dan sharding secara spesifik.

Ikhtisar

Prosedur migrasi dari kluster ClickHouse yang dikelola sendiri ke kluster ApsaraDB for ClickHouse Enterprise Edition adalah sebagai berikut.

  1. Tambahkan pengguna read-only ke kluster sumber.

  2. Salin skema tabel sumber ke kluster tujuan.

  3. Jika kluster sumber dapat diakses dari internet, tarik data dari kluster sumber ke kluster tujuan. Jika kluster sumber tidak dapat diakses dari internet, dorong data dari kluster sumber ke kluster tujuan.

  4. (Opsional) Hapus alamat IP kluster sumber dari kluster tujuan.

  5. Hapus pengguna read-only dari kluster sumber.

Prosedur

  1. Lakukan operasi berikut pada kluster sumber (dengan asumsi tabel sumber sudah berisi data):

    1. Tambahkan pengguna read-only ke tabel `db.table`.

      CREATE USER exporter
      IDENTIFIED WITH SHA256_PASSWORD BY 'password-here'
      SETTINGS readonly = 1;
      GRANT SELECT ON db.table TO exporter;
    2. Salin skema tabel sumber.

      SELECT create_table_query
      FROM system.tables
      WHERE database = 'db' and table = 'table'
  2. Lakukan operasi berikut pada kluster tujuan.

    1. Buat database.

      CREATE DATABASE db
    2. Gunakan pernyataan CREATE TABLE dari tabel data sumber untuk membuat tabel data tujuan.

      Catatan

      Saat menjalankan pernyataan CREATE TABLE, ubah `ENGINE` menjadi `SharedMergeTree`, tetapi jangan sertakan parameter apa pun. Hal ini karena kluster ApsaraDB for ClickHouse Enterprise Edition selalu mereplikasi tabel dan menyediakan parameter yang benar. Klausul ORDER BY, PRIMARY KEY, PARTITION BY, SAMPLE BY, TTL, dan SETTINGS mendefinisikan struktur dan metadata tabel. Anda harus mempertahankan klausul ini untuk memastikan tabel dibuat dengan benar di kluster tujuan ApsaraDB for ClickHouse Enterprise Edition.

      CREATE TABLE db.table ...
    3. Gunakan fungsi Remote untuk menarik atau mendorong data.

      Catatan

      Jika server ClickHouse sumber tidak dapat diakses dari internet, Anda dapat memilih untuk mendorong data daripada menariknya, karena fungsi Remote berfungsi untuk operasi `SELECT` maupun `INSERT`.

      • Gunakan fungsi Remote di kluster tujuan untuk menarik data dari tabel sumber di kluster sumber.

        image.png

        INSERT INTO db.table SELECT * FROM
        remote('source-hostname:9000', db, table, 'exporter', 'password-here')
      • Gunakan fungsi Remote di kluster sumber untuk mendorong data ke kluster tujuan.

        image.png

        Catatan

        Untuk mengizinkan fungsi Remote terhubung ke kluster ApsaraDB for ClickHouse Enterprise Edition Anda, Anda harus menambahkan alamat IP kluster sumber ke daftar putih kluster tujuan. Untuk informasi selengkapnya, lihat Konfigurasi daftar putih.

        INSERT INTO FUNCTION
        remote('target-hostname:9000', 'db.table',
        'default', 'PASS') SELECT * FROM db.table

FAQ

Pesan error dan solusi untuk pemeriksaan konektivitas dan konfigurasi

Pesan error

Makna

Solusi

Tcp connectivity check failed for '{host}:{port}':{error}.

Koneksi jaringan ke kluster yang dikelola sendiri timeout.

Atasi masalah jaringan berdasarkan pesan error.

No such cluster: {cluster}, please run 'SELECT DISTINCT(cluster) FROM system.clusters;' to check

Kluster yang dikonfigurasi untuk tugas migrasi tidak ada di kluster yang dikelola sendiri.

Tanyakan kluster di kluster yang dikelola sendiri menggunakan pernyataan SQL dan modifikasi konfigurasi tugas migrasi.

not exists

Satu atau lebih tabel sistem system.query_log, system.parts, atau system.part_log tidak ada di kluster yang dikelola sendiri.

Buat tabel sistem yang sesuai di kluster yang dikelola sendiri.

Timezone mismatch with source, which may cause time data anomalies.

Zona waktu kluster yang dikelola sendiri dan kluster tujuan tidak cocok.

Modifikasi zona waktu agar sesuai.

Compatibility mismatch with source version, which may cause incompatibility.

Konfigurasi compatibility kluster tujuan tidak konsisten dengan versi kluster yang dikelola sendiri.

Sesuaikan konfigurasi compatibility kluster tujuan agar sesuai dengan versi kluster yang dikelola sendiri.

Penting

Jika Anda mengatur compatibility ke versi yang lebih lama, beberapa fitur baru seperti ParallelReplica akan dinonaktifkan.

Pesan error dan solusi untuk pemeriksaan skema database dan tabel

Pesan error

Makna

Solusi

ERROR: Not consistent across nodes.

Tabel database tidak konsisten di berbagai node di kluster yang dikelola sendiri.

Periksa database dan tabel di setiap node kluster yang dikelola sendiri dan selesaikan ketidaksesuaiannya.

ERROR: Cannot get secrets (shown as [HIDDEN]), please set display_secrets_in_show_and_select=1 (restart required).

Password database dan tabel tidak terlihat.

Atur `display_secrets_in_show_and_select=1` dan restart kluster.

Catatan: Operasi ini memerlukan akun dengan izin displaySecretsInShowAndSelect.

ERROR: Unsupported engine.

Mesin database kluster yang dikelola sendiri tidak didukung untuk migrasi.

Pertimbangkan untuk mengubah ke mesin database yang didukung oleh kluster tujuan.

WARN:Unsupported engine, it will be automatically replaced with a Replicated database to bypass migration exceptions.

Mesin database kluster yang dikelola sendiri tidak didukung untuk migrasi.

Sistem secara otomatis menggantinya dengan database Replicated untuk melewati pengecualian migrasi.

WARN:Unsupported engine, please replace the data synchronization capability with DTS, or create a same-name database to bypass migration exceptions.

Mesin database kluster yang dikelola sendiri tidak didukung untuk migrasi.

Gunakan Layanan Transmisi Data (DTS) untuk sinkronisasi data, atau buat database dengan nama yang sama untuk melewati pengecualian migrasi.

WARN:Unsupported engine, it will be automatically ignored during migration.

Mesin database kluster yang dikelola sendiri tidak didukung untuk migrasi.

Mereka secara otomatis diabaikan selama proses migrasi.

WARN:It's not recommended to use the Distributed engine as it will cause scaling issues in enterprise instances. Please drop this table and query the underlying MergeTree table directly.

Menggunakan tabel terdistribusi tidak disarankan di ApsaraDB for ClickHouse Enterprise Edition.

Hapus tabel terdistribusi di kluster yang dikelola sendiri. Setelah migrasi, tanyakan tabel MergeTree secara langsung.

WARN:Please confirm referenced IP addresses are accessible.

Mesin eksternal direferensikan. Masalah akses dapat terjadi.

Anda harus memastikan apakah alamat IP yang direferensikan dapat diakses dari instans tujuan. Jika tidak, Anda harus membuat konektivitas jaringan dan menambahkan alamat IP ke daftar putih.

WARN:Only structure, does not support data migration.

Untuk tabel yang menggunakan mesin tertentu, hanya skema tabel yang dimigrasikan. Migrasi data tidak didukung.

Anda harus memigrasikan data sendiri menggunakan metode seperti fungsi remote.

WARN:Unsupported engine, please create a same-name MergeTree table manually to bypass migration exceptions.

Migrasi tidak didukung untuk tabel yang menggunakan mesin tertentu.

Anda harus membuat tabel MergeTree dengan nama yang sama di kluster tujuan dan memigrasikan data sendiri.

WARN:Ignored engine, please create table manually.

Migrasi tidak didukung untuk tabel yang menggunakan mesin tertentu.

Untuk informasi selengkapnya, lihat Langkah 4.

ERROR: Table has data in destination cluster.

Saat memeriksa skema tabel, tabel yang sesuai di instans tujuan harus kosong.

Hapus data dari tabel yang sesuai di instans tujuan.

ERROR: Unsupported function origin.

Hanya Function(function.origin="SQLUserDefined") yang ditentukan pengguna yang dapat dimigrasikan.

Anda harus membuat fungsi yang sesuai di instans tujuan sendiri.

Lainnya

Untuk informasi tentang masalah dan solusi lain selama migrasi, lihat FAQ.