
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
clickhouse-backup是一款用于轻松实现ClickHouse数据库备份与恢复的工具,支持多种云存储服务。它提供了创建、上传、下载、恢复和删除备份等功能,适用于管理ClickHouse数据的备份策略,确保数据安全与可恢复性。
在安装了clickhouse-server的主机上运行:
shelldocker run -u $(id -u clickhouse) --rm -it --network host -v "/var/lib/clickhouse:/var/lib/clickhouse" \ -e CLICKHOUSE_PASSWORD="password" \ -e S3_BUCKET="clickhouse-backup" \ -e S3_ACCESS_KEY="access_key" \ -e S3_SECRET_KEY="secret" \ alexakulov/clickhouse-backup --help
NAME: clickhouse-backup - 用于轻松实现ClickHouse备份与恢复的工具,支持云存储 USAGE: clickhouse-backup <command> [-t, --tables=<db>.<table>] <backup_name> VERSION: unknown DESCRIPTION: 需以'root'或'clickhouse'用户运行 COMMANDS: tables 打印表列表 create 创建新备份 upload 将备份上传到远程存储 list 打印备份列表 download 从远程存储下载备份 restore 创建架构并从备份恢复数据 delete 删除特定备份 default-config 打印默认配置 freeze 冻结表 clean 删除'shadow'文件夹中的数据 server 运行API服务器 help, h 显示命令列表或单个命令帮助 GLOBAL OPTIONS: --config FILE, -c FILE 配置文件路径(默认:"/etc/clickhouse-backup/config.yml") --help, -h 显示帮助 --version, -v 打印版本
--tables指定特定表配置文件路径可通过$CLICKHOUSE_BACKUP_CONFIG环境变量定义,所有配置项可通过环境变量覆盖。
yamlgeneral: remote_storage: s3 # 远程存储类型(环境变量:REMOTE_STORAGE) max_file_size: 1099511627776 # 最大文件大小(环境变量:MAX_FILE_SIZE) disable_progress_bar: false # 禁用进度条(环境变量:DISABLE_PROGRESS_BAR) backups_to_keep_local: 0 # 本地保留备份数(环境变量:BACKUPS_TO_KEEP_LOCAL) backups_to_keep_remote: 0 # 远程保留备份数(环境变量:BACKUPS_TO_KEEP_REMOTE) log_level: info # 日志级别(环境变量:LOG_LEVEL) clickhouse: username: default # ClickHouse用户名(环境变量:CLICKHOUSE_USERNAME) password: "" # ClickHouse密码(环境变量:CLICKHOUSE_PASSWORD) host: localhost # ClickHouse主机(环境变量:CLICKHOUSE_HOST) port: 9000 # ClickHouse端口(环境变量:CLICKHOUSE_PORT) disk_mapping: {} # 磁盘映射(环境变量:CLICKHOUSE_DISK_MAPPING) skip_tables: # 跳过的表(环境变量:CLICKHOUSE_SKIP_TABLES) - system.* timeout: 5m # 超时时间(环境变量:CLICKHOUSE_TIMEOUT) freeze_by_part: false # 按分区冻结(环境变量:CLICKHOUSE_FREEZE_BY_PART) secure: false # 启用TLS(环境变量:CLICKHOUSE_SECURE) skip_verify: false # 跳过证书验证(环境变量:CLICKHOUSE_SKIP_VERIFY) sync_replicated_tables: true # 同步复制表(环境变量:CLICKHOUSE_SYNC_REPLICATED_TABLES) skip_sync_replica_timeouts: true # 跳过同步副本超时(环境变量:CLICKHOUSE_SKIP_SYNC_REPLICA_TIMEOUTS) azblob: endpoint_suffix: "core.windows.net" # Azure Blob端点后缀(环境变量:AZBLOB_ENDPOINT_SUFFIX) account_name: "" # 账户名(环境变量:AZBLOB_ACCOUNT_NAME) account_key: "" # 账户密钥(环境变量:AZBLOB_ACCOUNT_KEY) sas: "" # SAS令牌(环境变量:AZBLOB_SAS) container: "" # 容器名(环境变量:AZBLOB_CONTAINER) path: "" # 路径(环境变量:AZBLOB_PATH) compression_level: 1 # 压缩级别(环境变量:AZBLOB_COMPRESSION_LEVEL) compression_format: tar # 压缩格式(环境变量:AZBLOB_COMPRESSION_FORMAT) sse_key: "" # 服务器端加密密钥(环境变量:AZBLOB_SSE_KEY) s3: access_key: "" # S3访问密钥(环境变量:S3_ACCESS_KEY) secret_key: "" # S3密钥(环境变量:S3_SECRET_KEY) bucket: "" # 存储桶名(环境变量:S3_BUCKET) endpoint: "" # 端点(环境变量:S3_ENDPOINT) region: us-east-1 # 区域(环境变量:S3_REGION) acl: private # ACL(环境变量:S3_ACL) force_path_style: false # 强制路径样式(环境变量:S3_FORCE_PATH_STYLE) path: "" # 路径(环境变量:S3_PATH) disable_ssl: false # 禁用SSL(环境变量:S3_DISABLE_SSL) part_size: 536870912 # 分块大小(环境变量:S3_PART_SIZE) compression_level: 1 # 压缩级别(环境变量:S3_COMPRESSION_LEVEL) # 支持'tar', 'gzip', 'zstd', 'brotli' compression_format: tar # 压缩格式(环境变量:S3_COMPRESSION_FORMAT) # 空(默认)、AES256或aws:kms sse: AES256 # 服务器端加密(环境变量:S3_SSE) disable_cert_verification: false # 禁用证书验证(环境变量:S3_DISABLE_CERT_VERIFICATION) storage_class: STANDARD # 存储类别(环境变量:S3_STORAGE_CLASS) gcs: credentials_file: "" # GCS凭证文件(环境变量:GCS_CREDENTIALS_FILE) credentials_json: "" # GCS凭证JSON(环境变量:GCS_CREDENTIALS_JSON) bucket: "" # 存储桶名(环境变量:GCS_BUCKET) path: "" # 路径(环境变量:GCS_PATH) compression_level: 1 # 压缩级别(环境变量:GCS_COMPRESSION_LEVEL) compression_format: tar # 压缩格式(环境变量:GCS_COMPRESSION_FORMAT) cos: url: "" # COS URL(环境变量:COS_URL) timeout: 2m # 超时时间(环境变量:COS_TIMEOUT) secret_id: "" # 密钥ID(环境变量:COS_SECRET_ID) secret_key: "" # 密钥(环境变量:COS_SECRET_KEY) path: "" # 路径(环境变量:COS_PATH) compression_format: tar # 压缩格式(环境变量:COS_COMPRESSION_FORMAT) compression_level: 1 # 压缩级别(环境变量:COS_COMPRESSION_LEVEL) api: listen: "localhost:7171" # API监听地址(环境变量:API_LISTEN) enable_metrics: true # 启用指标(环境变量:API_ENABLE_METRICS) enable_pprof: false # 启用pprof(环境变量:API_ENABLE_PPROF) username: "" # API用户名(环境变量:API_USERNAME) password: "" # API密码(环境变量:API_PASSWORD) secure: false # 启用TLS(环境变量:API_SECURE) certificate_file: "" # 证书文件(环境变量:API_CERTIFICATE_FILE) private_key_file: "" # 私钥文件(环境变量:API_PRIVATE_KEY_FILE) ftp: address: "" # FTP地址(环境变量:FTP_ADDRESS) timeout: 2m # 超时时间(环境变量:FTP_TIMEOUT) username: "" # FTP用户名(环境变量:FTP_USERNAME) password: "" # FTP密码(环境变量:FTP_PASSWORD) tls: false # 启用TLS(环境变量:FTP_TLS) path: "" # 路径(环境变量:FTP_PATH) compression_format: tar # 压缩格式(环境变量:FTP_COMPRESSION_FORMAT) compression_level: 1 # 压缩级别(环境变量:FTP_COMPRESSION_LEVEL) debug: false # 启用调试(环境变量:FTP_DEBUG) sftp: address: "" # SFTP地址(环境变量:SFTP_ADDRESS) username: "" # SFTP用户名(环境变量:SFTP_USERNAME) password: "" # SFTP密码(环境变量:SFTP_PASSWORD) key: "" # SFTP密钥(环境变量:SFTP_KEY) path: "" # 路径(环境变量:SFTP_PATH) compression_format: tar # 压缩格式(环境变量:SFTP_COMPRESSION_FORMAT) compression_level: 1 # 压缩级别(环境变量:SFTP_COMPRESSION_LEVEL)
切勿修改/var/lib/clickhouse/backup目录中的文件权限。该路径包含硬链接,同一磁盘上的所有硬链接权限始终相同。若修改备份路径中硬链接的权限/所有者/属性,ClickHouse工作文件的权限也会随之改变,可能导致数据损坏。
通过clickhouse-backup server命令启动REST API服务器,API接口与CLI命令功能基本对应。
获取表列表
GET /backup/tablescurl -s localhost:7171/backup/tables | jq .创建备份
POST /backup/createtable: 指定表(如default.billing)name: 备份名称curl -s 'localhost:7171/backup/create?table=default.billing&name=billing_test' -X POST上传备份
POST /backup/upload/<BACKUP_NAME>diff-from: 基于增量备份的基准备份curl -s localhost:7171/backup/upload/my_backup -X POST | jq .获取备份列表
GET /backup/listcurl -s localhost:7171/backup/list | jq .Size字段下载备份
POST /backup/download/<BACKUP_NAME>curl -s localhost:7171/backup/download/my_backup -X POST | jq .恢复备份
POST /backup/restore/<BACKUP_NAME>table: 指定表schema: 仅恢复架构data: 仅恢复数据curl -s 'localhost:7171/backup/restore/my_backup?table=default.billing' -X POST | jq .删除备份
POST /backup/delete/remote/<BACKUP_NAME>POST /backup/delete/local/<BACKUP_NAME>curl -s localhost:7171/backup/delete/local/my_backup -X POST | jq .冻结表
POST /backup/freezecurl -s localhost:7171/backup/freeze -X POST | jq .清理shadow文件夹
POST /backup/cleancurl -s localhost:7171/backup/clean -X POST | jq .获取操作状态
GET /backup/statuscurl -s localhost:7171/backup/status | jq .获取当前配置
GET /backup/configcurl -s localhost:7171/backup/config | jq -r .Result > current_config.yml获取默认配置
GET /backup/config/defaultcurl -s localhost:7171/backup/config/default | jq -r .Result > default_config.yml更新配置
POST /backup/configcurl -v localhost:7171/backup/config -X POST --data-binary '@new_config.yml'您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务