全部产品
Search
文档中心

ApsaraDB for ClickHouse:Mencadangkan dan memulihkan data menggunakan perintah BACKUP dan RESTORE

更新时间:Dec 18, 2025

Anda dapat menggunakan perintah BACKUP dan RESTORE untuk mencadangkan data dari ClickHouse ke Object Storage Service (OSS) guna arsip jangka panjang berbiaya rendah. Perintah-perintah ini juga dapat digunakan untuk memigrasikan kluster ClickHouse yang dikelola sendiri ke ApsaraDB for ClickHouse. Perintah SQL bawaan ClickHouse ini mendukung pencadangan dan pemulihan objek seperti database dan tabel. Topik ini menjelaskan sintaksis perintah BACKUP dan RESTORE serta memberikan contoh penggunaannya.

Catatan

  • Anda tidak dapat mencadangkan dan memulihkan data antara Community-compatible Edition dan Enterprise Edition karena mesin database dan tabelnya tidak kompatibel.

  • Selama proses pencadangan dan pemulihan, pemanfaatan CPU kluster meningkat. Anda dapat menyesuaikan parameter seperti backup_threads dan restore_threads untuk membatasi konsumsi sumber daya. Penggunaan memori tidak terpengaruh secara signifikan.

Prasyarat

Sintaks

 BACKUP|RESTORE
  TABLE [db.]table_name [AS [db.]table_name_in_backup]
    [PARTITION[S] partition_expr [,...]] |
  DICTIONARY [db.]dictionary_name [AS [db.]name_in_backup] |
  DATABASE database_name [AS database_name_in_backup]
    [EXCEPT TABLES ...] |
  TEMPORARY TABLE table_name [AS table_name_in_backup] |
  VIEW view_name [AS view_name_in_backup] |
  ALL [EXCEPT {TABLES|DATABASES}...] } [,...]
  [ON CLUSTER 'cluster_name']
  TO|FROM File('<path>/<filename>') | Disk('<disk_name>', '<path>/') | S3('<S3 endpoint>/<path>', '<Access key ID>', '<Access key Secret>')
  [SETTINGS base_backup = File('<path>/<filename>') | Disk(...) | S3('<S3 endpoint>/<path>', '<Access key ID>', '<Access key Secret>')]

Community-compatible Edition

Perintah BACKUP dan RESTORE mendukung pencadangan dan pemulihan instans, database, dan tabel. Bagian ini menggunakan tabel sebagai contoh untuk menjelaskan proses pencadangan.

Mencadangkan data ke OSS

Unggah langsung ke OSS

BACKUP TABLE default.data ON CLUSTER default TO S3('https://<yourBucketName>.<yourEndpoint>/data/', 'yourAccessKeyID', 'yourAccessKeySecret')

Cadangkan ke disk lokal lalu unggah ke OSS

Penting

ApsaraDB for ClickHouse tidak mendukung pencadangan data ke disk lokal.

  1. Konfigurasikan pencadangan.

    Anda dapat menambahkan file /etc/clickhouse-server/config.d/backup_disk.xml untuk menentukan tujuan pencadangan.

    Pada contoh berikut, tag <storage_configuration> mendefinisikan disk kustom bernama backups yang menggunakan path fisik /backups/. Tag <backups> menentukan bahwa hanya disk backups yang dapat digunakan untuk pencadangan dan file cadangan disimpan di folder /backups/.

    <clickhouse>
        <storage_configuration>
            <disks>
                <backups>
                    <type>local</type>
                    <path>/backups/</path>
                </backups>
            </disks>
        </storage_configuration>
        <backups>
            <allowed_disk>backups</allowed_disk>
            <allowed_path>/backups/</allowed_path>
        </backups>
    </clickhouse>
  2. Cadangkan data ke disk lokal.

    BACKUP TABLE test.table TO Disk('backups', 'data_1.zip')
  3. Gunakan ossutil untuk mengunggah cadangan ke OSS.

    ossutil cp data_1.zip oss://<yourBucketName>/data/data_1.zip -i <yourAccessKeyID> -k <yourAccessKeySecret> -e <yourEndpoint>

Memulihkan data dari OSS

-- Pulihkan data ke node tunggal dari file ZIP.
RESTORE TABLE default.data FROM S3('https://<yourBucketName>.<yourEndpoint>/data/data_1.zip', 'yourAccessKeyID', 'yourAccessKeySecret')
-- Pulihkan data ke semua node dari direktori.
RESTORE TABLE default.data ON CLUSTER default FROM S3('https://<yourBucketName>.<yourEndpoint>/data/', 'yourAccessKeyID', 'yourAccessKeySecret')

Enterprise Edition

Mencadangkan data ke OSS

BACKUP TABLE default.data TO S3('https://<yourBucketName>.<yourEndpoint>/data/data_1.zip', 'yourAccessKeyID', 'yourAccessKeySecret')

Memulihkan data dari OSS

RESTORE TABLE default.data FROM S3('https://<yourBucketName>.<yourEndpoint>/data/data_1.zip', 'yourAccessKeyID', 'yourAccessKeySecret')

Parameter optimasi kinerja

Cara melihat

-- Parameter tingkat pengguna
SELECT * FROM system.settings WHERE name LIKE '%backup%' OR name LIKE '%restore%';
-- Parameter tingkat server
SELECT * FROM system.server_settings WHERE name LIKE '%backup%' OR name LIKE '%restore%';

Deskripsi parameter

  • backup

    Jenis parameter

    Nama parameter

    Deskripsi

    Parameter tingkat server

    backup_threads

    Perlu restart. Membatasi jumlah thread untuk pencadangan. Maksimum default adalah 16.

    max_backup_bandwidth_for_server

    Perlu restart. Membatasi bandwidth total untuk semua pencadangan pada satu server.

    max_backups_io_thread_pool_size

    Perlu restart. Membatasi jumlah thread untuk operasi I/O pencadangan.

    max_backups_io_thread_pool_free_size

    Perlu restart. Membatasi jumlah thread menganggur dalam kolam thread untuk operasi I/O pencadangan.

    Parameter tingkat pengguna

    max_backup_bandwidth

    Membatasi bandwidth untuk satu pekerjaan cadangan.

  • restore

    Jenis parameter

    Nama parameter

    Deskripsi

    Parameter tingkat server

    restore_threads

    Perlu restart. Membatasi jumlah thread untuk pemulihan. Maksimum default adalah 16.

FAQ

Bagaimana cara mengatasi error "Not found backup engine S3"?

Error ini terjadi karena instans menjalankan versi sebelumnya yang tidak mendukung pencadangan data ke OSS. Untuk mengatasi masalah ini, tingkatkan instans ke versi 23.8 atau lebih baru. Untuk kluster ClickHouse yang dikelola sendiri, Anda dapat mencadangkan data ke disk lokal lalu mengunggah cadangan tersebut ke OSS.

Bagaimana cara mengatasi error "Using archives with backups on clusters is disabled"?

Pencadangan kluster untuk multi-node deployment tidak mendukung format arsip ZIP. Gunakan folder untuk path S3, seperti pada contoh berikut.

BACKUP TABLE default.data ON CLUSTER default TO S3('https://<yourBucketName>.<yourEndpoint>/data/', 'yourAccessKeyID', 'yourAccessKeySecret')

Apa yang harus saya lakukan jika koneksi antara clickhouse-client dan ClickHouse terputus setelah saya menjalankan perintah BACKUP?

Tugas pencadangan berjalan di latar belakang dan tidak terpengaruh jika koneksi terputus. Anda dapat menjalankan perintah select * from system.backups; untuk melihat progres pekerjaan pencadangan.

Untuk menjalankan tugas secara asinkron, tambahkan ASYNC ke perintah BACKUP.

BACKUP TABLE default.data ON CLUSTER default TO S3('https://<yourBucketName>.<yourEndpoint>/data/data_1.zip', 'yourAccessKeyID', 'yourAccessKeySecret') ASYNC;

Berapa kecepatan perintah BACKUP dan RESTORE?

Kecepatan proses pencadangan dan pemulihan dipengaruhi oleh CPU, throughput disk, throughput jaringan, dan bandwidth OSS. Komponen bottleneck menentukan kecepatan aktual.

  • Untuk ApsaraDB for ClickHouse, Anda dapat meningkatkan spesifikasi kluster untuk menambah CPU, throughput disk, dan throughput jaringan.

  • Untuk OSS: Untuk informasi selengkapnya, lihat Batasan dan metrik performa.

Bagaimana cara mencadangkan dan memulihkan node satu per satu di ApsaraDB for ClickHouse?

  1. Anda dapat menanyakan alamat IP node.

    SELECT * FROM system.clusters;
  2. Anda dapat terhubung langsung ke node instans menggunakan clickhouse-client dan menonaktifkan pengaturan wajib ON CLUSTER default.

    Catatan

    Pengaturan parameter ini hanya berlaku untuk ApsaraDB for ClickHouse Alibaba Cloud. Jangan konfigurasikan parameter ini untuk kluster ClickHouse yang dikelola sendiri.

    set enforce_on_cluster_default_for_ddl = 0;
  3. Anda dapat menjalankan perintah BACKUP.

    BACKUP TABLE default.data TO S3('https://<yourBucketName>.<yourEndpoint>/data/data_1.zip', 'yourAccessKeyID', 'yourAccessKeySecret')
  4. Anda dapat menjalankan perintah RESTORE.

    RESTORE TABLE default.data FROM S3('https://<yourBucketName>.<yourEndpoint>/data/data_1.zip', 'yourAccessKeyID', 'yourAccessKeySecret')