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_threadsdanrestore_threadsuntuk membatasi konsumsi sumber daya. Penggunaan memori tidak terpengaruh secara signifikan.
Prasyarat
Untuk OSS:
Anda telah memberikan akses ClickHouse ke bucket OSS tersebut. Untuk informasi selengkapnya, lihat Contoh umum kebijakan bucket.
Anda telah memperoleh informasi Endpoint untuk wilayah Anda.
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
ApsaraDB for ClickHouse tidak mendukung pencadangan data ke disk lokal.
Konfigurasikan pencadangan.
Anda dapat menambahkan file
/etc/clickhouse-server/config.d/backup_disk.xmluntuk menentukan tujuan pencadangan.Pada contoh berikut, tag
<storage_configuration>mendefinisikan disk kustom bernamabackupsyang menggunakan path fisik/backups/. Tag<backups>menentukan bahwa hanya diskbackupsyang 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>Cadangkan data ke disk lokal.
BACKUP TABLE test.table TO Disk('backups', 'data_1.zip')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?
Anda dapat menanyakan alamat IP node.
SELECT * FROM system.clusters;Anda dapat terhubung langsung ke node instans menggunakan clickhouse-client dan menonaktifkan pengaturan wajib
ON CLUSTER default.CatatanPengaturan 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;Anda dapat menjalankan perintah
BACKUP.BACKUP TABLE default.data TO S3('https://<yourBucketName>.<yourEndpoint>/data/data_1.zip', 'yourAccessKeyID', 'yourAccessKeySecret')Anda dapat menjalankan perintah
RESTORE.RESTORE TABLE default.data FROM S3('https://<yourBucketName>.<yourEndpoint>/data/data_1.zip', 'yourAccessKeyID', 'yourAccessKeySecret')