ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

ScyllaDB Nodetool enablebackup 命令详解:开启增量备份的完整指南

ScyllaDB Nodetool enablebackup 命令详解:开启增量备份的完整指南 ScyllaDB Nodetool enablebackup 命令详解开启增量备份的完整指南【免费下载链接】scylladbNoSQL data store using the Seastar framework, compatible with Apache Cassandra and Amazon DynamoDB项目地址: https://gitcode.com/GitHub_Trending/sc/scylladbnodetool enablebackup是 ScyllaDB 运维中开启增量备份incremental backup的核心命令。本文以官方文档 docs/operating-scylla/nodetool-commands/enablebackup.rst 为骨架结合仓库中的命令行实现、REST API 接口、配置文件与自动化测试完整讲解该命令的用法、工作原理、默认行为与配套命令帮助你准确掌握 ScyllaDB 增量备份的开启、关闭与状态查询。命令功能与基本用法enablebackup用于启用增量备份Enables incremental backup。启用后ScyllaDB 会为后续刷盘flush或流式传输stream产生的每个 SSTable 在 keyspace 数据目录的backups/子目录中创建一个硬链接hard link从而只备份自上次快照以来发生变化的数据。最基本的用法是不带任何参数执行nodetool enablebackup该命令不需要指定 keyspace 或 table作用范围是集群中当前节点上的全部 keyspace 与表。执行成功后没有任何标准输出增量备份开关即被置为开启状态。默认状态增量备份默认关闭官方文档明确指出增量备份状态的默认值是not running即默认不启用。这一默认行为在仓库中有多处印证配置文件 conf/scylla.yaml 中incremental_backups选项的默认值为false注释说明开启后 Scylla 会为本地刷盘或流式传输的每个 SSTable 在 keyspace 数据的backups/子目录中创建硬链接并强调删除这些链接是运维人员的责任配置定义 db/config.cc 中同样声明默认值为false并注明该项属于 Common automatic backup settings通用自动备份设置组。因此在未显式修改配置或执行nodetool enablebackup之前集群的增量备份处于关闭状态。你可以通过 nodetool statusbackup 随时查询当前状态。命令背后的调用链从 CLI 到 REST API 再到数据库在 ScyllaDB 中nodetool 系列命令本身并不直接操作数据而是通过内部 REST API 调用 Scylla 节点。enablebackup的完整调用链如下1. 命令注册与处理函数在 tools/scylla-nodetool.cc 中enablebackup_operation的实现只有一行核心逻辑void enablebackup_operation(scylla_rest_client client, const bpo::variables_map vm) { client.post(/storage_service/incremental_backups, {{value, true}}); }即向 REST 端点POST /storage_service/incremental_backups发送valuetrue参数。命令的注册信息名称、描述、文档链接位于同一文件的 tools/scylla-nodetool.cc。2. REST API 端点的定义该端点在 api/column_family.cc 中实现服务端解析查询参数value支持True/true/1三种写法然后通过db.invoke_on_all在每个 shard 上执行三件事调用db.set_enable_incremental_backups(value)更新数据库级开关遍历所有 keyspace调用ks.set_incremental_backups(value)保持 keyspace 级一致遍历所有表table调用table-set_incremental_backups(value)保持表级一致。这样设计的目的正如源码注释所说Change both KS and CF, so they are in sync——确保数据库、keyspace、表三级配置状态同步避免出现部分生效的不一致状态。3. API 文档定义REST 端点的结构定义在 api/api-doc/storage_service.json 中GET /storage_service/incremental_backups用于查询增量备份是否启用返回布尔值POST请求携带必填参数valueSet to true for incremental backup enabled用于设置开关。相关配套命令enablebackup通常与以下两个命令配合使用构成增量备份开关的完整操作集命令功能对应文档nodetool enablebackup启用增量备份enablebackup.rstnodetool disablebackup禁用增量备份disablebackup.rstnodetool statusbackup显示增量备份状态statusbackup.rstdisablebackup关闭增量备份其实现与enablebackup完全对称向同一端点发送valuefalsevoid disablebackup_operation(scylla_rest_client client, const bpo::variables_map vm) { client.post(/storage_service/incremental_backups, {{value, false}}); }对应源码见 tools/scylla-nodetool.cc。statusbackup查询当前状态statusbackup通过GET /storage_service/incremental_backups获取布尔状态并输出结果只可能是running或not running两者之一void statusbackup_operation(scylla_rest_client client, const bpo::variables_map vm) { auto status client.get(/storage_service/incremental_backups); fmt::print(std::cout, {}\n, status.GetBool() ? running : not running); }对应源码见 tools/scylla-nodetool.cc。值得一提的是状态查询端点在 api/column_family.cc 中采用了map_reduce聚合逻辑只要任一 keyspace 启用了增量备份即返回true并在注释中说明这样做是为了避免与并行状态变更操作产生冲突。通过配置文件启用增量备份替代方案除了运行时使用 nodetool 命令也可以在启动时通过配置文件持久化开启增量备份。编辑 conf/scylla.yaml取消注释并设置# Set to true to have Scylla create a hard link to each sstable # flushed or streamed locally in a backups/ subdirectory of the # keyspace data. Removing these links is the operators # responsibility. incremental_backups: true两种方式的区别在于配置文件在节点启动时生效并持久化而nodetool enablebackup在运行时即时生效但重启后不保留除非同时修改配置。实际生产中建议在配置文件中固化基线策略再用 nodetool 命令做临时的运行时调整并通过nodetool statusbackup验证最终状态。测试验证命令行为有据可查仓库的自动化测试 test/nodetool/test_backup.py 直接验证了这两个命令的 HTTP 行为def test_disablebackup(nodetool): nodetool(disablebackup, expected_requests[ expected_request(POST, /storage_service/incremental_backups, params{value: false})]) def test_enablebackup(nodetool): nodetool(enablebackup, expected_requests[ expected_request(POST, /storage_service/incremental_backups, params{value: true})])同一文件中的test_statusbackup见 test/nodetool/test_backup.py则验证了GET请求在返回false与true时分别输出not running与running与文档描述完全一致。此外dist/common/nodetool-completion 提供了该命令的 shell 补全支持方便命令行日常操作。常见运维场景与注意事项开启后立即验证执行nodetool enablebackup后建议用nodetool statusbackup确认输出为running备份目录与清理责任开启后每个刷盘/流式传输的 SSTable 会在 keyspace 数据目录的backups/子目录中产生硬链接。这些链接的清理是运维人员的责任ScyllaDB 不会自动清理长期运行可能累积占用磁盘空间参见 conf/scylla.yaml 与 db/config.cc 中的说明与全量备份配合增量备份通常配合nodetool snapshot见 snapshot.rst使用先建立基线快照再通过增量备份持续累积变更数据禁止使用该命令规避配置若需求是持久开启应优先修改 conf/scylla.yaml 中的incremental_backups: true而非仅依赖运行时命令。总结nodetool enablebackup是 ScyllaDB 增量备份体系中最基础的开关命令默认状态为not running执行后立即将数据库、keyspace、表三级的增量备份开关置为开启。其底层通过 REST 端点POST /storage_service/incremental_backups实现tools/scylla-nodetool.cc并可通过statusbackup查询、disablebackup关闭。理解这条命令的调用链与默认行为是安全使用 ScyllaDB 增量备份、制定可靠备份策略的第一步。更多 nodetool 命令总览可参考 nodetool.rst 与命令索引 nodetool-index.rst。【免费下载链接】scylladbNoSQL data store using the Seastar framework, compatible with Apache Cassandra and Amazon DynamoDB项目地址: https://gitcode.com/GitHub_Trending/sc/scylladb创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表