
如果你使用 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 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
Cain 是 Kubernetes 上的 Cassandra 备份和恢复工具,名称来源于 DC 漫画超级英雄 Cassandra Cain。
Cain 支持以下云存储服务:
Cain 现已成为 Helm https://github.com/helm/charts/tree/master/incubator/cassandra chart 的官方组成部分!
从 https://github.com/maorfr/cain/releases 下载最新版本,或使用 https://hub.docker.com/r/maorfr/cain%E3%80%82
mkdir -p $GOPATH/src/github.com/maorfr && cd $_ git clone https://github.com/maorfr/cain.git && cd cain make
Cain 按以下方式执行备份:
keyspace schema(使用 cqlsh)。nodetool snapshot 获取备份数据 - 在指定 namespace 中(根据 selector)的所有 Cassandra pod 中创建 keyspace 的快照。dst 下的 namespace/<cassandraClusterName>/keyspace/<keyspaceSchemaHash>/tag/ 路径。用法
$ cain backup --help backup cassandra cluster to cloud storage Usage: cain backup [flags] Flags: -b, --buffer-size float 用于文件复制的内存缓冲区大小(MB,每个文件的缓冲区)。覆盖 $CAIN_BUFFER_SIZE(默认 6.75) --cassandra-data-dir string Cassandra 数据目录。覆盖 $CAIN_CASSANDRA_DATA_DIR(默认 "/var/lib/cassandra/data") -c, --container string 要操作的容器名称。覆盖 $CAIN_CONTAINER(默认 "cassandra") --dst string 备份目标路径。示例:s3://bucket/cassandra。覆盖 $CAIN_DST -k, --keyspace string 要操作的键空间。覆盖 $CAIN_KEYSPACE -n, --namespace string 查找 Cassandra 集群的命名空间。覆盖 $CAIN_NAMESPACE(默认 "default") -p, --parallel int 并行复制的文件数量。设为 0 表示完全并行。覆盖 $CAIN_PARALLEL(默认 1) -l, --selector string 用于过滤的选择器。覆盖 $CAIN_SELECTOR(默认 "app=cassandra")
示例
备份到 AWS S3
cain backup \ -n default \ -l release=cassandra \ -k keyspace \ --dst s3://db-backup/cassandra
备份到 Azure Blob Storage
cain backup \ -n default \ -l release=cassandra \ -k keyspace \ --dst abs://my-account/db-backup-container/cassandra
备份到 Google Cloud Storage
cain backup \ -n default \ -l release=cassandra \ -k keyspace \ --dst gcs://db-backup/cassandra
Cain 按以下方式执行恢复:
schema,则恢复 schema。keyspace 中的所有表。src(位于 keyspace/<keyspaceSchemaHash>/tag/ 下)复制文件 - 仅支持恢复相同键空间 schema 的备份。nodetool refresh 加载新数据。用法
$ cain restore --help restore cassandra cluster from cloud storage Usage: cain restore [flags] Flags: -b, --buffer-size float 用于文件复制的内存缓冲区大小(MB,每个文件的缓冲区)。覆盖 $CAIN_BUFFER_SIZE(默认 6.75) --cassandra-data-dir string Cassandra 数据目录。覆盖 $CAIN_CASSANDRA_DATA_DIR(默认 "/var/lib/cassandra/data") -c, --container string 要操作的容器名称。覆盖 $CAIN_CONTAINER(默认 "cassandra") -k, --keyspace string 要操作的键空间。覆盖 $CAIN_KEYSPACE -n, --namespace string 查找 Cassandra 集群的命名空间。覆盖 $CAIN_NAMESPACE(默认 "default") -p, --parallel int 并行复制的文件数量。设为 0 表示完全并行。覆盖 $CAIN_PARALLEL(默认 1) -s, --schema string 要恢复的 schema 版本(可选)。覆盖 $CAIN_SCHEMA -l, --selector string 用于过滤的选择器。覆盖 $CAIN_SELECTOR(默认 "app=cassandra") --src string 恢复源路径。示例:s3://bucket/cassandra/namespace/cluster-name。覆盖 $CAIN_SRC -t, --tag string 要恢复的标签。覆盖 $CAIN_TAG --user-group string 应拥有恢复文件的用户和组。覆盖 $CAIN_USER_GROUP(默认 "cassandra:cassandra")
示例
从 S3 恢复
cain restore \ --src s3://db-backup/cassandra/default/ring01 \ -n default \ -k keyspace \ -l release=cassandra \ -t 20180903091624
从 Azure Blob Storage 恢复
cain restore \ --src abs://my-account/db-backup-container/cassandra/default/ring01 \ -n default \ -k keyspace \ -l release=cassandra \ -t 20180903091624
从 Google Cloud Storage 恢复
cain restore \ --src gcs://db-backup/cassandra/default/ring01 \ -n default \ -k keyspace \ -l release=cassandra \ -t 20180903091624
Cain 使用 cqlsh 描述 keyspace schema。可返回 schema 本身或 schema 文件的校验和(供 backup 和 restore 使用)。
用法
$ cain schema --help get schema of cassandra cluster Usage: cain schema [flags] Flags: -c, --container string 要操作的容器名称。覆盖 $CAIN_CONTAINER(默认 "cassandra") -k, --keyspace string 要操作的键空间。覆盖 $CAIN_KEYSPACE -n, --namespace string 查找 Cassandra 集群的命名空间。覆盖 $CAIN_NAMESPACE(默认 "default") -l, --selector string 用于过滤的选择器。覆盖 $CAIN_SELECTOR(默认 "app=cassandra") --sum 仅打印校验和。覆盖 $CAIN_SUM
示例
cain schema \ -n default \ -l release=cassandra \ -k keyspace
cain schema \ -n default \ -l release=cassandra \ -k keyspace \ --sum
Cain 命令支持使用环境变量代替标志。例如:
backup 命令可按示例执行:
cain backup \ -n default \ -l release=cassandra \ -k keyspace \ --dst s3://db-backup/cassandra
也可设置相应环境变量(CAIN_FLAG,使用下划线代替连字符):
export CAIN_NAMESPACE=default export CAIN_SELECTOR=release=cassandra export CAIN_KEYSPACE=keyspace export CAIN_DST=s3://db-backup/cassandra cain backup
由于 Cain 使用 https://github.com/maorfr/skbn%EF%BC%8C%E6%B7%BB%E5%8A%A0%E5%AF%B9%E9%A2%9D%E5%A4%96%E5%AD%98%E5%82%A8%E6%9C%8D%E5%8A%A1%E7%9A%84%E6%94%AF%E6%8C%81%E9%9D%9E%E5%B8%B8%E7%AE%80%E5%8D%95%E3%80%82%E9%98%85%E8%AF%BB 这篇文章 了解更多信息。
| Cain 版本 | Skbn 版本 |
|---|---|
| 0.6.0 | 0.5.0 |
| 0.5.1 | 0.4.2 |
| 0.5.0 | 0.4.1 |
| 0.4.2 | 0.4.1 |
| 0.4.1 | 0.4.1 |
| 0.4.0 | 0.4.0 |
| 0.3.0 | 0.3.0 |
| 0.2.0 | 0.2.0 |
| 0.1.0 | 0.1.1 |
Cain 按以下顺序获取凭证:
KUBECONFIG 环境变量 - Cain 将使用该配置文件中的当前上下文~/.kube/config 存在 - Cain 将使用该配置文件中的当前上下文,采用 https://github.com/kubernetes/client-go/tree/master/examples/out-of-cluster-client-configuration~/.kube/config 不存在 - Cain 将假设在 pod 内运行,并使用 https://github.com/kubernetes/client-go/tree/master/examples/in-cluster-client-configurationCain 使用默认的 AWS 凭证链。
Cain 使用 AZURE_STORAGE_ACCOUNT 和 AZURE_STORAGE_ACCESS_KEY 环境变量进行身份验证。
Cain 使用 Google 应用默认凭证。
主要流程:首先查找 GOOGLE_APPLICATION_CREDENTIALS 环境变量;如果未定义,将查找默认服务账户,若未配置则抛出错误。
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务