全部产品
Search
文档中心

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

更新时间:Feb 11, 2026

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

Prasyarat

  • Kluster yang dikelola sendiri: Anda telah 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 berisi kata sandi akun, akun tersebut juga harus memiliki izin displaySecretsInShowAndSelect.

  • Kluster tujuan: Anda telah membuat akun database dan kata sandi dengan izin penuh.

  • Konektivitas jaringan

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

      • Untuk informasi tentang cara mengonfigurasi daftar putih di ApsaraDB for ClickHouse, lihat Konfigurasi daftar putih.

      • Untuk informasi tentang cara mengonfigurasi daftar putih di kluster yang dikelola sendiri, lihat dokumentasi produk Anda.

      • Anda dapat menjalankan perintah SELECT * FROM system.clusters WHERE internal_replication = 1; untuk melihat alamat IP semua node di kluster ApsaraDB for ClickHouse.

    • Jika kluster yang dikelola sendiri dan kluster tujuan berada di VPC yang berbeda, atau jika kluster yang dikelola sendiri di-host di pusat data lokal atau penyedia cloud lain, selesaikan terlebih dahulu masalah konektivitas jaringan. Untuk informasi selengkapnya, lihat Bagaimana cara menetapkan konektivitas jaringan antara kluster tujuan dan sumber data?.

      Catatan

      Dalam kasus ini, pemetaan IP mungkin diperlukan untuk menghindari konflik blok CIDR antar-VPC yang berbeda. Jika Anda melakukan pemetaan IP, tambahkan alamat IP yang dipetakan ke daftar putih kedua kluster.

Validasi migrasi

Sebelum memulai migrasi data, buat lingkungan staging untuk memvalidasi kompatibilitas bisnis, performa, dan apakah migrasi dapat diselesaikan dengan sukses. Setelah validasi berhasil, lanjutkan migrasi di lingkungan produksi. Langkah ini sangat penting karena membantu Anda mengidentifikasi dan menyelesaikan potensi masalah lebih awal, memastikan migrasi berjalan lancar, serta menghindari dampak yang tidak perlu pada lingkungan produksi Anda.

  1. Buat tugas migrasi untuk migrasi data.

  2. Lakukan analisis bottleneck performa untuk menentukan apakah migrasi dapat diselesaikan.

  3. Anda dapat memvalidasi kompatibilitas dengan salah satu cara berikut:

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

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

Pilih solusi

Solusi migrasi

Keunggulan

Kekurangan

Skenario

Migrasi berbasis konsol

Menyediakan antarmuka visual dan tidak memerlukan migrasi metadata manual.

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

Migrasi seluruh kluster.

Migrasi manual

Memberikan kontrol penuh atas database dan tabel mana yang akan dimigrasikan.

Memerlukan operasi kompleks dan migrasi metadata manual.

  • Migrasi database atau tabel tertentu.

  • Data dingin pada satu node melebihi 1 TB.

  • Data panas pada satu node melebihi 10 TB.

  • Migrasi seluruh kluster yang tidak memenuhi persyaratan migrasi berbasis konsol.

Prosedur

Migrasi berbasis konsol

Catatan

Selama migrasi

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

    Catatan

    Jika migrasi berlangsung terlalu lama, metadata akan menumpuk secara berlebihan di kluster tujuan. Kami merekomendasikan agar tugas migrasi berjalan tidak lebih dari lima hari. Tugas yang melebihi durasi ini akan dibatalkan secara otomatis.

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

Konten migrasi yang didukung

Catatan

Beberapa mesin tabel dikonversi selama migrasi. Untuk detail konversi mesin setelah migrasi, lihat tabel berikut.

  • Skema database: Tabel berikut mencantumkan mesin database yang didukung beserta aturan konversinya.

    Nama mesin

    Deskripsi konversi mesin

    Atomic

    Diganti dengan database Replicated

    Replicated

    Tidak berubah

    Ordinary

    Diganti dengan database Replicated

  • Skema tabel: Tabel berikut mencantumkan mesin tabel yang mendukung migrasi.

    Nama mesin

    Deskripsi konversi 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: Memigrasikan data secara inkremental dari tabel keluarga MergeTree.

Penting
  • Skema database dan tabel yang tercantum di atas dapat dimigrasikan secara normal. Untuk skema lainnya, tangani secara manual berdasarkan peringatan atau pesan error selama migrasi.

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

Dampak pada kluster

  • Kluster yang dikelola sendiri

    • Penggunaan CPU dan memori meningkat saat membaca data dari kluster yang dikelola sendiri.

    • Operasi DDL tidak diizinkan.

  • Kluster tujuan

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

    • Operasi DDL tidak diizinkan pada tabel yang sedang dimigrasikan. Tabel yang tidak terlibat dalam migrasi tidak terpengaruh.

    • Operasi merge dijeda untuk tabel yang sedang dimigrasikan. Tabel yang tidak terlibat dalam migrasi tetap melakukan merge.

    • Setelah migrasi selesai, kluster melakukan operasi merge secara intensif untuk beberapa waktu, meningkatkan penggunaan I/O dan berpotensi meningkatkan latensi permintaan bisnis. Kami merekomendasikan agar Anda menghitung durasi merge setelah migrasi dan merencanakan langkah mitigasi dampak latensi.

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

Sebelum migrasi data, modifikasi file config.xml berdasarkan apakah system.part_log dan system.query_log diaktifkan di kluster yang dikelola sendiri untuk mendukung migrasi inkremental.

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, ubah konfigurasinya agar sesuai. Jika tidak, migrasi mungkin 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 mengubah konfigurasi, jalankan pernyataan drop table system.part_log dan drop table system.query_log. Tabel system.part_log dan system.query_log akan dibuat ulang secara otomatis saat Anda memasukkan data ke tabel bisnis.

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

Untuk memastikan kluster tujuan berperilaku semirip mungkin dengan kluster yang dikelola sendiri, hubungkan ke kluster tujuan dan atur parameter compatibility agar sesuai dengan versi kluster yang dikelola sendiri.

Penting

Mengatur compatibility ke versi yang lebih rendah akan menonaktifkan beberapa fitur baru, seperti ParallelReplica.

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 pengaturan compatibility
ALTER PROFILE XXXX SETTINGS compatibility = '23.8'; // Mengubah profil

Langkah 3: Buat tugas migrasi

  1. Masuk ke Konsol ApsaraDB for ClickHouse. Pada halaman Clusters, pilih Enterprise Edition Clusters, lalu klik ID kluster yang dituju.

  2. Pada panel navigasi kiri, pilih Data Migration and Synchronization > Migration from ClickHouse.

  3. Klik Create Migration Task.

  4. Pilih instans sumber dan tujuan.

    Item konfigurasi

    Deskripsi

    Contoh

    Task Name

    Nama tugas hanya boleh berisi huruf dan angka. Nama bersifat tidak case-sensitive dan 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 port setiap shard di kluster, dipisahkan koma. Format: IP:PORT,IP:PORT,....

    Jalankan pernyataan SQL berikut untuk mendapatkan alamat IP dan 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;

    Parameter:

    • cluster_name: Nama kluster tujuan.

    • replica_num=1 memilih replika pertama. Anda juga dapat memilih replika lain atau memilih satu replika per shard secara manual.

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

    • Jika pemetaan IP dan port diterapkan untuk Alibaba Cloud, konfigurasikan IP dan port yang dipetakan 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 akun database untuk kluster yang dikelola sendiri.

    test******

    Source Instance Kernel Version

    Klik Get Version.

    22.8.5.29

  5. Berdasarkan versi instans sumber, lakukan operasi yang sesuai:

    • Jika versi instans sumber 22.10 atau lebih baru, klik Next.

    • Jika versi instans sumber lebih lama dari 22.10, masukkan Destination Instance Information seperti diminta dan klik Next.

    • Jika pengambilan versi gagal, periksa kesalahan seperti informasi instans sumber salah atau masalah konektivitas jaringan. Perbaiki masalah tersebut dan klik Get Version lagi.

    Catatan

    Karena ketidakcocokan parameter antara edisi komunitas lama dan Edisi Perusahaan, jika versi instans sumber lebih lama dari 22.10, Anda harus menggunakan sinkronisasi push dari sumber ke tujuan. Dalam kasus ini, Anda harus memetakan IP tujuan ke jaringan yang dikelola sendiri. Jika jaringan yang dikelola sendiri dan instans Edisi Perusahaan berada di VPC yang sama atau terhubung melalui peering VPC, Anda dapat langsung menggunakan alamat IP aslinya.

  6. Periksa konektivitas dan konfigurasi.

    1. Klik Start Check.

      Klik untuk melihat item pemeriksaan.

      • Verifikasi konektivitas: Konektivitas jaringan penuh antara instans yang dikelola sendiri dan tujuan, dengan akses timbal balik antar semua node.

      • Verifikasi izin akun: akun dan kata sandi sumber benar dan dapat terhubung ke instans sumber.

      • Pemeriksaan tabel sistem instans sumber: Instans yang dikelola sendiri harus memiliki tiga tabel sistem berikut: system.query_log, system.parts, dan system.part_log.

      • Pemeriksaan konfigurasi: Instans yang dikelola sendiri dan tujuan harus memiliki zona waktu yang sama, dan pengaturan compatibility instans tujuan harus sesuai dengan versi sumber.

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

    3. Setelah pemeriksaan selesai, lanjutkan berdasarkan hasilnya.

      Pilih result level dan item pemeriksaan, lalu klik tombol image untuk melihat detail. Hasil diinterpretasikan sebagai berikut:

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

      • Warning: Ini adalah masalah non-blocking. Pastikan apakah masalah tersebut memengaruhi bisnis atau migrasi Anda. Anda dapat mengabaikan peringatan atau memperbaiki masalah tersebut lalu klik Start Check lagi untuk memeriksa ulang.

      • Error: Ini adalah masalah blocking. Perbaiki error tersebut lalu klik Start Check lagi untuk memeriksa ulang.

        Untuk pesan error dan solusinya, lihat FAQ.

  7. Periksa skema database dan tabel.

    1. Klik Start Check.

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

    3. Setelah pemeriksaan selesai, lanjutkan berdasarkan hasilnya.

      Untuk interpretasi hasil, lihat Langkah 5.

  8. Migrasi skema database dan tabel.

    1. Klik Start Migration.

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

    3. Setelah inspeksi selesai, Anda dapat melanjutkan ke langkah berikutnya berdasarkan hasil inspeksi.

      Untuk interpretasi hasil, lihat Langkah 5.

  9. (Opsional) Periksa kompatibilitas SQL.

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

    • Untuk melewati, klik Skip.

    • Untuk melakukan pemeriksaan, pilih request replay time dan klik Start Check. Setelah pemeriksaan berhasil, klik Next. Untuk pemeriksaan yang gagal, lihat Langkah 5 untuk penyelesaian.

      Penting
      • Pemeriksaan ini hanya memvalidasi kompatibilitas sintaksis dan tidak memerlukan data. Untuk menguji dengan data, migrasikan sebagian data terlebih dahulu pada langkah berikutnya.

      • False positive dapat terjadi karena ketidakcocokan versi client dengan instans tujuan. Validasi pernyataan SQL secara manual jika diperlukan.

  10. Mulai sinkronisasi.

    1. Klik Start Sync.

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

      Anda dapat mengontrol proses migrasi menggunakan operasi berikut: Stop, Restart, dan Cancel Migration. Klik untuk melihat makna dan dampak operasi.

      Operasi

      Definisi Fitur

      Dampak

      Skenario

      Stop

      Segera menghentikan migrasi data tetapi tetap melanjutkan migrasi skema tabel yang tersisa.

      • Beberapa data mungkin tidak termigrasi sepenuhnya.

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

      • Hentikan tugas migrasi setelah migrasi data penuh.

      • Uji setelah memigrasikan sebagian data tanpa menghentikan penulisan ke kluster yang dikelola sendiri.

      Restart

      Mencoba ulang langkah saat ini setelah menyelesaikan error yang terjadi selama migrasi skema atau data.

      Tidak ada

      Lanjutkan migrasi dari titik henti setelah memperbaiki error.

      Cancel migration

      Membatalkan tugas secara paksa dan melewati langkah-langkah berikutnya.

      Penting

      Setelah pembatalan, tugas migrasi menjadi terkunci dan tidak dapat diubah. Gunakan tombol Previous, Next, atau Refresh untuk melihat hasil langkah.

      • Migrasi dihentikan. Instans tujuan mungkin memiliki skema atau konfigurasi yang tidak lengkap dan tidak dapat digunakan untuk bisnis.

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

      Mengakhiri migrasi dengan cepat untuk melanjutkan penulisan ke kluster yang dikelola sendiri.

    3. Saat proses mencapai Migrate Data, beralihlah ke tab Migrate Data dan klik tombol image untuk melihat Migration Progress dan estimated remaining time.

      Klik untuk mempelajari cara mengevaluasi apakah migrasi dapat diselesaikan.

      Keberhasilan migrasi bergantung pada hubungan antara kecepatan migrasi dan kecepatan penulisan kluster yang dikelola sendiri.

      • Kecepatan migrasi uji sebagai berikut:

        Ukuran part rata-rata

        Tipe instans sumber

        Tipe disk sumber

        Tipe instans tujuan

        Media penyimpanan tujuan

        Jumlah node kluster

        Kecepatan migrasi per node

        Kecepatan migrasi keseluruhan

        402.54MB

        8C32G

        PL1

        16CCU

        OSS

        16

        47MB/s

        752.34MB/s

        402.54MB

        80C384G

        PL3

        48CCU

        ESSD_L2

        8

        197.74MB/s

        1581.95MB/s

      • Bandingkan kecepatan penulisan kluster tujuan dan kluster yang dikelola sendiri:

        Kecepatan migrasi bergantung pada faktor seperti ukuran part (dalam pengujian, ukuran part rata-rata antara 100 MB hingga 10 GB mempertahankan kecepatan tinggi), tipe instans, tipe disk, dan karakteristik data. Oleh karena itu, data uji hanya sebagai referensi. Tentukan kecepatan penulisan aktual kluster tujuan dengan memantau throughput disk-nya. Untuk informasi selengkapnya, lihat Lihat informasi pemantauan kluster.

        • Jika kecepatan penulisan kluster tujuan lebih rendah daripada kecepatan penulisan kluster yang dikelola sendiri, migrasi memiliki tingkat kegagalan tinggi. Batalkan tugas migrasi dan gunakan migrasi manual.

        • Jika kecepatan penulisan kluster tujuan lebih tinggi daripada kecepatan penulisan kluster yang dikelola sendiri, lanjutkan. Untuk meningkatkan tingkat keberhasilan, pastikan durasi migrasi yang dihitung sebagai volume data / (kecepatan migrasi - kecepatan penulisan kluster yang dikelola sendiri) adalah lima hari atau kurang.

      Penting

      Pantau Migration Progress secara ketat. Berdasarkan estimated remaining time, hentikan penulisan ke kluster yang dikelola sendiri dan tangani tabel mesin Kafka dan RabbitMQ.

      Klik untuk mempelajari cara memperkirakan kapan harus menghentikan penulisan ke kluster yang dikelola sendiri.

      Untuk memastikan kelengkapan data setelah migrasi, hentikan penulisan bisnis dan hapus tabel Kafka dan RabbitMQ sebelum alih bencana trafik. Lakukan langkah-langkah berikut:

      1. Login ke kluster yang dikelola sendiri dan jalankan pernyataan berikut untuk menanyakan tabel yang perlu ditangani:

        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 jalankan pernyataan CREATE TABLE yang diperoleh pada langkah sebelumnya.

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

        Penting

        Saat menghapus tabel Kafka, hapus juga materialized view yang mereferensikannya. Jika tidak, migrasi materialized view gagal, menyebabkan seluruh migrasi gagal.

    4. Saat Migration Progress mencapai 100% dan Anda memastikan bahwa instans sumber telah menghentikan penulisan, klik Stop untuk mengakhiri migrasi dan melanjutkan.

      image

    5. Setelah sinkronisasi selesai, klik Completed.

      Penting

      Setelah langkah "Start synchronization" selesai, tugas migrasi menjadi terkunci dan tidak dapat diubah. Gunakan tombol Previous, Next, atau Refresh untuk melihat hasil langkah.

Langkah 4: Migrasi data bisnis untuk tabel non-MergeTree

Selama migrasi, tabel non-MergeTree hanya mendukung migrasi skema (seperti tabel MySQL) atau tidak dimigrasikan sama sekali (seperti tabel Log). Setelah migrasi, beberapa tabel di kluster tujuan mungkin memiliki skema tetapi tidak memiliki data. Selesaikan migrasi data secara manual sebagai berikut:

  1. Login ke kluster yang dikelola sendiri dan jalankan pernyataan berikut untuk mengidentifikasi tabel non-MergeTree yang memerlukan migrasi data:

    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. Login ke kluster tujuan dan gunakan fungsi remote untuk migrasi data.

Migrasi manual

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

image.png

Catatan

Di ApsaraDB for ClickHouse Enterprise Edition, terlepas dari apakah tabel sumber Anda di-sharding atau direplikasi, cukup buat tabel tujuan yang sesuai (abaikan parameter Engine 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 atau sharding.

Ikhtisar

Prosedur migrasi data 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 mendukung akses jaringan eksternal, tarik data dari kluster sumber ke kluster tujuan. Jika tidak, dorong data dari kluster sumber ke kluster tujuan.

  4. (Opsional) Anda dapat menghapus alamat IP kluster sumber dari kluster tujuan.

  5. Hapus pengguna read-only dari kluster sumber.

Prosedur

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

    1. Tambahkan pengguna read-only untuk 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. Buat tabel tujuan menggunakan pernyataan CREATE TABLE dari tabel sumber.

      Catatan

      Saat menjalankan pernyataan CREATE TABLE, ubah ENGINE menjadi SharedMergeTree tetapi jangan sertakan parameter apa pun karena kluster ApsaraDB for ClickHouse Enterprise Edition selalu mereplikasi tabel dan menyediakan parameter yang benar. Pertahankan klausa ORDER BY, PRIMARY KEY, PARTITION BY, SAMPLE BY, TTL, dan SETTINGS 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 jaringan eksternal, dorong data alih-alih menariknya karena fungsi Remote berfungsi untuk operasi SELECT maupun INSERT.

      • Di kluster tujuan, gunakan fungsi Remote 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')
      • Di kluster sumber, gunakan fungsi Remote untuk mendorong data ke kluster tujuan.

        image.png

        Catatan

        Untuk mengizinkan fungsi Remote terhubung ke kluster ApsaraDB for ClickHouse Enterprise Edition Anda, tambahkan 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 selama 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 saat pembuatan tugas migrasi tidak ada di kluster yang dikelola sendiri.

Tanyakan kluster yang tersedia di kluster yang dikelola sendiri menggunakan SQL dan perbarui konfigurasi tugas migrasi.

not exists

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

Buat tabel sistem yang hilang di kluster yang dikelola sendiri.

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

Zona waktu kluster yang dikelola sendiri dan tujuan tidak cocok.

Ubah zona waktu agar sesuai.

Compatibility mismatch with source version, which may cause incompatibility.

Pengaturan compatibility kluster tujuan tidak sesuai dengan versi kluster yang dikelola sendiri.

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

Penting

Mengatur compatibility ke versi yang lebih rendah akan menonaktifkan beberapa fitur baru, seperti ParallelReplica.

Pesan error dan solusi selama pemeriksaan skema

Pesan error

Makna

Solusi

ERROR: Not consistent across nodes.

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

Periksa dan selesaikan ketidaksesuaian di seluruh node di kluster yang dikelola sendiri.

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

Password tabel disembunyikan.

Atur display_secrets_in_show_and_select=1 dan restart.

Catatan: Ini memerlukan akun memiliki izin displaySecretsInShowAndSelect.

ERROR: Unsupported engine.

Mesin database di kluster yang dikelola sendiri tidak mendukung migrasi.

Pertimbangkan untuk beralih ke mesin database yang didukung tujuan.

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

Mesin database di kluster yang dikelola sendiri tidak mendukung migrasi.

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

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

Mesin database di kluster yang dikelola sendiri tidak mendukung migrasi.

Gunakan DTS (Data Transmission Service) untuk sinkronisasi atau buat database dengan nama yang sama untuk melewati exception migrasi.

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

Mesin database di kluster yang dikelola sendiri tidak mendukung migrasi.

Ia diabaikan secara otomatis selama 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。

ApsaraDB for ClickHouse Enterprise Edition tidak merekomendasikan penggunaan tabel terdistribusi.

Hapus tabel terdistribusi di kluster yang dikelola sendiri dan tanyakan tabel MergeTree dasarnya secara langsung setelah migrasi.

WARN:Please confirm referenced IP addresses are accessible.

Mesin eksternal direferensikan. Masalah akses dapat terjadi, tetapi tidak dijamin.

Konfirmasi apakah alamat IP yang direferensikan dapat diakses dari instans tujuan. Jika tidak, tetapkan konektivitas jaringan dan tambahkan IP ke daftar putih.

WARN:Only structure, does not support data migration.

Untuk beberapa mesin, hanya skema tabel yang dimigrasikan; migrasi data tidak didukung.

Migrasikan data secara manual menggunakan fungsi remote atau metode lain.

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

Migrasi data tidak didukung untuk beberapa mesin.

Buat tabel MergeTree dengan nama yang sama di kluster tujuan dan migrasikan data secara manual.

WARN:Ignored engine, please create table manually.

Migrasi data tidak didukung untuk beberapa mesin.

Lihat Langkah 4 dalam prosedur.

ERROR: Table has data in destination cluster.

Selama pemeriksaan skema, tabel yang sesuai di instans tujuan harus kosong.

Hapus data dari tabel yang sesuai di instans tujuan.

ERROR: Unsupported function origin.

Hanya fungsi yang ditentukan pengguna (Function(function.origin="SQLUserDefined")) yang didukung untuk migrasi.

Buat fungsi yang sesuai secara manual di instans tujuan.

Lainnya

Untuk masalah lain selama migrasi dan solusinya, lihat FAQ.