v2.8.3
NEW FEATURES
- support tables with local and
plain_rewritabledisks in one storage policy: ClickHouse rejects FREEZE for them, socreatehardlinks the local parts intoshadowthe way FREEZE does and copies the parts of the plain disks from the bucket, with merges and moves of the table stopped (needsSYSTEM MERGESandSYSTEM MOVESgrants, moves are now stopped for every table on a storage policy with plain disks), plain disks inskip_disksare skipped,clickhouse.disk_mappingis applied to the part paths,sync_replicated_tables,freeze_by_part_whereandignore_not_exists_error_during_freezeapply to such tables as they apply to FREEZE, parts on object disks with local metadata (includingcacheandencryptedwrappers over them) next to plain disks are rejected, defaultrestoreof such tables requires ClickHouse 25.4+ (older versions rejectATTACH PARTfor a storage policy with plain disks, userestore_as_attachthere) - support Antalya
metadata_type=casdisks withuse_embedded_backup_restore: true,create_remoteno longer fails withdisk "cas" ... is not exists locallyandrestore_remoteno longer fails withunsupported <metadata_type>cas</metadata_type>, without embedded mode a table on a CAS disk fails with an explicit error, becauseFREEZEon CAS leaves no local files to hardlink, fix #1562
IMPROVEMENTS
rebasecopies parts, archives and object disk blobs of one table in parallel, previously everyCopyObjectinside a table ran strictly one by one andgeneral.rebase_concurrencylimited only the number of tables, now it also limits parallelCopyObjectrequests per table, so up torebase_concurrency^2copies are in flight,rebaselogs the required backups chain,rebase_concurrencyandmax_copy_objecton start andrebase table start/rebase table finishwithprogress,duration,copied_sizeandobject_disk_sizefor each table atinfolevel, fix #1648- update go dependencies: aws-sdk-go-v2, aws-sdk-go-v2/feature/s3/transfermanager 0.5.1, cloud.google.com/go/storage 1.70.0, clickhouse-go/v2 2.50.0, klauspost/pgzip 1.3.0, pkg/sftp 1.13.12, cos-go-sdk-v5 0.7.76, google.golang.org/api 0.309.0 and others
BUG FIXES
restoreandrestore_remoteno longer drop and recreate every user-defined SQL function from the backup, previously each function gotDROP FUNCTION IF EXISTS+CREATE OR REPLACE FUNCTION(function was unavailable between them) even with--tablesfor a single table, and silently rolled back definitions changed after the backup; now existing functions are read fromsystem.functionsfirst, a missing function is created withCREATE FUNCTION IF NOT EXISTS, an identical one is skipped without any query (soCREATE FUNCTION/DROP FUNCTIONgrants are not required), a changed one is kept with a warning and overwritten by atomicCREATE OR REPLACE FUNCTIONonly with--rm, the same as tables and RBAC objects; functions are restored before tables, so tables and materialized views which use UDF can be created on a clean server;restore --dry-runandrestore_remote --dry-runshowfunctionswithcreate,replace,keep_existingorskip_identicalfor each function, fix #1636- FIPS builds no longer overwrite an explicit
AWS_USE_FIPS_ENDPOINT,clickhouse-backup-fipsset it totrueunconditionally at startup, so with a customs3.endpoint(MinIO, Ceph RGW, other S3-compatible storage) every S3 call failed withS3 ResolveEndpoint: endpoint rule error, A custom endpoint cannot be combined with FIPSandAWS_USE_FIPS_ENDPOINT=falsehad no effect; it is stilltrueby default when unset, the variable only selects AWSs3-fips.*hostnames and does not affect the FIPS 140-3 crypto module s3.allow_multipart_downloadnow uses byte-range GETs by default, news3.multipart_download_type(envS3_MULTIPART_DOWNLOAD_TYPE, defaultrange):rangerequests byte ranges ofchunk_sizewithIf-Matchset to the multipart object ETag,partkeeps the previous partNumber GETs, which send the first part ETag asIf-Matchand get HTTP 412 PreconditionFailed on Ceph RGW (Hetzner Object Storage) from part 2 on (each part has its own ETag); the setting applies only when multipart download actually runs (allow_multipart_download: trueanddownload_max_bytes_per_second: 0), on other S3-compatible storage (NuObject) part-number downloads failed withunexpected EOF, fix #1632, #1655rebasewithremote_storage: azblobno longer fails withBlobNotFoundfor databases and tables whose names need encoding, such astest-dbor the.inner_id.table of a materialized view, the server-side copy source URL is escaped now, fix #1637- add
s3.timeout(envS3_TIMEOUT, default30m, empty or0disables it) as HTTP response header timeout for S3 requests including object disk connections, previously S3 had no per-request timeout andcreate_remotecould hang forever inCopyObject/UploadPartCopywhen S3 accepted the request and never answered, a timed out request is retried on a new connection;timeoutalready present in configs was silently ignored before, it accepts a duration (30m) or a number of seconds (3000), fix #1645 downloadof a regular (not embedded) backup no longer fails withChown backup disk: lstat .../<backup>: no such file or directorywhen running as root withuse_embedded_backup_restore: trueandclickhouse.embedded_backup_diskconfigured, fix #1653- fix
--link-destquoting in the rsync upload example (test/integration/rsync/upload.sh), rsync reported--link-dest arg does not existand copied every file instead of hardlinking unchanged parts, rsync calls in upload / download examples use--protect-args