From 2acc019830fd3dec9247ff910008d3c3ea05c929 Mon Sep 17 00:00:00 2001 From: Gary Gray <137797428+ggray-cb@users.noreply.github.com> Date: Wed, 1 Apr 2026 14:05:28 -0400 Subject: [PATCH 01/13] Updated antora.yml and HEAD.yml for the 8.1 branch. --- antora.yml | 4 +- .../DOC-13717_REST_API_for_appTelemetry.yml | 49 ------------------- preview/HEAD.yml | 30 ++++++------ 3 files changed, 16 insertions(+), 67 deletions(-) delete mode 100644 preview/DOC-13717_REST_API_for_appTelemetry.yml diff --git a/antora.yml b/antora.yml index 648b5dc275..8c1c43470c 100644 --- a/antora.yml +++ b/antora.yml @@ -1,10 +1,10 @@ name: server -version: '8.0' +version: '8.1' asciidoc: attributes: ui-name: Server Web Console product-name: Server -# prerelease: Prerelease +prerelease: Prerelease title: Couchbase Server start_page: introduction:intro.adoc nav: diff --git a/preview/DOC-13717_REST_API_for_appTelemetry.yml b/preview/DOC-13717_REST_API_for_appTelemetry.yml deleted file mode 100644 index 7253dd01f1..0000000000 --- a/preview/DOC-13717_REST_API_for_appTelemetry.yml +++ /dev/null @@ -1,49 +0,0 @@ -sources: - docs-devex: - branches: release/8.0 - - docs-analytics: - branches: release/8.0 - - couchbase-cli: - branches: morpheus - startPaths: docs/ - - backup: - branches: morpheus - startPaths: docs/ - - #analytics: - # url: ../../docs-includes/docs-analytics - # branches: HEAD - - cb-swagger: - url: https://github.com/couchbaselabs/cb-swagger - branches: release/8.0 - start_path: docs - - # Minimal SDK build - docs-sdk-common: - branches: [release/8.0, release/8.0.1] - docs-sdk-cxx: - branches: [release/1.2] - docs-sdk-java: - branches: [release/3.11] - docs-sdk-python: - branches: [release/4.6] - docs-sdk-ruby: - branches: [temp/3.7] - docs-sdk-nodejs: - branches: [release/4.2] - docs-sdk-php: - branches: [temp/4.5] - docs-sdk-dotnet: - branches: [release/3.5] - docs-sdk-extensions: - branches: [main] - docs-sdk-go: - branches: [release/2.12] - docs-sdk-kotlin: - branches: [release/3.10] - docs-sdk-scala: - branches: [release/3.11] diff --git a/preview/HEAD.yml b/preview/HEAD.yml index 366f102297..bfbba5c0b2 100644 --- a/preview/HEAD.yml +++ b/preview/HEAD.yml @@ -1,29 +1,27 @@ sources: docs-devex: - branches: release/8.0 + branches: release/8.1 - docs-analytics: - branches: release/8.0 +# docs-analytics: +# branches: release/8.0 couchbase-cli: - branches: morpheus + url: https://github.com/couchbaselabs/couchbase-cli-doc + branches: master startPaths: docs/ - backup: - branches: morpheus - startPaths: docs/ - - #analytics: - # url: ../../docs-includes/docs-analytics - # branches: HEAD +# backup: +# branches: master +# startPaths: docs/ cb-swagger: url: https://github.com/couchbaselabs/cb-swagger - branches: release/8.0 + branches: release/8.1 start_path: docs # Minimal SDK build - docs-sdk-common: - branches: [release/8.0] - docs-sdk-java: - branches: [3.8-api] +# docs-sdk-common: +# branches: [release/8.0] +# docs-sdk-java: +# branches: [3.11] + From 2f9bffa7be3f09c5fe42947c7024b664968df63a Mon Sep 17 00:00:00 2001 From: Ray Offiah <77050471+RayOffiah@users.noreply.github.com> Date: Fri, 17 Apr 2026 12:33:53 +0100 Subject: [PATCH 02/13] [DOC-13921]: XDCR: Tuners to Throttle DCP Control Flow & Async Events Channel Length (#4107) * [DOC-13921]: XDCR: Tuners to Throttle DCP Control Flow & Async Events Channel Length Documented XDCR settings for throttling DCP control flow and asynchronous event channel length. Added new reference page and updated navigation. Signed-off-by: Ray Offiah * Update modules/xdcr-reference/pages/xdcr-lowering-memory-footprint.adoc Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Update modules/xdcr-reference/pages/xdcr-lowering-memory-footprint.adoc Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Update modules/rest-api/pages/rest-xdcr-adv-settings.adoc Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * [DOC-13921]: XDCR: Tuners to Throttle DCP Control Flow & Async Events Channel Length Documented XDCR settings for throttling DCP control flow and asynchronous event channel length. Added new reference page and updated navigation. Signed-off-by: Ray Offiah * [DOC-13921]: XDCR: Tuners to Throttle DCP Control Flow & Async Events Channel Length Fixes following review Signed-off-by: Ray Offiah --------- Signed-off-by: Ray Offiah Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- modules/ROOT/nav.adoc | 1 + .../pages/rest-xdcr-adv-settings.adoc | 63 ++++++++++++++---- .../pages/xdcr-lowering-memory-footprint.adoc | 64 +++++++++++++++++++ 3 files changed, 117 insertions(+), 11 deletions(-) create mode 100644 modules/xdcr-reference/pages/xdcr-lowering-memory-footprint.adoc diff --git a/modules/ROOT/nav.adoc b/modules/ROOT/nav.adoc index c6db029fd3..0ce44bc0e2 100644 --- a/modules/ROOT/nav.adoc +++ b/modules/ROOT/nav.adoc @@ -88,6 +88,7 @@ include::third-party:partial$nav.adoc[] **** xref:learn:clusters-and-availability/xdcr-conflict-logging-feature.adoc[XDCR Conflict Logging] ***** xref:learn:clusters-and-availability/xdcr-viewing-conflict-logs.adoc[Viewing Conflict Logs] **** xref:learn:clusters-and-availability/xdcr-active-active-sgw.adoc[XDCR Active-Active with Sync Gateway] + **** xref:xdcr-reference:xdcr-lowering-memory-footprint.adoc[] *** xref:learn:clusters-and-availability/groups.adoc[Server Group Awareness] * xref:learn:security/security-overview.adoc[Security] ** xref:learn:security/authentication.adoc[Authentication] diff --git a/modules/rest-api/pages/rest-xdcr-adv-settings.adoc b/modules/rest-api/pages/rest-xdcr-adv-settings.adoc index 40fa6a46fb..e8165e5a18 100644 --- a/modules/rest-api/pages/rest-xdcr-adv-settings.adoc +++ b/modules/rest-api/pages/rest-xdcr-adv-settings.adoc @@ -20,15 +20,15 @@ GET /settings/replications/ [#description] == Description -Used with the `POST` method, the URIs respectively change global settings for _all_ replications; and for _a specific_ replication, which is referenced by its `settings_URI`. -The `settings_URI` comprises the _id_ for the replication, and can be retrieved by means of the `GET /pools/default/tasks` method and URI: see xref:rest-api:rest-get-cluster-tasks.adoc[Getting Cluster Tasks]. +Used with the `POST` method, the URIs respectively change global settings for all replications; and for a specific replication, which is referenced by its `settings_URI`. +The `settings_URI` comprises the id for the replication, and can be retrieved by means of the `GET /pools/default/tasks` method and URI: see xref:rest-api:rest-get-cluster-tasks.adoc[Getting Cluster Tasks]. The global settings are the default values used if settings are not specified during the creation of a particular replication. If settings are specified for a particular replication, the specified settings overwrite the global settings. -If the global settings are themselves changed, existing replications are not affected: only replications created _after_ the change made to the global settings receive the updated global settings. +If the global settings are themselves changed, existing replications are not affected: only replications created after the change made to the global settings receive the updated global settings. -Used with the `GET` method, the URIs respectively retrieve global settings for _all_ replications; and for _a specific_ replication, which is referenced by its `settings_URI`. +Used with the `GET` method, the URIs respectively retrieve global settings for all replications; and for a specific replication, which is referenced by its `settings_URI`. @@ -126,6 +126,7 @@ curl -u Administrator:password -X GET http://localhost:8091/settings/replication If successful, the call returns an object similar to the following: +[source,jsonlines] ---- { "cLogConnPoolGCIntervalMs": 60000, @@ -133,8 +134,10 @@ If successful, the call returns an object similar to the following: "cLogConnPoolReapIntervalMs": 120000, "cLogErrorTimeWindowMs": 120000, "cLogMaxErrorCount": 10, + "cLogMonitorDuration": 0, "cLogNetworkRetryCount": 5, "cLogNetworkRetryIntervalMs": 2000, + "cLogPauseReplThreshold": 0, "cLogPoolGetTimeoutMs": 5000, "cLogQueueCapacity": 6000, "cLogReattemptDurationMs": 600000, @@ -143,11 +146,17 @@ If successful, the call returns an object similar to the following: "casDriftThresholdSecs": 3900, "checkpointInterval": 600, "ckptSvcCacheEnabled": true, + "cngConnCount": 2, + "cngQueueSize": 1000, + "cngRPCDeadlineMs": 5000, + "cngWorkerCount": 500, "collectionsOSOMode": true, + "componentEventsChanLength": 10000, "compressionType": "Auto", - "conflictLogging": {}, "dcpEnablePurgeRollback": false, + "dcpFlowControlThrottle": 100, "desiredLatency": 50, + "devReplOpts": "", "disableHlvBasedShortCircuit": false, "docBatchSizeKb": 2048, "failureRestartInterval": 10, @@ -155,16 +164,18 @@ If successful, the call returns an object similar to the following: "filterBypassExpiry": false, "filterBypassUncommittedTxn": false, "filterDeletion": false, + "filterDeletionsWithExpression": false, "filterExpiration": false, + "filterExpirationsWithExpression": false, "genericServicesLogLevel": { - < ... diagnostic items cut out due to length ... > - }, + // < ... diagnostic items cut out due to length ... > + }, "goGC": 100, "goMaxProcs": 4, "jsFunctionTimeoutMs": 20000, "logLevel": "Info", "mergeFunctionMapping": {}, - "mobile": "Off", + "minHLVHistoryLenForMobile": 5, "networkUsageLimit": 0, "optimisticReplicationThreshold": 256, "preCheckCasDriftThresholdHours": 8760, @@ -176,7 +187,6 @@ If successful, the call returns an object similar to the following: "retryOnRemoteAuthErrMaxWaitSec": 360, "skipReplSpecAutoGc": false, "sourceNozzlePerNode": 2, - "targetTopologyLogFrequency": 1800, "statsInterval": 1000, "targetNozzlePerNode": 2, "targetTopologyLogFrequency": 1800, @@ -423,7 +433,7 @@ curl -X POST -u Administrator:password http://localhost:8091/ -d m For information about _XDCR with Sync Gateway mobile clusters in a bi-directional, active-active replication_, see xref:learn:clusters-and-availability/xdcr-active-active-sgw.adoc[XDCR Active-Active with Sync Gateway]. -===== Change Settings for XDCR Generic Services Log Levels +=== Change Settings for XDCR Generic Services Log Levels The following example modifies the log levels for XDCR Generic Services, for a specific replication. Usually, you modify the log levels only when requested by Couchbase Support. @@ -519,6 +529,21 @@ This setting can only be established for and retrieved from an individual replic | Whether the replication optimizes performance; by streaming, from a source bucket, mutations that could be out of order, in terms of sequence-number. Default is true. +| `componentEventsChanLength` +| Integer (1000 to 10000) +a| Default: 10000 + +Sets the default length of the channels being used by event-listeners to buffer various internal events before processing. + + +NOTE: By decreasing this value, the replication throughput will be throttled in favour of a lower memory footprint. +See xref:xdcr-reference:xdcr-lowering-memory-footprint.adoc[] for more information. + + + +This setting can be established and retrieved either for an individual replication or globally. + + | `compressionType` | String | Default: `Auto`. @@ -533,7 +558,23 @@ This setting can be established and retrieved either for an individual replicati This configuration setting defines objects/parameters and options used to control how conflicts are logged during an XDCR replication. -For more information, see xref:learn:clusters-and-availability/xdcr-conflict-logging-feature.adoc#configure-conflictlogging-settings[Enabling and Configuring Conflict Logging]. +For more information, see xref:learn:clusters-and-availability/xdcr-conflict-logging-feature.adoc#configure-conflictlogging-settings[Enabling and Configuring Conflict Logging]. + +| `dcpFlowControlThrottle` + +| Integer (5 to 100) +a| Default: 100 + +The percentage applied to the default value for both: + +. The `connection_buffer_size` set by XDCR replication for the DCP connection to KV (1024*1024 bytes by default) +. Length of the channel used by XDCR replication to buffer incoming items (over the DCP connection) from KV (20000 by default) + +NOTE: By decreasing this percentage value, the replication throughput is throttled in favor of a lower memory footprint. +See xref:xdcr-reference:xdcr-lowering-memory-footprint.adoc[] for more information. + +This setting can be established and retrieved either for an individual replication or globally. + | `desiredLatency` | Integer diff --git a/modules/xdcr-reference/pages/xdcr-lowering-memory-footprint.adoc b/modules/xdcr-reference/pages/xdcr-lowering-memory-footprint.adoc new file mode 100644 index 0000000000..6ad36b94cf --- /dev/null +++ b/modules/xdcr-reference/pages/xdcr-lowering-memory-footprint.adoc @@ -0,0 +1,64 @@ += Lowering the Memory Footprint in XDCR +:description: Using new global settings (introduced in Couchbase Server 8.1) to lower the memory footprint of Cross Data Center Replication. +:stem: asciimath + +[abstract] +{description} + +XDCR has 2 global replication settings which can be used to lower the memory footprint of a running replication: + +dcpFlowControlThrottle:: +This is a percentage applied to the default value of both: ++ +-- +* The `connection_buffer_size` set by XDCR replication for the DCP connection to KV (1024 * 1024 bytes by default) +* Length of the channel used by XDCR replication to buffer incoming items (via the DCP connection) from KV (20000 by default) +-- ++ +Effective value for both the above parameters becomes: ++ +-- +stem:[(" " times " dcpFlowControlThrottle") / 100] +-- ++ +Reducing this setting from its default value of 100 causes a decrease in the max number of documents that can fit into XDCR's memory buffer. + This limitation on the size of the buffer results in a drop in the replication throughput, thereby reducing the memory footprint of the replication. + +componentEventsChanLength:: +This sets the default length of the channels being used by event-listeners to buffer various internal events before processing. ++ +Reducing this setting from its default value of 10,000 lowers the number of buffer slots available to each of the event-listeners, thereby reducing the memory allocated. +However, it may also cause a drop in replication throughput. + +NOTE: Changing these replication settings for an ongoing replication causes it to restart from the last checkpoint's sequence number +so that the new values can take effect. + +== Monitoring the Health of a Throttled Replication + +Lowering either of these settings may adversely affect the throughput of the replication, and care must be taken to not over-throttle the replication. + +The health of the replication in response to the throttling can be measured via the following Prometheus metrics expression: + +[source, text] +---- +clamp_min(xdcr_changes_left_total{pipelineType="Main", sourceBucketName="", targetBucketName="", targetClusterUUID=""} - ignoring(name) rate(xdcr_docs_processed_total[1m]), 0) +---- + +The graph of the above expression will have a negative slope, or hover/plateau around zero, when the replication is in a healthy state. + +If the graph has a consistently positive slope or plateaus without ever touching the X-axis, it implies that the replication is not able to keep up with the rate of mutations on the Source bucket. +In such a situation, any throttling imposed on the replication needs to be reversed. + +In the event that a Source cluster node (running a throttled replication) is running out of disk space, it's advisable to reverse the throttling to alleviate any potential excesses in disk usage being caused to KV by the replication having a reduced `connection_buffer_size`. + +== Proposed Values for Memory Footprint Settings + +No fixed formula exists for determining the optimal `dcpFlowControlThrottle` value, as it depends on source bucket conditions such as mutation rates and document sizes. +Qualitatively, a replication whose source bucket has a lower mutation rate can be throttled more than a replication with a higher mutation rate. + +In practice, it's recommended to reduce the *dcpFlowControlThrottle* percentage incrementally from the default value of 100, then check the effect of the new value on the replication health graph described in the previous section. +If the graph starts diverging from zero +(specifically, it has a consistent positive slope), then the setting change must be undone to a value that does not have the same issue. +For example, use an incremental decrease (100 → 75 → 50 → …) while monitoring the graph. + +Similar incremental changes are advised for the *componentEventsChanLength* setting. From 27ba65460fd5d614855c4224f15633b898598e93 Mon Sep 17 00:00:00 2001 From: Gary Gray <137797428+ggray-cb@users.noreply.github.com> Date: Fri, 17 Apr 2026 12:44:53 -0400 Subject: [PATCH 03/13] DOC-14039 flakey node metric documentation for Totoro (#4102) Adds documentation for the cm_node_unreachable_total metric. The following list summarizes the changes, with links to the preview site. You will need the Docs Team credentials on Confluence. * Added a What's New entry. * Added a new conceptual page: Unstable Nodes. * Added a new guide page: Monitor Node Stability. * Added a new entry in the Common Errors page. * Added a new section in Failover that describes unstable nodes. This is more to catch the "why isn't this node failing over?" sort of questions. --- modules/ROOT/nav.adoc | 4 +- modules/install/pages/non-root.adoc | 3 + modules/introduction/pages/whats-new.adoc | 10 +- .../partials/new-features-80.adoc | 515 ------------------ .../partials/new-features-81.adoc | 63 +++ .../unstable-node-metric-timeseries.png | Bin 0 -> 306188 bytes .../unstable-node-prometheus_chart.png | Bin 0 -> 206824 bytes .../clusters-and-availability/failover.adoc | 15 + .../unstable-nodes.adoc | 100 ++++ .../pages/monitor/monitor-node-stability.adoc | 322 +++++++++++ .../set-up-prometheus-for-monitoring.adoc | 2 +- .../pages/troubleshoot/common-errors.adoc | 28 + .../attachments/cm_metrics_metadata.json | 205 ++++++- .../attachments/fts_metrics_metadata.json | 47 +- .../attachments/goxdcr_metrics_metadata.json | 278 ++++++++++ .../attachments/index_metrics_metadata.json | 19 + .../attachments/kv_metrics_metadata.json | 326 +++++++++-- .../attachments/n1ql_metrics_metadata.json | 5 + .../metrics-reference/partials/metrics.hbs | 2 +- 19 files changed, 1365 insertions(+), 579 deletions(-) delete mode 100644 modules/introduction/partials/new-features-80.adoc create mode 100644 modules/introduction/partials/new-features-81.adoc create mode 100644 modules/learn/assets/images/clusters-and-availability/unstable-node-metric-timeseries.png create mode 100644 modules/learn/assets/images/clusters-and-availability/unstable-node-prometheus_chart.png create mode 100644 modules/learn/pages/clusters-and-availability/unstable-nodes.adoc create mode 100644 modules/manage/pages/monitor/monitor-node-stability.adoc diff --git a/modules/ROOT/nav.adoc b/modules/ROOT/nav.adoc index 0ce44bc0e2..42482045bf 100644 --- a/modules/ROOT/nav.adoc +++ b/modules/ROOT/nav.adoc @@ -76,6 +76,7 @@ include::third-party:partial$nav.adoc[] **** xref:learn:clusters-and-availability/graceful-failover.adoc[Graceful] **** xref:learn:clusters-and-availability/hard-failover.adoc[Hard] **** xref:learn:clusters-and-availability/automatic-failover.adoc[Automatic] + *** xref:learn:clusters-and-availability/unstable-nodes.adoc[] *** xref:learn:clusters-and-availability/recovery.adoc[Recovery] *** xref:learn:clusters-and-availability/node-to-node-encryption.adoc[Node-to-Node Encryption] ** xref:learn:clusters-and-availability/replication-architecture.adoc[Availability] @@ -186,7 +187,8 @@ include::third-party:partial$nav.adoc[] *** xref:backup-restore:cbbackupmgr-encryption.adoc[Encryption] * xref:manage:monitor/monitor-intro.adoc[Monitor] ** xref:manage:monitor/xdcr-monitor-timestamp-conflict-resolution.adoc[Monitor Clock Drift] - ** xref:manage:monitor/set-up-prometheus-for-monitoring.adoc[Configure Prometheus to Collect Couchbase Metrics] + ** xref:manage:monitor/set-up-prometheus-for-monitoring.adoc[] + ** xref:manage:monitor/monitor-node-stability.adoc[] * xref:manage:troubleshoot/troubleshoot.adoc[Troubleshoot] ** xref:manage:troubleshoot/common-errors.adoc[Common Errors] ** xref:manage:troubleshoot/core-files.adoc[Core Files] diff --git a/modules/install/pages/non-root.adoc b/modules/install/pages/non-root.adoc index 3576fc3eef..27b1241dc7 100644 --- a/modules/install/pages/non-root.adoc +++ b/modules/install/pages/non-root.adoc @@ -258,6 +258,9 @@ To upgrade an existing non-root Couchbase Server, . Use the `cb-non-package-installer` binary again, this time specifying the `--upgrade` flag, instead of the `--install` flag. Specify the new package to be used for upgrade; and specify the install location of the currently resident Couchbase Server. + +NOTE: Make sure that you do not change the Couchbase installer file name as changing it may cause errors. + For example: + [source, console, subs=+quotes] diff --git a/modules/introduction/pages/whats-new.adoc b/modules/introduction/pages/whats-new.adoc index 6cf16bca18..817883fe6a 100644 --- a/modules/introduction/pages/whats-new.adoc +++ b/modules/introduction/pages/whats-new.adoc @@ -1,18 +1,18 @@ -= What's New in Version 8.0 += What's New in Version 8.1 :description: Couchbase is the modern database for enterprise applications. :page-aliases: security:security-watsnew :page-toclevels: 2 [abstract] {description} + -Couchbase Server 8.0 combines the strengths of relational databases with the flexibility, performance, and scale of Couchbase. +Couchbase Server 8.1 combines the strengths of relational databases with the flexibility, performance, and scale of Couchbase. For information about platform support changes, deprecation notifications, and fixed and known issues, see the xref:release-notes:relnotes.adoc[Release Notes]. -[#new-features-80] -== New Features and Enhancements in 8.0.0 +[#new-features-81] +== New Features and Enhancements in 8.1.0 This release introduces the following new features. -include::partial$new-features-80.adoc[] +include::partial$new-features-81.adoc[] diff --git a/modules/introduction/partials/new-features-80.adoc b/modules/introduction/partials/new-features-80.adoc deleted file mode 100644 index e3b36b2aea..0000000000 --- a/modules/introduction/partials/new-features-80.adoc +++ /dev/null @@ -1,515 +0,0 @@ -[#section-new-feature-800-platform-support] -=== Platform Support - -Couchbase Server 8.0 adds support for the following operating systems: - -* Alma Linux 10 -* Debian Linux 13 -* macOS 15 "Sequoia" (for development and testing only) -* Oracle Linux 10 -* RHEL 10 -* Rocky Linux 10 -* Windows Server 2025 - -Couchbase Server 8.0 no longer supports the following operating systems: - -* Amazon Linux 2 -* macOS 12 "Monterey" -* SUSE Linux Enterprise Server (SLES) 12 -* Ubuntu 20.04 LTS -* Windows 10 -* Windows Server 2019 - -For more information about supported operating systems, see xref:install:install-platforms.adoc[]. - -=== Global Secondary Indexing (GSI) Vector Indexes - -Couchbase Server 8.0 introduces Hyperscale Vector indexes and Composite Vector indexes, alongside the previously available Search Vector indexes. -Hyperscale Vector indexes and Composite Vector indexes are stored using the Index Service. -They enable you to perform vector searches in support of AI applications and other uses. - -* Hyperscale Vector indexes contain a single vector column. -They excel at indexing huge datasets that can scale into the billions of documents. -Use this type of index when you want to primarily query vector values with a low memory footprint. - -* Composite Vector indexes contain a single vector column and 1 or more scalar columns. -They apply scalar filters before performing a vector similarity search. -This is ideal for workflows where you want to exclude large portions of the dataset to reduce the number of vectors that the vector search has to compare. - -* Use Search Vector indexes when you need to perform hybrid searches that combine vector searches with other Search Service features, such as text or geospatial search. - -For more information, see xref:vector-index:vectors-and-indexes-overview.adoc[Use Vector Indexes for AI Applications]. - -=== Data Service Changes - -Couchbase Server 8.0 introduces several new features for the Data Service. - -[#whats-new-magma-vbuckets] -==== Magma with 128 vBuckets is the New Default Storage Engine - -If you do not specify a storage engine for a new Couchbase bucket, Couchbase Server Enterprise Edition 8.0 uses Magma with 128 vBuckets as the storage engine. -This new storage engine option has a minimum memory quota requirement of 100MiB compared to the original 1024 vBucket Magma bucket's requirement of 1GiB. -See xref:learn:buckets-memory-and-storage/storage-engines.adoc[Storage Engines] for more information about storage engines. - -IMPORTANT: This is a default behavior change. - -The new default storage backend for buckets is a behavior change that may cause issues if you rely on the previous behavior. -Before upgrading, determine if your deployment scripts rely on the previous behavior. -See xref:install:upgrade.adoc#before-you-upgrade[Before You Upgrade] for potential compatibility issues compared with the previous behavior. - -==== Native Encryption at Rest - -Couchbase Server Enterprise Edition can now natively encrypt bucket, log, audit, and configuration data when writing it to disk. - -This feature: - -* Can help reduce the chances of or severity of data breaches. -* Is transparent to the database users. -Couchbase Server automatically decrypts data when reading it from disk and encrypts it when writing to disk. -* Supports using third-party key management services such as Amazon's Key Management Service and those compliant with Key Management Interoperability Protocol. - -For more information about native encryption at rest, see xref:learn:security/native-encryption-at-rest-overview.adoc[Native Encryption at Rest]. - -==== Prevent Data Service From Filling Filesystem - -You can configure the Data Service to stop writing to the data service path once the filesystem has filled to a configurable threshold. -This limit can help avoid problems during recovery caused by a full filesystem. -If the filesystem fills to the limit you set, Couchbase Server stops writing to the data storage path and returns an error instead. -This limit is off by default. -For more information, see xref:learn:buckets-memory-and-storage/storage-settings.adoc#filesystem-free-space-and-usage-limits[Filesystem Free Space and Usage Limits]. - -==== Optionally Maintain Durable Write Availability After Losing Majority Due to Failover - -You can enable a cluster-level option that allows durable writes to succeed even when they cannot meet their majority requirements. -Use this setting to allow durable writes to succeed when nodes are unavailable due to failovers. -For example, you can enable this option to prevent durable writes failing to a bucket with a single replica during an upgrade that uses the graceful failover followed by a delta recovery method. - -[WARNING] -.Potential Data Loss -==== -Enabling this feature degrades the guarantee that durable writes offer: that Couchbase Server has persisted the data in a way that should survive node failure. -This setting makes durable writes during a failover no more safe from data loss as an asynchronous write. -It also means transactions do not provide the same guarantees when this feature is off. -Use this setting only in special cases such as when you're performing a graceful failover and you still want durable writes to succeed. -Always turn off this setting as soon as possible. -==== - -See xref:learn:clusters-and-availability/automatic-failover.adoc#auto-failover-and-ephemeral-buckets[Auto-Failover and Ephemeral Buckets] for more information about this feature. - -==== Configurable Warmup Behavior (Background Warmup) - -The new Warmup behavior setting, configured using `warmupBehavior` in the REST API, -controls when a persistent bucket becomes fully available for `read` and `write` operations after a bucket restart. - -This setting replaces multiple warmup threshold parameters with a single configuration point: - -* *background (default):* The bucket becomes fully available as soon as required metadata is loaded from storage. -The bucket's cache is then filled in the background until memory usage reaches the low watermark (`memoryLowWatermark`). - -* *blocking:* This is the original behavior. -The bucket becomes read-available as soon as required metadata is loaded from storage, -then continues filling the cache until memory usage reaches the low watermark (`memoryLowWatermark`). -The bucket becomes fully available only after this point. - -* *none:* Disables warmup. -The bucket becomes fully available as soon as required metadata is loaded from storage. -The cache remains empty. - -For more information, see xref:learn:buckets-memory-and-storage/memory.adoc#initialization-and-warmup[Initialization and Warmup]. - -==== API Changes for Warmup Behavior - -The REST API now includes the per-bucket setting `warmupBehavior`. -The previous advanced tuning settings `warmup_min_items_threshold` and `warmup_min_memory_threshold` have been removed from the `cbepctl` interface. -The same changes in the warmup behavior settings are applicable to the Couchbase Cluster. -For the REST API information, see xref:rest-api:rest-bucket-create.adoc#warmupbehavior[warmupBehavior]. - -==== Other Data Service Features - -* Memcached buckets have been removed. -If your cluster contains Memcached buckets, you must remove them and replace them with ephemeral buckets before you can upgrade to Couchbase Server 8.0. - -* You can now change the eviction policy of a Couchbase bucket without the bucket restarting. -To do this, you must use the REST API, and you must take additional steps for the new setting to take effect. -See xref:manage:manage-buckets/change-ejection-policy.adoc[] for more information. - -* You can now change the eviction policy of an ephemeral bucket. The new setting takes effect immediately, unlike Couchstore buckets. -See xref:manage:manage-buckets/change-ejection-policy.adoc[] for more information. - -* Previously, Couchbase Server would refuse to automatically failover a node if it had an ephemeral bucket without replicas. -You can now configure Couchbase Server to allow these automatic failovers. -When these failovers happen, Couchbase Server creates a new empty ephemeral bucket on another node to take the place of the bucket on the failed node. -See xref:learn:clusters-and-availability/automatic-failover.adoc#auto-failover-and-ephemeral-buckets[Auto-Failover and Ephemeral Buckets]. - -=== Non-Data Services - -Couchbase Server 8.0 release has key non-Data Services enhancements. - -==== Dynamically Add or Remove Non-Data Services on Existing Nodes - -Now you can add or remove non-Data Services dynamically on existing nodes in a cluster, without adding or removing nodes. -After you add or remove non-Data Services, the rebalancing operation is automatically triggered to distribute service workloads and complete the modification. - -You can modify these services using the Couchbase xref:manage:manage-nodes/modify-services-and-rebalance.adoc#modify-mds-services-from-ui[UI], xref:rest-api:rest-set-up-services-existing-nodes.adoc[REST API], or xref:manage:manage-nodes/modify-services-and-rebalance.adoc#modify-mds-services-using-cli[CLI]. -The following services can be modified: - -* `index` (Index Service) -* `n1ql` (Query Service) -* `fts` (Search Service) -* `cbas` (Analytics Service) -* `eventing` (Eventing Service) -* `backup` (Backup Service) - -==== Backup Service: Support for Retention Periods for Repositories and Pruning of Old Backups - -Backup Service now supports configurable retention periods for repositories and pruning of old backups from the UI and through the REST API. - -* Configurable Retention Periods for Repositories: -+ -You can configure default or custom retention periods to automatically manage backup lifecycles in a repository. -The Backup Service uses the retention period to determine when to delete backups that have exceeded their defined lifespan. -When a backup reaches the end of its retention period, the Backup Service automatically deletes it through scheduled Prune tasks. - -* Pruning of Old Backups: -+ -Pruning is the process of deleting backups that have reached their retention period, to optimize repository storage and maintain efficiency. -The Backup Service automatically removes only those backups, where the repository has reached its retention period and no incremental backups are dependent on this backup. -You can perform pruning by scheduling it or by manually triggering a prune task on-demand. - -For more information, see xref:manage:manage-backup-and-restore/manage-backup-and-restore.adoc#backup-retention[Retain Backups] and xref:manage:manage-backup-and-restore/manage-backup-and-restore.adoc#schedule-backup-pruning[Schedule Pruning]. - -==== Backup Service: Customize the Deletion of Backups - -Incremental backups now keep track of the backups they depend on. -You cannot delete a backup if another incremental backup needs it, which is a default function. -However, you can choose to override this protection from the UI and REST API. -You can either schedule an automatic deletion of backups using the pruning function or delete manually. - -For more information, see xref:manage:manage-backup-and-restore/manage-backup-and-restore.adoc#delete-backups[Delete Backups]. - -=== Couchbase Cluster - -==== Added New Data Services Settings Through Bucket REST API - -The following new settings for Data Services are added and made accessible through the Bucket REST API - -`/pools/default/buckets`: - -[cols="1,1,1,1", options="header"] -|=== -|Argument Name |Type |Valid values |Default - -|`accessScannerEnabled` -|bool -|true, false -|true - -|`expiryPagerSleepTime` -|int -|0 to maxInt -|600 - -|`warmupBehavior` -|string -|background, blocking, none -|background - -|`memoryLowWatermark` -|int -|50 to 89 -|75 - -|`memoryHighWatermark` -|int -|51 to 90 -|85 -|=== - -The settings `warmup_min_items_threshold`, `warmup_min_memory_threshold`, `exp_pager_stime`, `mem_high_wat`, and `mem_low_wat` are removed from `cbepctl`. - -The new settings allow administrators to fine-tune bucket behavior and memory management directly through the REST API, eliminating the need to use `cbepctl` for these configurations. - -For more information, see xref:rest-api:rest-bucket-create.adoc[Creating and Editing Buckets] and xref:learn:buckets-memory-and-storage/memory.adoc[Memory]. - -=== XDCR - -Couchbase Server 8.0 release has key cross datacenter replication (XDCR) enhancements and diagnostic capabilities. -These updates improve visibility and operational control in replication topologies. - -==== XDCR Conflict Logging Feature - -XDCR detects and logs concurrent conflicts that occur in different clusters around the same time but on the same document version due to independent modifications by locally connected applications during Active-Active replication. - -When conflict logging is enabled, XDCR records detailed information into a designated conflict log collection about each conflict event through 3 documents; the 2 conflicting documents and the conflict event message. -These 3 documents are not replicated to other clusters. -The conflict logs are for your information only. - -For more information, see xref:learn:clusters-and-availability/xdcr-conflict-logging-feature.adoc[XDCR Conflict Logging Feature]. - -==== Identifying Incoming Replications in an XDCR Topology - -XDCR now supports the identification of incoming replications on a cluster, providing administrators with improved visibility and management of cross-cluster data flows. -This enhancement allows you to view and distinguish replication streams that originate from remote clusters and are targeting the local cluster. -The feature helps maintain replication transparency by showing which clusters are sending data in, how those streams are configured, and their current operational status, all from the UI or REST API. - -For more information, see xref:manage:manage-xdcr/incoming-xdcr-replications.adoc[Incoming Replications] and xref:rest-api:rest-xdcr-list-incoming-replications.adoc[Listing Incoming Replications]. - -==== xdcrDiffer Diagnostic Utility - -The xdcrDiffer diagnostic utility is a command-line tool that helps administrators compare document data between source and target clusters participating in XDCR. -It identifies differences in document content, metadata, or presence across clusters to verify replication accuracy and consistency. -This utility is included in the Server installation package for convenient access. -In the earlier Couchbase Server versions, you'd build this utility from source using the xdcrDiffer GitHub repository. - -For more information, see xref:manage:manage-xdcr/xdcr-differ.adoc[xdcrDiffer Utility]. - -==== Added the Generic Services Log Level configuration in XDCR through REST API - -XDCR supports the new Generic Services Log Level configuration using the REST API through the `genericServicesLogLevel` settings. -Each key represents a service name, and its value specifies the log level. -For more information, see xref:rest-api:rest-xdcr-adv-settings.adoc[XDCR Advanced Settings]. - -=== Security and Authentication - -Couchbase Server 8.0 release has key security and authentication enhancements. - -==== Hybrid Authentication Mode -Couchbase Server now supports the Hybrid authentication mode in the certificate-based client authentication. - -When `Hybrid` is selected: - -* Clients can authenticate using either certificates or username/password credentials. -* All nodes must use mutual TLS (mTLS) for inter-node communication. -* The prerequisite is that the property `clusterEncryptionLevel` be set to `all` or `strict`. - -This mode enhances flexibility for clients while enforcing strict security for node-to-node communication. - -For more information, see xref:manage:manage-security/enable-client-certificate-handling.adoc[Enable Client Certificate Handling]. - -==== Simultaneous Support for Certificate-Based Client Authentication and Node-To-Node Encryption - -Couchbase Server now supports simultaneous certificate-based client authentication and node-to-node encryption when the Mandatory option is selected. -This configuration enforces the use of mutual TLS (mTLS) for all communications between clients and cluster nodes, ensuring that both entities are authenticated using X.509 certificates. -In this mode, clients must present valid certificates to connect, and all internal cluster traffic is encrypted. -This dual enforcement strengthens security by preventing unauthorized access, protecting data in transit, and maintaining end-to-end encryption across all communication paths. - -For more information, see xref:manage:manage-security/enable-client-certificate-handling.adoc[Enable Client Certificate Handling]. - -==== Locking and Unlocking Local User Accounts - -You can lock user accounts in Couchbase Server to prevent them from authenticating or maintaining prolonged active sessions. -When an account is locked, all active UI sessions and long-running connections, such as Memcached or streaming connections, are immediately terminated. -This feature is useful during maintenance operations or when you need to temporarily restrict user access without deleting the account. -The account lock feature applies only to local domain user accounts and is available in the Enterprise Edition starting with Couchbase Server version 8.0 and later. - -For more information, see xref:learn:security/authentication-overview.adoc#blocking-user-authentication[Blocking User Authentication]. - -==== Forcing Password Change - -As an administrator, you can require a local domain user to change their password the next time they log in to Couchbase Server. -This option is typically used when issuing a temporary or reset password to ensure that the user sets a new, private password upon their next authentication. -When this setting is enabled, the user cannot access other features or perform operations until they successfully update their password. - -For more information, see xref:learn:security/usernames-and-passwords.adoc#force-password-change[Force Password Change]. - -==== Auditing User Activity - -You can track user activity in Couchbase Server to view the last time a user made a request to the Cluster Manager. -This capability, available through user auditing, helps administrators identify inactive or unused accounts that may need to be reviewed or removed. -Administrators can monitor account activity patterns, and improve overall system visibility and security. -This feature applies only to local domain users, as externally authenticated users, such as those managed through LDAP or external identity providers, cannot be tracked using this mechanism. - -For more information, see xref:learn:security/auditing.adoc#audit-user-activity[Audit User Activity]. - -=== Query Service - -Couchbase Server 8.0 release has key Query Service features. - -==== New {sqlpp} Statements for Vector Indexes - -The {sqlpp} query language contains new statements and keywords to create, alter, and drop Hyperscale Vector indexes and Composite Vector indexes. -You can specify the number of dimensions in the vector, the distance metric to use when comparing vectors, and the settings for quantization and index algorithms. -For more information, see xref:n1ql:n1ql-language-reference/createvectorindex.adoc[CREATE VECTOR INDEX] and xref:n1ql:n1ql-language-reference/createindex.adoc[CREATE INDEX]. - -==== Other New Data Definition Language Statements - -In addition, {sqlpp} now supports the following new statements to improve user, group, and bucket management: - -* `CREATE USER` -* `ALTER USER` -* `DROP USER` -* `CREATE GROUP` -* `ALTER GROUP` -* `DROP GROUP` -* `CREATE BUCKET` -* `ALTER BUCKET` -* `DROP BUCKET` - -For more information, see xref:n1ql:n1ql-language-reference/statements.adoc[SQL++ Statements]. - -==== New {sqlpp} Functions for Vector Comparisons - -The {sqlpp} query language contains new functions to work with vector values. - -These include: - -* The similarity functions `APPROX_VECTOR_DISTANCE` and `VECTOR_DISTANCE` to find the distance between two vectors. The `APPROX_VECTOR_DISTANCE` function selects a suitable Hyperscale Vector index or Composite Vector index to use with the query, if one is available. - -* The `ISVECTOR` function, which checks for a vector value. - -* The `DECODE_VECTOR`, `ENCODE_VECTOR`, and `NORMALIZE_VECTOR` functions, which modify vector values. - -For more information, see xref:n1ql:n1ql-language-reference/vectorfun.adoc[Vector Functions]. - - -==== Other New {sqlpp} Functions - -In addition to the new vector functions, the following {sqlpp} functions are new in Couchbase Server 8.0. - -* `EVALUATE()`: Executes a {sqlpp} statement provided as a string. -For more information, see xref:n1ql:n1ql-language-reference/metafun.adoc#evaluate[EVALUATE]. - -* `COMPRESS()`: Compresses a string using zlib compression and encodes the compressed data into base64 format. -For more information, see xref:n1ql:n1ql-language-reference/stringfun.adoc#fn-str-compress[COMPRESS]. - -* `UNCOMPRESS()`: Takes a base64 encoded, compressed string as input and returns the original uncompressed string. -For more information, see xref:n1ql:n1ql-language-reference/stringfun.adoc#fn-str-uncompress[UNCOMPRESS]. - - -==== Automatic Workload Repository - -Automatic Workload Repository (AWR) is a new feature that automatically captures and maintains performance statistics for queries executed on a Couchbase cluster. -It acts as a centralized repository for query performance data, enabling you to track query activity, analyze workload trends, and identify performance bottlenecks. -It also enables you to generate reports to compare query performance over time and optimize your queries based on historical data. - -For more information, see xref:n1ql:n1ql-manage/query-awr.adoc[Automatic Workload Repository]. - -==== Generate {sqlpp} Queries from Natural Language Requests - -{sqlpp} now supports a new `USING AI` statement that leverages AI capabilities to generate {sqlpp} queries from natural language requests. -For example, you can input prompts such as `How many airlines are based in Europe` or `List the names of all hotels in the same city as an airport`, and generate the corresponding {sqlpp} query. - -For more information, see xref:n1ql:n1ql-language-reference/using-ai.adoc[USING AI]. - -==== Auto Update Statistics - -Couchbase Server Enterprise Edition now supports a new Auto Update Statistics feature that keeps the optimizer statistics up to date by automatically identifying and refreshing outdated statistics. This ensures that the Cost-Based Optimizer always has the latest statistics for generating efficient query plans. - -For more information, see xref:n1ql:n1ql-language-reference/auto-update-statistics.adoc[Auto Update Statistics]. - -==== Optimizer Hints for DML Statements and Negative Optimizer Hints - -Couchbase Server 8.0 now supports optimizer hints with the `DELETE`, `UPDATE`, and `MERGE` statements. - -For more information, see xref:n1ql:n1ql-language-reference/optimizer-hints.adoc[Optimizer Hints]. - -In addition, you can now use negative keyspace hints, allowing you to instruct the optimizer not to use certain indexes or join methods. -The supported hints are `NO_INDEX`, `NO_INDEX_FTS`, `NO_USE_NL`, and `NO_USE_HASH`. - -For more information, see xref:n1ql:n1ql-language-reference/negative-keyspace-hints.adoc[Negative Keyspace Hints]. - -==== New System Catalogs - -8.0 introduces 2 new system keyspaces for group and bucket management: - -* `system:group_info`: Provides information about all groups on the cluster. -* `system:bucket_info`: Provides information about all buckets on the cluster. - -For more information, see xref:n1ql:n1ql-intro/sysinfo.adoc[Get System Information]. - -==== Extended Attributes (XATTR) Support in {sqlpp} - -You can now modify extended attributes (XATTRs) of documents directly through {sqlpp} statements such as `INSERT`, `UPSERT`, and `UPDATE`. -You can include up to 15 XATTRs per query. - -For more information, see xref:n1ql:n1ql-language-reference/insert.adoc[INSERT], xref:n1ql:n1ql-language-reference/upsert.adoc[UPSERT], and xref:n1ql:n1ql-language-reference/update.adoc[UPDATE] statements. - -==== Auto-Reprepare Feature for Prepared Statements - -Couchbase Server 8.0 now includes an auto-reprepare feature for PREPARE statements. -When enabled, a prepared statement automatically updates its query plan whenever GSI metadata version changes, ensuring it always uses newer, more efficient indexes as they become available. - -For more information, see xref:n1ql:n1ql-language-reference/prepare.adoc[PREPARE]. - -==== Enhanced Logging for Completed Requests - -You can now log query requests using 2 new qualifiers, `statement` and `plan`. -This allows for logging based on the query text or specific values within the query plan. - -For more information, see xref:n1ql:n1ql-manage/monitoring-n1ql-query.adoc#sys-completed-config[Completed Requests]. - -==== Additional Options for the INFER Statement - -The INFER statement now supports the following options: array_sample_size, max_nesting_depth, and flags. - -In addition, this statement also now automatically returns the meta.id() attribute, which provides the document keys in the output. - -For more information, see xref:n1ql:n1ql-language-reference/infer.adoc[INFER]. - -=== Search Service - -Couchbase Server 8.0 introduces several new features for the xref:search:search.adoc[Search Service]. - -==== Partition Selection for Queries - -Use the partition_selection property in a Search request to choose how the Search Service chooses the specific partitions to search for a query. - -For more information, see xref:search:search-request-params.adoc#partition_selection[partition_selection]. - -==== Synonym Searches - -Add a synonym collection and synonym documents to add synonym search support to a Search index. -Use synonyms to return matches for words that share the same meaning as the term in your Search query, instead of exact matches. - -For more information, see xref:search:synonyms/synonyms-search.adoc[] or xref:search:synonyms/synonyms-search-quick.adoc[]. - -==== Custom Document Filters -Instead of the xref:search:customize-index.adoc#type-identifiers[default type identifiers], you can now create xref:search:set-type-identifier.adoc#custom[custom document filters] to control the documents added to your Search index from a type mapping. - -For more information about how to configure type identifiers or create a custom document filter, see xref:search:set-type-identifier.adoc[]. - -==== New Search Index Algorithm - -Couchbase Server version 8.0 now supports the BM25 algorithm for scoring search results. -The `BM25` algorithm supports better hybrid searches and richer result rankings, as well as more stable result ordering across Search index partitions. - -You can now choose to use tf-idf or bm25 from your xref:search:set-advanced-settings.adoc#scoring_model[Search index settings]. - -For more information about how bm25 scoring works, see xref:search:run-searches.adoc#scoring[Scoring for Search Queries]. - -=== Eventing - -Couchbase Server 8.0 release has key Eventing enhancements. - -==== OnDeploy Handler - -This feature introduces a new handler OnDeploy in the Eventing function's app code. -The OnDeploy handler runs once when an Eventing function is deployed or resumed, before any mutations are processed. -It supports the same JavaScript capabilities as the OnUpdate and OnDelete handlers. -Use OnDeploy for one-time setup tasks such as registering a Timer or initializing resources required by the Eventing function. - -For more information, see xref:eventing:eventing-language-constructs.adoc#ondeploy_handler[Eventing onDeploy handler]. - -==== Scope-Level Configuration Updates - -Configurations can now be defined at the bucket, or scope level. -Customers can set options like `enable_curl` or `enable_debugger` at the bucket or scope level. - -For more information, see xref:eventing-rest-api:index.adoc#UnivConfig[Eventing REST API]. - -==== Node Configuration for Eventing Functions - -Customers can configure the number of nodes on which an eventing function within a function scope executes, using the `num_nodes_running` setting. -By default, all functions run on all nodes. -If `num_nodes_running` is set, the system will attempt to run the function on the specified number of nodes. -If fewer nodes are available, the function will run on all available nodes. -This can be set at function scope config level. - -For more information, see xref:eventing-rest-api:index.adoc#UnivConfig[Eventing REST API]. - -==== Set timeout for cURL - -Users can now set a timeout for each request in the curl function call. -Specify the curl timeout value in seconds, which takes precedence over the script timeout. - -For more information, see xref:eventing-rest-api:index.adoc#UnivConfig[Eventing REST API]. diff --git a/modules/introduction/partials/new-features-81.adoc b/modules/introduction/partials/new-features-81.adoc new file mode 100644 index 0000000000..58b3a29b1f --- /dev/null +++ b/modules/introduction/partials/new-features-81.adoc @@ -0,0 +1,63 @@ +[#section-new-feature-810-platform-support] +=== Platform Support + +Couchbase Server 8.1 adds support for the following operating systems: + +* TBD + +For more information about supported operating systems, see xref:install:install-platforms.adoc[]. + +=== Global Secondary Indexing (GSI) Vector Indexes + +TBD + +=== Data Service Changes + +Couchbase Server 8.1 introduces several new features for the Data Service. + +TBD + + +=== Non-Data Services + +Couchbase Server 8.1 release has key non-Data Services enhancements. + + +=== Couchbase Cluster + +Couchbase Server 8.1 release has added cluster enhancements and diagnostic capabilities. + +[#unstable-metric] +==== New Metric to Detect Unstable Nodes + +Couchbase Server 8.1.0 introduces a new metric, `cm_node_unreachable_total`, to help you monitor for unstable nodes in your cluster. +An unstable node periodically becomes unavailable but recovers before the auto failover timeout expires. +This metric counts the number of times a node has been unable to reach another node in the cluster. +By monitoring it, you can identify nodes that are having issues before they become unavailable for long enough to be automatically failed over. + +See xref:learn:clusters-and-availability/unstable-nodes.adoc[] for more information about using this metric to identify unstable nodes. + +=== XDCR + +Couchbase Server 8.1 release has key cross datacenter replication (XDCR) enhancements and diagnostic capabilities. + +TBD. + +=== Security and Authentication + +Couchbase Server 8.1 release has key security and authentication enhancements. + +TBD. + +=== Query Service + +Couchbase Server 8.1 release adds these Query Service features. + + +TBD. + +=== Search Service + +Couchbase Server 8.1 introduces several new features for the xref:search:search.adoc[Search Service]. + +TBD. diff --git a/modules/learn/assets/images/clusters-and-availability/unstable-node-metric-timeseries.png b/modules/learn/assets/images/clusters-and-availability/unstable-node-metric-timeseries.png new file mode 100644 index 0000000000000000000000000000000000000000..4bd0d40b2caf6f3ee3dde41226746bc0b5b64e19 GIT binary patch literal 306188 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 z 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 literal 0 HcmV?d00001 diff --git a/modules/learn/assets/images/clusters-and-availability/unstable-node-prometheus_chart.png b/modules/learn/assets/images/clusters-and-availability/unstable-node-prometheus_chart.png new file mode 100644 index 0000000000000000000000000000000000000000..cbf88f940c775a993cf725185e5af62065732570 GIT binary patch literal 206824 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

ia$f;!F%+33Lb(m%$(mDn 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 z zZPaaOWh0E<)#r^K48*PSG?!BG7{4l%??YoLhN2XYF9k?Y&d13X&@D%)cd>( zG2BzV;o4z0|5DAd2iud9Lzw^%jKDJMF$_^XnU$(HkC2%>+!z zy2gVpSd^=#6gI+v%kCADypE9H(!#R>+HUL{)=I0MoNn-nDu+t$lbcyStlKw^C>;U2 z8*u`S$diM1e|0SD9(`Cj$@!8fny1G9+1rwi)(nVJ)x*jCtUeSH>GV3qImxkPE zFaEL9F(dR0Z54C<$NvDlL#s!fKB~N(0xA(^k-PE9RPA}M{t&!2{C9?wbcXY;yti0@ zZHNAIPld{*?r`npzHNP_Mf=o`!gBTO1m$}E`MJwX?U|h&wTcRLDSe{7ER*77d8PEw zE*bGu{6*!;2x=TmxSjj?Hc9Zt*K#CPml5Sl?Oi)OlZ&W_UheUNOKaIY&M-G!W#|_E z2F73_q-aQyZ*o?M$+Uj51qjt+##PTw?|k;t`xOFNn}UtPhq&^5VSqPK7#T>rDp%MO|1k8ANA8aJR5yFB zNp3;3S-Q`M5Jf>$M_EUW?$5<#^5ht1slkp-L4YahGw?ZO#o=h~y1W!LGVJsQX+OIb zTDr_6g1Zrr$@>q=n@QgAr&4JHa|vY8pWaRI&_1%{?N#E4cD-k+we9*o=G`+BQN=q_ zcriN*KSzI4nQydxH2meK!AI?LM)e$=vA0YY;X0@Dn2;@b^FDZjtzGd6-i_K<;{;{$$mZf^oYx z`;hmJsG5bdZ1?JX8wi76X|3M`%g1XY8G=czNz5B%Vcag&28`Ps`+st~I`2`jMx!}< zV0>yZihneePoSpEUnD!aBp(j7&77goyq3N!lw4W$Zi``Tq^^lFM>z zyVo=+hs&!GpEq89tr$P#r9V6>+E}3|LW`;j-=CE%kxMyu&-%Il7u@^D?e;IYw^)`W zDa^W>K+@{%a6KcRJ@4}FYN$Q2gMfM9TXZ0qdYsXJ;@lM$-kVx?_j08oZXwRpltlA< zs?Yr)pm&U|Ce8yK6wE0&?;{R;Khq z#CK{lk4(ulvMv=a2yUXas20tkXejvZp#Y$eWf3VQH#_@;=0lZZD|q{AEm^ z!6&WOtR6b+ZJRJj>$Bn^Ka>Nl*NrMy{Uys3wXqV#WRYgAPbL`{?S=QALp1>#fG;gELy)&CXJm0&%*TSRlhPtGkQw}5ekFe)u5-Tx2h3+6>=od`Pe zPcI4$aIf^g*4JJ&lqv$YgAwB?Z7{G~aD1v7(c1_s3i%4H^r_YN)c+(!|LG2PSp_U| zus7J?U9EiBMOn;NW^QLh(qBj03{o~11JDgI%9Z&v=Wza3>x zmxWWkfXyz9{WS{t2_KZD)CXgKxn!nmF3x!GP5JN~)dPOb3889p!|A!|9WSVsp_QrX z60_HYw$97XDZk+L$dRsV^8MkT|GBEy`;V)WRs#@SfcyQ+}=mTD{Qu~{%B1atBY z9&-~fD(=PkBSdBqWT5M>ME8^G>uv3jAA*Vnrf;q1Qhpi%oDt9&!yk{w^+gN0-v@X_ z;Gpwki|exdH|Zvsr=siNEtArabE?q+=iyY+jO|8P-j@L=&uLd}*JAWS@SO90`Qqo5 z_b;_Pm{Ci_edC`GyiA!t8{yfzX@2z;J+K7@{JxsWAs{TF7TfP`F5%zQ@5ThDRgJVY zajD}z*;jPbw%p2#Ra4_T&O@Z6oXw<-#<0fO$(MyHs9LHuGdzMtIKH*|ubmL{Vy{!w$2~kmJT}hn@ET}P79NmlwrWIl_7>%D zA;=EErIq6_5C8u7?=X@S?nY*@rS9xQEsn}mtX{T^RJ3dcABq2W^;=w^^Y6%w1FZDk z9I#qswNRHm+*B>K@gAGbE|zD>T)w2yq?@!^s0Yrm>jRfSIj)DaPcr@&-al$sFw#+T zJpHfUvDfwa%mQwe3t(GR?PGliAE1knAb$|@QrVvOmXYMpPk}0 zEQUr_>U^LxQj5vc*c`I9;o#bns&0Jp7E69d$AE7F9E%OMPi%YPf`#=iw( zwJ2o5|G~@tV;&gc0{#I(ON#aZa`-2`Ro1w4m^AL zHx3+%(N4|wrvg7DSU@NIMX2ko(Bo_`nBi{9V2H4eljFLf$KRph?>E5R%Waqm9*Exu zUZu_9IRi$6zmjgaVUOYb-+Zuo-%-Z$|E9=D0_tZ;< z1?zyF+XFLEPC!w>9lTbJP&L-Dowca&j3=hy-+?1K?IR|6&n!co1^pcSL|J3>t}Z;YK+s9%qw2rP^10*(rZ^?a9#AiGbQM~T!B#M+p^*iPztf+)4oisq`&#^a``LREsSJL2g z_x3Uq90SIAG;iLFTx)1)k^L+$w~y8T@6$2RW=oR>vmSPVj{W zpps*Cjrd{XI~5{Oc{8GWF!8;cC%g-Af@el?;owGG50f7uZ^zvO(KzkA z=-xBGF!vipCZ%KgaIrZYKuDK|(uGwkO>u>UghCD!OD}*N@-HBFj7dlsm?0XR0j{=m z+AXRMv3R?0zSu-s{;B^LkURdy=k79AsD`cI86pVyZ?X25Xw*`i13cR!-2&Az3Iq(Y zkms-88_&GHYz5kYuD!m6Li^o59GI0u@lziSrsCg|@s(g5%{gnW@vheKc=D|B@rBC+ zpUK8}R}*<0VV_Ink8XkMikJ2vnS0_KOCF&($jhsW^!35VBO`OQo*QqdVw_bx_(ry? zt>o%VNRv29rJJ!-`Aoj{vmfv|uU*lSaCtm88ql_>HmT}*8vh7e2hQZHK;So>XbgIK zkN4RTSRlUN6=zLd)^FxUMv-3`-9}9{$|Y2Zhmi;Z+^;nNItE|5w|;@2D%1Bz%_>$a z7ei14E(QWXgqpc*FVJQCzt8JvuGY365<<*@jzPxL@}0{Th98TF zi~Hd-bB)$UMf6BznGCBS~24=rs-L%T?gDMP!@8kVg02;iO zIqa*mnoWE#jB)()t^Vs*lzq`+7}0;Y(wfS#(w>+sk;;a>Kr}hp;0@ougfR;qq6*)+ zv;bMl7)<_6okwm8SysG9e$1^2r>DQ#v8jpKbYsSMX|tL=@|{-mJNhvb zLa_%SPgFsqT*h4?YybS#D|A(S^6;xE<7>ywI0oUw>zh>|I9M@Xs3WBw_#Rb4HwH=m z6uR%Yg7??J<0Ch`OQ?z-=QbXCk$?+it997t+Way4eovy4auW>7UoSZ>IEy2IL*GY{ zK5JL_76(@qBv(2yIEVo_LaTfnL5LAlhO4s6P%YB~9GVlQZ^WK7wEg?R{x#`56=aEUtE)m3J#Y$*mAHj3~hAKZtBh@*kvFIS`J6yh&CF4&A4#(mjv!+c7|E zJ_u|{GY<-8ug)3NXlrRbm9K7nF_y=V=?=NW$dU^B&g=LDqm6=uq zUGB9FZol)W&)28!k#xDWePS9K4R(WrgOk}_5esPgFA?W-sVk=>Fugx(7RuP1A3MgF z2}N!Oc$nEIC5ED-AwRy$7Noyk9^b^HnfZEjuoJ#y=Cv` z3!BB?G@fe3f0!M~mh$l^L@we;q6f1Z^hQgLW=TX)q`lQpU!AZERfkXw1LXQpu_j2G z{Mp4uU!1I>U&0JLBBI&M@Z)V@rhWQh1P`0c|21u>zMVY9J81Z-mL&61=4q)!zMnx? z%a3%L=VyC;GZzg+Y&L`wqFLf!s+a2z?&_QxzSFj9ag?8esOf)gq}xV(BM6~WZ)Q%E z+4WCj-biJPx0m^tg-4uOFWcFvKbh_?@uXiHmCI&Lw1DEesJ3WW@$|Ege*`7o|U3jw!=<&=-bIA8AE!9jz@U)G4KBIKEv+p2W# z8dhv6`Yw5847A?}D%9mxhjZMDmX6JWLk0z{OVHZfvOh>3wmWa85i`>eGBVrYrk7nI z1U$;d)=zK3nfs8RJZ9?iGcGWgB?CL=dIkH5^Vs0*EMn8$<1c2tv)2BMDF!|V;x-{& zN0*zz8*1@h5q~`q$%N+}M}v35C-#1m)od%vq`kl zF6@8SofW(t%VJy+ksHR6q-Uqmsb8K#i)JJTTpJV9h3gS&QW+=_JZmwr!YdPsV>{1R zZ;KMWibnjHKZ=K{Q4Dm@zNw!TZMN(RQQMVcXPw&WYrP-Hw7Pd586cF$Q_C6ciR`|B ztHL2U$DfV^%2?7uJ{aA~!Brjn6r8SXYHFg$#Fn{Ee=6C7q0NMs+FsT!$~6$3R^KLL zS|zBFtef%lDVhcpUWH$d{gXz>>iv^flkF{53VSte__9AEzH897c1^o}xGQzyd+frS zu5fb(5h`JM3!AOpYZOPn3}$AY2<(oGB!Ly>?d%pl;v|oVxu@9mI*-i$Bxju9DW#T8 zp#Ubt<-_X&<2`RKMR&|h}uMT>100tugC+@nGA z`hXg5TsR)bLNDD)P2lGq#R>vD67UxvQ^%wxHbEZs;<+JfS3i?HW5s@ku)_qL02}5! z6WSKy829|G@yzW^hw$Ms$VyGAp9LDKin8Z7BW2)vaN*E<66>3jtNwTq>&c4ugn5D) z=*<{VGLwTq?5R=|G&Dp(0IDk*o`-{H*58|ylDiKT6icooCD&Hp=(RyGtGHrzFXDDD zw6Dy?zz#NX}2w-28j)*r)o`k(8=~iu6J{ z+PTQx83nx3k`ibLe{V>3i2CALep$e(6Bbf<;AgkDtYp0}q=7|X>Ek4?Gn*pkS41Ku z;G(a{$Y>Q2Na7POaijh5ox^j`L8<-0Ln_9e#vVc1%O&o>0)}$v^$u3hu z6+8-FdosxJ_d#nBxH>CrAn84@M;fMGUhL2Q$Ps{!xj)09c_g(jkz;A}DFF9@Hx;m< z3;e|9^xO@k3HVlz+?zFjslFfjr9S=7|aHOlv+>pchzhW)I98UJCUr@mz81`FAvB zePp&;Nfpsm-*yOSx{+8#G34L*m2vdG8qb({+QDIa)K!;&d~T(7w#MU*o7*laP&_=7 zRX_d1P;Rc%$L<8I(b&+^-mfyKL?;Yh=|7<>kwMqLx8yiC)i!yeX0IF#tz?XOG^Ev@*TNY5YW|U%66F z)haiyOc;z2qoHhwZ3f9l&voBZl<%QOcF@8hj*cn(l>O_-JZ>ae@+rPOm{KLeTheTH z2D|6gj!EPmr>XF9sGGvghpw=hw5o|$l~XV76@KCO=CiLGhlWybkFLaPHhSJBGalnCrnp7qKV^2OgE}e2a zP^U6n1m@6xWHjGReG%X zQ$Re3k-#&SRoLQfZaQ=OPUnjEcHR*sCTO$GEL|`FTg^U7g&bhXxX0cqwj8k79V-Ct z{TbT-cmaIlcS}kL4WtW`Ag+``oUPFP4q|Nl8d;*$(Zp3C*WmCv+T`Yq9feN)MilMQ z>4{(hhuKtxFb)e&@3%MRIE+B|yY{$VmBN|eAY7@XafJ2u6IpJzn|rrH($E~dVR)jlJ<`Zm3amFoHEo?0I3bqoo6gXp`6uV0p5g+TdBxc}E`CeE$2T4r+4CyPR^%1775P@APL~?-*uux}mAW&jVT!?_V;jM* zl^OE~M&_L5yCR=^oEn`V^mbnIlH^DPnsiM{P(CGby}W>HNjvG#tg~yqT=Wd*zrR)d zG!NKbYsGSraehv-ehLc)fa1^fjODDo`TA-Nj@YwkO)0@CLY7Zy_PY}_O8L=c+N+(R zhL~|Pr2HNl2v$JLju?121`^Mwz%5 z=lcj@6ICX=_h)Yb!u?SzEYc}1AWny>|(VmlgunA^*K0p4rQ;(jSJIs$RI~IPWoQdK3 z{N=18u}MBg93)&^dZfbh>MC%|k(^g8v-y6jZ0wSNMKrUS7?0|lx9h|B)*%n;7C&i0 zqjvQnfAl{8je0?|{h{~RB^kf4{^rK~4FZ&dg$=UncpwSg#QvlAkCNfkW(VON{|`wy z!>RQynmhh7_o-r@8z*de(FCjD?Fv~#kqcycJ44am;O+Aa?ZNj)|vD4of$T? zRnaKhW9}Z$WRHZ$S!}24{-{8#`M%vGFZF0uFZ6D4H7DzCHZ|7t>?Z8>4!-f^;f(89 zmO1~mQIW@B1hxXd;j&F=vL`xumw0B5-a>vT5%l0btmk4BuV`$`k(B4n`KYI+p*+9- zu@w>Y;)%cEO@h>ivl|Ra==babw*7m^WwQvBDD-a79Wnc^-f)){QsjyTIgBfr+`6B# z6{t$B*7Fg&zgfJ=zVj@ofb`ej$3VzEMs4KI_=^{^%F3-L`KCSY68njue#x%c9<4Kr zY>;!%U0JSnHPk9kyT&s32Q<+F0h)0RW`m4-?#J$X&L8E7HSY{+Dl|K-Y7;?wi$K{P zJyb;=9ps=akL?YM#EZWBDTedDD)Y&$?RYKxSn$y3ty;5f>JR9M^sK>64A{~5Y>j+c z?R--P8=9(cKdW8O3K1o)dJo;PsAq%t?%scMS;>k`g%|%Rt1&Kg>2qdBK6VmSz63s&!5;U$ewD_ z+r|}1kKN}e``meK)y>}VW(^Oj>kU~gda7oo(%$jqK?k0QvqA`04inDKE{pIWH`KgP ze!1X``2$3q&k|*JjD$)qsGLR|6mH^c@Bft@K$r;dFEJZ zlbuo~IeS}L&Lp^UXqRc4-z+0%(rRRMw@SSUv*a?XnMP}KoLQoQ{{?TOwp^dUv4_x3 z#|=v5&<)1O=nYooSt_gePRYW^&W$?=ytC~ds?L|nDYdf=jZkmG;Q@JaJ?3b?p{+c_ zJ1p3$c3m)RQG~!yVgu< zBKJ%AD8n27@HRGxB_*{aZ)2)bpZE%tVcHX?czpCme}o_JFmC)rHzQ?1yI}pvF<;Wm z=#4e-?paRSC3r52viq6sbAa#ul6af!yx0L~Y)b~5y1ad($?OwJo= zX7a9eRqEXwBT0O&w1cXw?3F`PdAwzE!6zZ2dt*Z8d5zmFc=ITE_?Kez6Deglyz{P= z1gVW5I;Cs__ke#hJV(jfFIvgtdco}8$;{(Atf7JerT>;pwqhkre^yO-PBo}Cm{Rs5 zKdG--+H}$I>eZa*^C#L^NF)_Uj}{2Z(DxC;+FN;vhw5BjvLf|U-V87DRp#8oo2K96 zW?{6e8K8Q;wO}Q<1MQ%y1!CV9i*KEz2H$by`2w>l1=~KD(ky*Wb;^T4 zY|{h#$uqXjmAzx9qiHabh5X>uy2461KC}dwhm7+I?9`Uc+Ox*`#(vyW=Qj)*Tc=cb zn!`;Fz%Tz}P|L7+>+Ni~cD)uvko``x=CPlXyfXKWtf+GdHzD3^3!d>T|;sSMd0G6VNKhky5J%~b;bMgF%y zJDDK5YeY!U;HT$9Kb@t=N>uR9)Ft<~D;4Q`Sz=H2*wVD6)_Rh0GpPx+qQDOSA75V? zR%N$ED+q{4cOxYrCEXxW(jd~^wUO=y1?ldR1}Ujchtvi(-QC^YabLeWo_oJ@fB5*I z?ES`?Yp%7%7;{Xra7Utx=X@MFB)Qh1R}3PIyvLVB)PiN-TG+g!e5GK5@iE>@udg#*-_FTg zN0N=D!vd$cicGAs8uoPjz1&9e z*gE{c$c~ot`08{nIsKtU!TqKsD?WB4#ZIMkw_u@rw8Puf{ZoolUb&v;6vO7UOo4LkeFFIl0lU;P2O+$}Djc@kGIgY184A3kT)0=2jGI4{ABRzr7 zS`MmV(`Q~_^C|wC_T{+M3Jd`=Da~cyrck!G55*a=cgdTk+2X&VM5P;u0iP|Gd1O}H z3z|t`T0D|_>@a1n#weG!QrDtfq9zrue(cn$%-(jq7~#N1WBN8+ce(`lLTrr{VtL)} zb73=TjF}}bxF8d8BG1-XC-|zpHlJ&9cUEXs#z0yk6>!70oGj%qnfNpdMgf}0C9Fr# zxmN=%=j|lQ@ zlq?Ex(r6`%VW$a)irjLS9@JD`PZS@Ka?{C8g((ue>dbW$$%2;}~B`nIVZklPT zuR6T|G>R&6?pXdiA`F8A4=$Pewvgy|A!wFWmy`|HD%J0cH;dwT8;(8@GbJl3rF7 zsB}{^b9%C9B7mUmMgGa!DVcfFDphHBBhS7)L|#@)(L|)@hpF37Kz*#{c{8&t)Mc+% zb8fpfK3e6=#htjcoLY*f74gBqczr5grK#W&BR5c;kG!8V7LhM3c((^XZ$x<Q-BKk9c(L>y&N;#oaULYd2yP!cMW>ajR=c)Ld!acw@@8}RtyK%{amVTQaQ$+1=Zr~S?J_47Xo04}HckTA? zH}VAQJ%ukp%HaDKO@#4pGl_kf)MxKHiKok!Cj}z2MTHYUE*kmM_FUcM=X(o?@GmxG zPL2d!Yh3@lk1MtInMLd$xf~Aab0RNwjHaWnf{WFdHPjOSfbst#qv&LO7JYNx*fbOW zI~c!23JY);UAcT1w5qi9ypu0%d$u;n?QJg4jIqD#;5t5Q-i$_(-(`0{5HJ5cMiPs{ z7<$Rec~rIBG_;!OQzGcwdl_8OofXRx;*O}$s=}P0gw>fTHWdH+Jq-Fkd1jUI%(3~^ zzu!Y76)dFei~a-n#fW%Wja04C?o2b*)Ii7C+oiVA248= zGZ|Q)f##hJ&z|!RX@IE&wQ#3B^`7y#S%1!)Uik4Y0>T4B-74Y(X`KHe-C|6lTO5KP| zh%CuGMTMu6{p7Ne<1NNzMbB>Z4akt zk<9K09v3Qf3H&$iHy^a7ywInSHaj&}1#No*@*OqmL3pSS&ZMrVMi3f-1*hF3;Lx#9 zaxs$30*2~LzTru`(#wU;xE15pVdzkn2a=@t(2g= z3IfSF_oi?Z)sJc=SL9CaVvu1mL;7GeFX!EQI5@jnVbFw? z@c%g>2!RP9N3K!4du{TC-=#@QCn418#()#3vQuc@-=)1Au>5m$MAg?46S*57G{hP& zEZ}R<$}FXI$R?Ewq*^CtCyCD5S4d&&JA6taBFbpF`lq1>nY}9iOikY$^d)CE$xMjn zZ?ES!^41rd@(41Va&>>im~(n5%!~)6AkzlpNW?$Dw4A|YG1v`ap9*m3n(bx;9z!NX z5YY)B8D~pN78doY&ySyfBf}i1a9m829O@LI@p|u3%TRIKT0#9!WW1Dw<2Fm7@|a8d z7tR>C$M?@+Z4CqlfxOTy?fJTwV$+qbX*6LxNM@v8w=e3R&};rFGfwY*6)-E&X(pu7 z1WdDuRR#~jqWGLu5RaX?0|GhiByF%+B>2tf!qF}F{#pk85uJW z$@o8Fp+`oqo;Ji|RhSB3=Oh}Ee==!X0W|i}(TOZ}i7Ekykmc?lS;2C^ZLabBNgVx` zZ~J`JF;*@_P6x7_v*{LzzzrOHuTiU+hV)w^yT4|W=)z&{rPw`xespo+8^K&=x{t{A z=|8+`4l)p&dB~>CNdHXW-v$Kc)e?p8Ba=XDSpySvA=Y>|SZl@>u_2!^PMZ!I56|te zMG?<1Pp5b$vr*A4R5IPyo%S;FB`egC;ze@DWX7bXBWzlK-t*_YTPv$ZM7rMIDOT51 zzg_4E36c|mia<9q+v;;Ay$@_8Yc(IG))4+u8Dr5bB zCPw003yN0VacNm+f6w3k^$#_`Uj!;U94<&GB3rc$of!M8JW>2us{NTBic5UE zI0oc_3JwL$E2u8F(;X`k9_l+FB8bJd?Hc4{7i{VdLuOd``C)I-NU@XBj$P_Bl#K>b zrw2jkT=h+8_yAV1t5qJLUw zq&x7|kEJI<^5!y5)2VkLkdROHDXZb?O`s11od2fJg~-Wa^5rtbJsMGSrQ<$lWZX*O zLcW$q!@Q{xc!YSWmyT&6j?H*9RnVPwI@z~VKAtSaQvdyzTmCh{1 zXIkShDCzN8*P=N*yniOK`1<%I1F~s{016$UpH|)8pnk=w6q)6u>TXQ$7$M&|2WWrM z`{?aQ4(?Ez))!3iP8QHL3INYqg9GB;C*Oy$f@YoUBQ%)`eziFD_(c?gnay@}3W5bxI%i zf3`lpI;PC#wU1}O7jj}J=8BRA6JhlI?1Lh8AXlwBmUpiFUSqUO4YlRvyzM zXJkYrcqoL}^7zo86__A5nyATc9d6wfHVlUpR~kVo@b0krzTA1S=0;8uX8TJ-r8@6Kt)EI4~tf{bskeU7K{ zXd-2>IY(~?+F6<32jbZYQI~jz&1N#tRTGon9Un%-(YBW~8rt+KxbBVnfOD6jC7CLwEFoCcn*c0^)+ai*CsamK)Ozuw|L zhi>%f{?Y5rfHkjbogKAI2J7?=9--EDcJr%4wmdd&9$j&DJgqz63<_ zAy3eUs-(Qe7}I8RZ9m-@#3NHEAI#zBrcC^?iY9ZIHW`i7Dk_f^_UC5JyLtmnZUZ?F zom$tS2}5i9T?Lx?sBM&O7mXVR#LUqqPc(K7Jji>9TL52Nt+VJ(EX^!Ab!l0XG2cgXS2a98ULK%`}{Vi!2-KLnfY0Px2i z_~qjn%Q8Z%;eqiYRbhewF_B;jH6!{W>N2ykuhhD+_PrB0UQ)X5v-X=zdN+OQ-ZslQ11=W26fp#W*cMl~o_e$dL{ znd`fIelC7j>WxmiAC2}57c_)+Qd&wDb?@kTwf~H1+9q!_A)2V#$J{dFbucMJ~JLlLLi<#tgfAHH#rF>R2SsF80 ztX$)(lRrw(ASx!dO|M+UG`K%i2QA1?D}%^K-fUNHn4LMiF`BY*{j?LBWU{$Ox8e0D zOdq&+GJI;J(T;A-lZgHc>vayxFe3RIX*b@h;U8%g8q2L=|dJI*!s5V(lW=q&-ms>49_~*<+RZH<5mzS4sR&t>`x`o=R-j@g3+38NDx-EswI2t+whRF@VK;qc8 zwBAKhs+N_Qp7*{|SiDJdKGzmH$V|GW7*!*q*dV`e(r$E-w94?a^CQapW zY^HW$++GW#O6nhoO02b;Yw{iRws3v|(h z>+A^5DNg(l&UgHJhtqlN5%l#3dtVLe{!qBsp2~bG6~~~zC&CB#g&A~>(QVD<*KD1l z8%cN^eK$AUT}lvZ=^cG~d&yS1F2!j^GQE)D`Fil4s={OZJi?gho| zUvoNK@RYk2PTL6jP$ecNzFN;wG+f@^;Frx#?S1_fq*x~Ug*u~9k=K^2`1-Cd+Rz>B zp{QxonLvhj$8d10e)n3+NHd0Plerb6T>M0W%*$tJWWaQ+Oud10b1*|9WuhcB_q*7U zu8~4ntdsZRN#OCwEcj5=&9-F`>y+M9Zl4f*eX=eL{8{H0v^!IazQO04owof_IFpmT z=k(R~vElIv7!lV&2>V*hsBx6H`>@KKku4lYz^aA#_uuAVV;ajprkviOg`3#cL8pG3W zl=lEPL+L*9eY247=W02vIW(h1yO@@CiXvb)#WVm#RqM+qGhH z_laVYG}xzXQY3MFDrfx)D(yQQ^J3BKFJqH;dSTGVx{vEM^}{%ApcJr93klFV(IQL&Q}IRe~2Q zT%Rh)r$FCJBpVCrJ#jjmz*#HrF8=a_+)D9B{2p!Ah59hvZ210+`k6Y<;g-tr7uXAM z2aYbn**&pzJflbi={!Snv*#`6E7_#rcUcbhEraf>S3#zh)S7#GSvlYCu@x5*nq|Jh zl@~sTHxjzf$xn^wO+bGyf0^!8+yi)}8og~Xi_$a1QvExO3`Pi?%0eopt+_riG(U;K z$(4%xD6=#-eQMV->P`~IYn-oEo>f3GVU?$Mc>fG7lG5GDwKq;MSoSX{&Sw+-$9*Z( zzN?4we{B32(7);JCU=Jxs4?K(a4`DIor~Bo+B+eu*}-8fE8@B(7DYqFW7WJz2!sF) z9w5@gF2oIfwdfIW(=8|kYK6jnCWno5O8LTm zi#LLjc}tx`4enJiD{MDn$rCkx=)qhmyix7IALkE-!^_L7b=Z!c8(~IDRWAAyj#qUA{+%ta?p$wNAn)W3M;Ngia#lf}& zlaOJU$-EyTXX?6m^f@|06|d?ZSg_T0*&q-JV^We3v7Cb z*MsE1({qlv`=25$pK0a8p09SbEiURR@-=GL?QjjHnvZ^udzF%cjJ$Qpv(cXxrnS<{ zOCc1*aA?0dkPURKX06T8^2BZ^1?=kh+QTcxO#2gqhbaT;=hrVz;-Gd!TD6hlWyEWM zzV=|GzWa}55UTlC9wLSvY_{9vFk7@QUk%+?8ViQ>VTP1~bxmnoBR=s_Axz$4gR8Rj_e@eiZWe3f5v7iPl zLIB30$L>s37YLJ;N?`KI)Ma`*kKiB1E6rDbW#&HveI_XAMUgVj!DlghP&wRgra~~d zLd|#NwK*Ajvo^zXx@lgNXDIf@Q|;5N7Dw7PX~^xU)otZ%OpAsv!yfqU%rQx%1ZPCh z50aex)>Pd9Q-a9Yc|tsrXYTi7&D@5D&%@ zqm$!z9x{!{TQ^s?-FuoyciMGsvYzIv&6ufY(g`pIO$x|_yjlnn&(3!ZyV-FV>0Wy7 z&p3XLrwfyec?Er05HTXUR9+Ia~kJ$b&3-0P;c#c?N-FKO^gCY@%V^cq2Bt*qI=k`W#*%8m z(yf^G1lbnrpFqWivHI!`v#R|JBT}h+3JVl~-k^3SV8(1d=lw1dMJDc(ZKYIhSInAE z^YH{j?JdL>)hYCz#RSqwqd65y9`&yubm(qVd#yC1@8D0Q&+AU{6jtMQ>=xqyf3(W* zKi4lE5NxXXt-+$uMf(3((9G`DUk7QG$wYQ_0ctHonM;Omxjg3UFY7=?nADaTaO>4} z%2?Ii9~kC~OU2dm_KUhBDX~h)xO0a!dA~Ut7E;-z&15EzmT}Ssh7vG%UzM7h*(ub> zjqFn;g!Lt{E{&N(ec#6DQ(X^T+!RnC?S_7J*UAfW@*EffuSX8_+^zzG$oG9`Qy2*{ zw~3_moU}F^dfn(om`P=;5@9N1cJ8+eBz669?UB{*)mubGd!%wJnz8RPt3_pbM(WF{ z7Gg8$bL1CcxSjU!XPQS5&MhXRd2bx=CuG(At~+{^5_vA&&+cmJA7&d~Xik)M`FcBj z)0|{NbU#BRY4D(eR=*}`@)WHzTW{^X04!5aWKg3zrL(Rm(6-d3y5sw8!dZP7dn)3J zL<<*ju1p67)dy;AmfMbSgpI|Bk44OjK#bSI3_-j7DF_+%!PVX+k{2D()sxn9KPEaD z-JEaVO;=NP5JO)ldUJrjN((aS)Dx?g>2&fLFltIvnvdi0x@@82204a%Yc?UoN=jYE z++{N3r~zw`TIKrd(XFj5s!Ga?bbeQg$%p}qOwsxk`+>cHy8OF)VAEXQ`FFNp00wzi z{W3=4Kd9SpX`@vi_RBh9$)wGtq(Ok0!60`UDF(&v4~;#~zNC@qye44#`)xY)X^#n| zmJvxj(!iJFdI8S+ueG=6h9~S@F+|QB`wm$-wrlq`Mgx`tZ?he`$tPN<>zogRvZ7~e zxk=K+#j}+|lJSRHayL?MmZA_nqWHr?#fmr=Ye9h^e&mq1*)@SQDPc6rQ3i}+?JnDH zJ#^&NA-)qos;RKCix;Y2CCgU~C~xE0GQ(zz1g!SR?%xjw@nA9@4AQp^cxlD})6pkuC@}=Ub?ik3?m(M^i zhST^n3MLe53_YsMRp1n_JkUla<{mP8^-|>0)hASc(?}D1R9KZv4XaVLiDTgZ`!)+bKr+ zaJ~r(1_p-q1G^~L6W=89_T$OSM^Zr-T4k|!!M>%YuOX;pv4(?!Kao<<3y`K14z4k1PvJ_r4fTgFY;c{(a zr0m({p|qp#T|nr2X{)(R`x<5}8d<=eZ<^P9g{wQ2r*f333j#6RD4u?wAlO8kf8Y_% zsQu$IKjSMif`f>Q3-`mFB_H_V94}8UEdVI-FaUP!xRvrG`=_=M^2dk1_qY%as}ri@ zFDV*Ki;K?}<>WB=I_Xx@Sq#PbJ@E4i`oPYe32)w?Y_J)*H;h2~XzBk1-&!dV&018p zFho{_e+#?ct3$%kyLGt{38H+y%rfik+KP0M!Gj>B+!PI}%!WekaUkqax3f7bxQ*U` ztTL6h@NH=ugF^j%1*ECc>nkFj_^dL*35@DaYR!qaMuYJLElks|{7@u}m5`?75^Fyk zs1|v(BOy&iqJ0(LeLvac-GTq#ho%ka?l6 ze}?KWI9H1C7>S5yI~#ys8}FC^1vgIKMawC9COKhTy56!o&X4yI#~v4;=_pDG)Vfzz zrCN2O6YG^^^-Pk0U$4=lW}EzL!(uGsa4b$(5!W# za@Ma_*Pxk&aYN^uce`CoSFYr*mA`+TDB1IV-WEOB!l1#x8fBejl`?S>0vkUwHL7TC zQJ>H54CGmjQt#Pv5qGUx8^vP0hhm4Onec2+GbZ}Wd55CndEhMHizxS+@7x6mm*FcU zf~+T0vsz~w(3(g7)MhxAM#}*ZAA^XRKTqXLJa8ay$D#kvK3N9wjOgq|It9JQ`Exsz zS%z(oV{R4~Wo4sjrvnQ$}gt;IsP0oTjI(U$EF!IE)ZiHA& z4N+2Zq!%{538I>Aorki~6QT-@aW7iS1>EOM1``>uIUxz9tpNC@nB`*I_vpphDB7w* zqwyi0F%CzCDx;eT=={rGK@-oSa@MQTbCp}Xpw{~lN4>Cx@m_2u6Qpg4Nh>9&WD_nm z@}Z$Nk+#l>0bafbVSW`Ti_G>>Ymb4ozxWJV>rWxdmBxkm`Ul#a9eLC0f*E?_83P%K zCTDk<28-^|<=&^s!8PLmG(96h4rZ@2z@kr?N^=sA*X=-&6hGWdQcDBQLe^v7)kSnZ z9gpO)wt6eUr4n&|`ff}9x>rF~fAe78rP3BFmO%%0G|!{RTx31ObnqT^n=J=onsG6f zszeq_EP!h|nAV>2d^L)%hCD>mb7915Roq&CnK{Jf>g)0g;rN-v9ftF3lR5lR6B9`3 z8|_AiBq1jZuwbftsBv2qTaE354!abbi!UpP z1ZC>O<97~eeb2f!d?EdQ`)Z7jukbzP8Gatng{%{TKVl{Uzw~@c&;#F>$DV7%W=I!K zi!A7*qiTab4m}T9(-anLM5z{=u5+^c65s~fjrj^Y5yBwKLA6A_{gj*(qm(2XGS*LD z+j`s&aTpDxiJ46CV*Q{d^OJ(lTzn9o;;;;aIyE*nEoBUo)vHBW(Zf1?WKCez1a2&v z3=C3m+HybiM(p(<=CG*k7lkh^16b*5- znf)huK3g~EL~jiCxUuOzz=hxqB&^#Q=M{FpQho;NdE0riZaj1WbX8K!b1+v@{c%es za(%4&T@}j^>z*3Rp3j8jiyte|<-vU5xaDNF*l8X`2+u_Kc>;AyZ?#NF&`5W%!poa# zE}~4Ql4P}`)ko~=Ik%wJQtzA4EUGg@f;C2kZ!hm)N0P!MMtj!YmJ55)p2x~s(F#6- z-Ac~XtyXBFN~B<9st0#Y4;Fy6Xq(Lx0M_ZRmLVCT!kS1bfH%655#O$jP*-QFp`yhW}Q-RrjG~E zX&(;oUOfN#s$9a}yzQ!tV427X_g0YGjjK-9==K>2Z&MjFK5^FLBHAg5oniNn>Rbw_E9!w(?<@v0e z=4Eubb3Q)|TFr8}@uK^FoX%H_*)Z8mRsLA;L6%IbI7gjJ)kB3SNnn$2d-aTgaMHl z&t4J6jq{B2m~M-glHzvFUAgj%HK5}bn0K!JTHSmemI994tO4DRx&R=~ud$AH^B&)@ zD$g!=+#3^nRL}4td;qwjaXfmQ*P9E|r+8xsEY3>LhVgBVTNmbRhl?Rj z?h9osg(wUyhmuy#pYJ7~!}gFouE}T)er-CX{YR?syIhM~#;2EJaWEBSnpCKDtuBrD zV6za#`GD6Kh3FDG5}$GAGOHArw6e-uw+x5Mz-nW~PGM!U&t>z*X@7=M-FmkC>6zhc zbym}##RN)WJA=1p(bI0bT%e9l>4f2W;}^s{ZpbM$peX8q7JPohB&^AtTsc#K%Dt3# zhZgq$W$}vX)h)yEZuv?OR2NFy5{=&0yS-6)QO-NjD%TnT!shE&y#WEicGZEvF7CJWb0|TXs6?DQYyM{1JZhvN~&JxdJ+{(v!rV2K0Rr?x1tlh8BWm7nZi#Mgg z0m!6ZNi)vc0<{}5<e?2?RkkapWa(thn*o|(uNbug-iQ4Hbdyenk}Rh zw;z*_j?cvcFZSP9bf}uVGAEgEEK=1Uip;#aT)dxZo=2Y>pq08)@xC_pVEa^zc!R^f zyD9gjQn2B4CJ&sR&rAWuT^ziHAz(FX&CfV{SgqR}2xO!^snW!7yJB73TGw?QM<$IQ17IWw z9ecy+J!6~yE^;1xxg@sTc0k%YEj_8gU+dG*U(qBAn{^g2cY1l5U|oQZjAau5q)SsX zTTKq24$*?J@sI%~U1$Jv^#Td_8R_`~uQZ@rt?a06O7_Vg%;0ioh*bwWp6e&_XJ)%? zncI1T)gTv}U%Z2h+uIT^wachjj?RFLnF_4Gdb6=D3I!VaXLs3nGiOA;>oMZohHbfE z5r_xHrv4tYV6dGr)Ng`LS-MdzKW@U}9Cvr%CRe&l zaQ#TIWYv9Rk4FpB5~@0kS-k|E>ZGH$c@w$Ajt*m z358GB30APVQt?mj)i6E%uYNyq%CwTh0=hxs(LJ7klcqy(iGMK8zNt`>rd}8|Y^<^LhXzv; zxXIVAFNr1#nQHE!jbGrTYd@UH zr>2*TAJo_KN-S%qZ$eBzZC7Y>UoE<>^~Y!z3tU}SvWdJvq?|~{}+N28H{M-y7tk5Z3^dKAF@aI*RT{WG?N5O+oMc> z6L4qu%gBfT!;sa9E)7?|0ZH{$cv^}YDz+um)x(YCV3qI?kP%T=24k+z^Z&|LEXnrJYC6JRcKZg zi?u9VziCkpcv&|RUlWcsM2!IQ^zc|_^!i;u+X}}Y0|>JOPMc2({&hus4_r;14+H$* zith~)`0VpUND;TL{DO+CPG)KAdpmc<3Hsg0b>{GU`_h)jrbXjf^EyL6CQ{yGk(GAi zsL_*;OXYuxO#X0@@pG3yL`w0SH0l-OM;|HfKsW$^e#n?rKVHI&7l+{N%*06YlcA-j$0mqD|iZ3%l$o*?%3c z0raJc?u{ywe)Wiy8q#lex#(4%`C!+l6Sbmxqetg1F6-p)ECRooph2~Cy>o-5!J~FG z8W5E-d7qjZG!Kva5mqEpzTci;1n!r#E@-yT|G&cZPiqd}D)C>@ad?#}f>&;|EmyeL zV;og&6K&&QehI&qY_&9F^VwB>jVe)YR2vJ^VW<-#iO~G;V4e(*_B&Q={^d!6gdDwd zGNk8UV&6RANrD(>%lI#iT(8_=Q!wi_SlrtN7tv=1#Mc|erB05Oyvv} z5g9^_qIrxjetU>SpG~ZzZkgHc?)RU+eBtrD{Iu8{mY9g&aQ`cT0rjdgR*=6`UjH@0 z0h1Q?UoJdy9?Q($%TvctS}krwK)}Un-Ab5%2+BCYE4_0k5T^FiV}?3SM2|CRQ!+Y@ zbawi&S~WE`Ez|pf|L}zPXB%ej?;`*D;Tm8q zFbs5tKG7e;)T869FIH$ zfXZK>>!?1U3NrER3L^>xdJgFgr1B&Rc?)J`XR`pEXSdGXD#8Emc?2ll*^Q%U9Avhk z`MtaS$(1^SHC&%Q;y79)NX7{^f0eT$)?d=d6;Y1;1j?{1b7Iu#(9f$K1TyW)>h3dZ zGM#aTPU|PSk-xDJgHb+^#@pFC`+N_?6joy-z?Oz43YC-}ACUO}1h9DFr1JRBew9F9 zt6zmIuuq?2U}E|KV3OfVN08b0cN`>~*HjIPoCiQzG^KwvFb?tcK>Msrpzc|%!HE&* zPG{1?zx($j|1DhufrI!faKc?z^PWzXpK`OB_WH=XHCiqBa4=zTU+u!As(BL===A#3 zh;w&U19cBf+VqT$QbV2oUX6{7Z!M=Q{`=b)VM$}miO9$zfF^7NPr-X}mCBL% zmLcwAo=*t{cJcY?Y5T+dElwQrR6MOBtW;~f95%fQGSK2aW-}DUHSo9B^7jH9oz|L^ zB7gLT;+5p2ZD82^Z1~E}I-lf8yEbQ@RnyD+f+94L(Fu;|wb9c9kBd1J0BC<7O(YSn z(^fpan;S-IKr#!OP8YbO={d6B@i?7A5uKB!h&lIO8mN<&B>d^SPV~d}3e!A$`Kvf$ z-#Y(fifIJ-%5oDGAn2IamtgM2psDstZUE65N73m?`)dAUF7fOBe5=G-4Oy+s1!e$i zvEGqx5rcSBKg9F)qNiA0x+ZQRR=2?k1!y`qntE}0Dbeh4Z3FmoWvBl#5+aI- zBN-XisQ+UEmJTj4{p|(t&t&}bB}Co33_UIc^2=TkU@mO6vE-p!sql2 z$GVNx@S;ecFPv#_S<)V@!2~!J2Lpf%5Ax4_PF7R@mIA8r(zs0C*!J+8tbo7#fY5cD z;AwIM~q4{h3y^>}-Ag>6iHspFq9wqrc4V^u02vazh*z{x+ zB4E4I&C0_5bQ0O?dU&IVfcD-^J20@QJW9K`hA{DI(g~Mi?c@1qV7bRf`MG8Xjf-PU z@3w0xW-Gx(_VB*7uiU}oTqpX@(NNGChx;TDjTFMkE%>Nh;vA6N}BCVyyX3@V=vmt zm)~n%WLnt}U1ajC074}ImE^VmkFu5r-jRHH=1R~nvpE2F^phe=K`H@K->zl2FW@X> zA#yu0GyS?n##1s~(DQq_>CnuBtmUb=M2b-DP;vuRECw+Vk>xC6hB53bK;D@6WLYHe z`O%y$J`PvaTfjX9p0?Ny@ZcZ`d}B-b0ziM%d{$t-Zx^9`1N}@max9AM7&dzM^R0k5 zlTc{FtrBjg;fH1$&J<3EVfkEgW->CD+uTaCDi3|3(8?u=5`9Ysa7~Vk91*4XeXzcW zrg}Z-`*?q9HD<0fPFtd)RhS?yZ6twVi;ka$;|;#!h0{B+A?LmV=g@v^BB8rlnElyt zww)M5$o!+bN`zX_JL4BwB~) zR;vBP)AmW2^|M2voOexP7X`T%EfjXQR|_O(WyTNGuDcIZH>_PA{6;iCrWK|+UX3`> znfDf)qrA6n3{6PjS}`=#E6XVNpR&zI$rWXrrV=XnSb@Cqow@r~rWFas_(6@Q-{O_t zFISQxGf=wA*;Z8lsrhRyry#mxac$7|7RrpXRvvJ+9E93Cz#n zEr7L<;Zo$CC|&NuJ)>Q33Rf9&$3nB`?A{&VFQo8esWLDD79Oef1K&vDY!ZRNzuBKr zCAD5_%8N>_!Hv;kJ5OTiJeqLKwrBCigPUq96AIEtcp=_KC2q3Hy*IC}ex-7d$c3o`x1;H8SqZCs5 zeUOzbz^>2k6s5B5XA|#=Z7~1W7VPZ|#W&Bu8`ucX!E^z$g+`tVQ@j^NR7l2MV6$OZ zKzjSD(c~I$buZ7%2LfV^hKn1=eSb~AtCvf_Ua6vNq*)>J9l(qG*_q9K(3S85$Kvc# zPf*+b;~NAH{0ufq`0|`v1c+v~s@jrdV3;^i7M$aM9o~a%-M;`oe}S`3qXxvg>IQ`^ zp6SHCfbyd~+l*vOT{4Qhe8AL*f9Sh7#+fDN_X5UG?djsH`?i2Xqe2DEmMgtT05T!a zgKAEE)-|wrrXb7RZySr(;wF)lswOP|Scf+0=i?VQoxU`h!1tPGKeHi?96%Qf1_r-FWxW7>={SBWkiFJ5uf zkG+dI1}Dw&coVSIe-ay8btf#XinsLmh<&o*M$i;rHe$mr@MfwYiHgW@5lOhQ8nZi# z*d`43Fk3RCJTHNh&x_EBY*iz+25=nWNxou{dW!(v)lyPX2gP>h;c1?4vP*#pjB7?_ zz+fsKE85B2KHX~X;Pe`qR#KRBt_#FtSIb{1fYPvZb8rnsX70KflFDky@9V=V!LQFi z$AJ*>eCET%9?(OwuT~qV`~{fl?kExdCmNB#IP?bRJL6juB`L?tR)8zeH#;cK>yK|P z3O*KMs+4L4v6&9wOEW6HbeSyGzPdXd4BIc>A6j!T_DlA9`}P8`1d11Y`@_j|f(-^3 zFS7rP*PMAXOBmns+0QxpNk?Bal8 zzj^T^IXo5gkv?g#6h-qi-=&bEo2Bw2s?c7bj~XA#5En_U~RYF z7mibOk!8?{=~6AsQ{EAYs+3>yIRbH_|VR;P&S-E6$S92`j1yPnib$BXtLP|^d6(Y! z=ky~ig3|RJc86~9i8J^ZqwEeSijBdhcnIRw?!K{(>v$>I7>`JRAFXnAd=hg}zQ-$w zh*S6j<3xWoId<%?S|}z#)P;|*0xYZXwULnn=~RIz%*$BMK&CT{X+D=Kr<&9HW``|OXjbeH#@0Xb=Y7ov5qhoQL*X2)~XKZ)Ca8mgrBn<3+H$p z!tZuw)_A$#ZZ=a@c!#hJtoAI%z1ZxaDRjW#H40ZejPT1ZXUvfv!IiKp|7U1J#p-Nh zMXG25?iaDsRfdpoG2l>hyq=&-SSFRY;Qi>SSV~8#>v8-Axm7Ne8$(}TU#;Guu=D&= zSlWD};jZT5r)KPw)3*Q%TXo*Zwxjc zsv0hPGCs2VHHS(+gj$}_*fia-^1A=bfJ<)zekc`h#=*ObPW z(DCTkY=z;pO9)$O^sZyoW;)jm%4Ei3gBcKhtwI_>V&YoJz*~r?+z)I|;IKr%B`3p) zleKXvCjMz2Ic3>rBekSeET?d4@ z=cz&QtByRPrwW+UVSNQ@Y^JEVOj@*??>dr>X4JEF-nzicezCB@%(>M7ql;baW zVU678Xyqxv59-}Tr{Yj0F0$3Jb4Yg-&y(?Y71_dOq=C#@RJ7>yH{+em4NSaNlq&-w zAW~K$U;Sl#RXR#e?dOnd_hDL$r7t_iCt3EY5LoaUXgoRhN3)iGXvU9?x)~dMEmlqs zzyiR2gU~PV{A5CH@tr!a#|?LW_=iU>PYf@n`B5)HXnms0Cg=>WnVe@0dpf zk?QM>c-Tpc&V{s|i%drHIOBdELlHI`wR0*XJw77k93-WlWgkz9Wlw9HM$z21p>d~ueXR-v)8nZeK0g-pG$7T5H*+Pra6COy*h@Vwvs598X^w$5X)0S6twbirLrtm0Vl- zDul&q$H)jT<7d6nMDgNF%ugyys}c2C0FjECBq!%hZ1*ybo!5DpLOh%>jJMh{Q*#n+ zenr_KG!ym-fi%r)4Gk=$rG25R3^k`CT)SuM@5B^4Syf9@Cz31wLVFm{j|$8vji*Ki zf#%>CBqU+qzP+p@mrs22^C&>8QCKwxu%7-#_BuC}%~Z~)FHw;vcN&N?{L{@r2%w%e z9-55ylzk@nFSfA0R9J}>3knBS()Z|Nv`I=2RGnr%8C-%O^p&b0S=~PISj4G#bCqWt z4V?alWR#jMGJ1Ju_-ugg7=@U76_p58>y>&+UvecWU<098BS)LeRg%7D38a_h`++j* z>48)BALboyqJqJqNi`yhC6$&koc*Lh-82#C8Z|86Yj!BSqgnHiDT=Ch<%McND?{_# z$VpXG>km8OUNGB3OZQ$DaniSfUJpmMg`1Uf2Nla{YKReR)EVWD4u?zLfkw&#QbT%@ zJg@+t+m+trjzM(K@NKiSNVm~NkwLPC2#|-b{peXcgCt{}5gcQccjzqeyRz>FXj)oJ zlaZ48x?diWL#3Ii=@1{(K7OHcnyxgiapVacm~ZwZYPv;fT@Y{&+rQkOW`wPn8Jwfj zOz_)y;iW?xlN;OhU{Kcz03rHgUmq)-No{1Q<%u7saWII2wH2`8I~Uw}+%FmOO%JC8 z4#!%w2NvijDlaR!4)&TZOQ$-6wG~C19tT$3smOido>S>h$h+Kv`v$z6pR$~qIK9sa zNBOvR6!!~vKuO%R z_otgRKO8N?iSpxQcN{rSy|O*q;7jrMO%>Nq8ce-Lfx z%5aSm;lf{}lx>cVqR4RTtRSd#mR+IhLJah;;ffc3JQq?fDm4DVK~>|tC?whu%ArTLjZd#q`fk^WBnK-l^FeFiPxveo4%9o!>7bEn_@5Hpe~NJ}X}%HQ);X8VvG9^C z!U)>kS!CC@4l_!J?ifh>4<oS&-4Is!Qkg1{2&`fjK6jV9F zPC_7{Q+nxP9k%;%Mf^#i3#YZ?+uQj7`7{(99*=+wt12?JmYSr$4G4{3ni`|I)$5rA zM&G%5aT4>4*AC)~_z4l{d=%5`@|v6m>O*)s&-W%xn(cvP(&Z{~!bMw+pr2S!;T}7O z$|>9)ZyS~!KI`(x`fS)q&-nE=x}5RIr1DS`62;M~&gMJM%}lJlR?J%lY#b(Or_?0L zrr_Z`yomuCtAMo9`UfQH4_Q7jONUkZ zf8Ffp1bXE9k$Bi`Azp^@Vo=-0L*y0^TCEOvl5wYToy{C`A($B|G&>yypm|QW@DyR^ z4P>>-9_XV{HcEFD1LoYzzeT;eH6NH;2rNE{9aGerrslR)BZS$KA2i&|-A~7{0Ua zhNLzo+wZ_+d6r||r}M*ELG(v~QP-TTc9Jl>U;;nrK)M_pzl+mMj-l-VMZK9zVmp^` zPbQyLFYi9;HchrK_n!}0?lENjCd9=LdeqaaOr)ZF^>ac>ff03nTYHsVFa3T6#8hwf zMk$QpL}naFBod{dotrqet!l5n(RwdXm`0iix(%r;cG>EY2`a62Siw}@mT)_C4F%9l zqI0?v4aSj|#3e>GIPR5hYbm4W?T)5lvX&fp68n(t8QqZ`j97)K<^B- z*#pg8kQg#d_=4>hTcl#?CP^X_1*S+U%~w;XjI6vpGyj~saB!2%YPMP#YvGj5@zLIC z<#0!`<~FvVk<1VVgXNuMd>KS)(L5G&k9u7+X-KrcbWUmpC58~_`h*l05o(3=)2C1S z^A+zKJ)Bvlsh2Okznpge>JXe^K_c;W9Y&*8K(|y4NLi8gKVJKK7JdSRsdu4DY&jiF z4lwEzsXU0Ia=TqBos#E#1>NHOQf^QRx!ycrfWT58_EiIZ}pcc>_+>aGh46f0GbT7xL%Mpi00OH}C*@a@vcF~Z;9 zEfh<*IFd{1)W!_D#`;Mfl;e8#h5#=WM5bu$$mIqTXeMTRJw_2>PNx|bd#n7u_qR_} zN^=70)wcj`ATV+`lY?(Jce=7kwU3jpScZRlvKkmeu9!b{b9dJVaTdA%+IQBu#Zq_P z&GqvE`X#Ejtyn!3f%hwyR3ei+`V98@UE|Fp+w?#Y)~8cwx1Rzi$bnKw`b;$1g~){} z1tERm>FZ}VSlQp}?`*yG&S-RJsxETR$*krwka(bc2>cYNwHuMsc-;I;mTL8Zb7G$W zX7p*fHa^5N^qA}RP zVw{G4xH-zQ%XlYtv63&DHf6o&0*_m=Cs$^pJ@D8Sz*mg4VP0o@*YgI{fzE0YLt!zU zV6WC{K-|x^Tt6`;MhoK)y2XpIlufC#(V$(B3+O*)Jro7?NtYk5RON9^Ij#7^veE3$ z6&qXX_w)X8zfQ`89>@_ox=}jL2?JsW!!Ls4X$(geof)ucM{?HAHUfxA$Bw^r%Do&+ zi8>vR>kQT(?2(4FQ_|aS5*dl5e}X-lgT@&4P3KiEgkWeLeYMQsx~dVqvpK&W4xTPh zC{XzD3B%v{XfD`6*4%C^jT-9{RN29d<*P{eYMcH;l(2y{bSHT#((YI?Ay;9zSlKj1 zXM&_d& z)+w=_l(#dYE;V)*vstT$%pZlx#CR`^-7K6=6o%Z9S+jBjygqfF{lZf)mi9aBBJA5f zKV(1W^nx#7G!nik&A`<&QCcFJK(kq9Dd1-P&?}ul1zXE(ISs#BsHjYIb2uwPp^vT6 zY(yRh3D5L2VtS6Z#L>ABYykwGrrcWKMQP3S24lYe}@Y-}PAP?_;o=Zd{}C9KGa)`fe#lc{QQaAkBZ@|0>PMw z1dwQhw$m0UH!)CQa9}Wl)u6S&Fu7DO4GOz&d3`N6f7V#w;rI&11=oJ8&M4QSq0El$ z_BdN8k27OA)4}_C3X|12ghos6_{apvj?gER2szC7c**q30|fydk#5NJ)9vvJ;E_OBwI=pmi`~(}4QDDzC0|R} zT{s;nqcRwclH!I*7|qy#)z5UlvIlzRS!x*w>uWa0_o* z)r#OTV!G=zQg~P8Vx0SZrBSIlJ1f#}CUfpP3o|l*%s>@s+ zp)f^&?#N$DWzkG0l(|?3p^Z02s8`(!KW{2qyvThGm{JQ3t%ag%{lgRv2L7kzuaw}w zsXhL~iwbeRm4pm_dhAd<#^#V6ZCl)@`58~fUtLw+^ERE!%}>2bkV~SaaT?wf*Wdr5 zy5|9tF>ek|N59X7cImLofe4W~vX8+GR?@q=md-wHES-KjlS?=Ij zNMElLryOJmdlI7>&41B#mS|QaD<&2CPUX5%I^ipKQ2VsXL(*31laZ=E?#cg|%y7YL!Gkq`%&riK-*;Jj66lhCA-j z_CNj9*BAWi5sqHyzD;~S@8)BU-vafDpH_Mf|-n5r%)d=K`x?? z@VKG=^t569=%^?ySbW2Jz|NA4iQdnNWUItLim1hA-=6cwL zFr^G4z1UUf*UnoK^nHe=1WaH#KicJ9qXChp#MN=IG0X`Z#mwUvolUxy#^Q%F^ zqi8tZ5W}U#tW>&C!U^N1)|}(sSa8L=?7f?Xt39J=TU|kzIU-I5P^j-dCmeftKtRkZ zVEyB!{1rVbcrvckzuAo2VJ~W=R11>*O1UaLs?GBuh>Q0gu-8ZDVmkJL)2#Dz9hek+ z+v}Q6;Sk!ObKm-*I{k(iiqLbr9|6I6lga`r+|n?r;P`qV`y+WKLxYjCN>7XXgT#oX ziB79$!K%ps_7~lv*p$CYaq(}Vwap0s`F#G5(x9CHLQO(#I~ePBWAf2UEQP27A{ZO< z%QV4f^$NtMFX>&Q+NP0WuGB6k3R6L*h|Yz&YTlpr=2C@!bVJG+x&mGHe9havFQuZL z-QrXXR1VVUpU0uH>-STP3ck_1ybYWP0!xmnF>V$Zch*!k4%tnj?rUpoG>y{;$rt>q* z6~ZlaN-K>TZdsF>5S|Dut$VVuTrGS^uCp2N{A6!ZoDoB*Dx!5KOoQrRi@cge&jvW=UnL{nUk z?y>8IAklE$Uvm5$eU(zjiLPvnEA&p3I;$R#a}1?qGsF&30NxZVdbh5T4)}b3Z1N$ zgISD9>0HdGAqpd3bGLy6Sn4tUoQOe$oE6ZmST8IV6JHfcsIm|B4QEk6DEnP9(4aXs z+0k!v8Sdybq_HC*uBtnxlQ|DE=Rt5wn?C3?d#aN&EZr2Td5mm7c)g}Q;f`ulgU)k8;_u69`UdEVf2udfiD0-!HnvVSNg+#KLx%!PM z0q4Chal6P;xm3OH|FPtmk>7HBg3Z?aC@G~H3_h)OD+=TXFFOK`j2y-hVO zNOZq>gcS@3Z?7^%z&c|B^*E)$C=*K{qip~>t@=ALYG<9`^ERhjvYG+_lh9DDwNg(! zTfJg+!!1?d7nv;Ob|bnE+dtn}(MIOt( z;u_A^?RKpifeXJV@z0UXvw{8KBZsK|J)uDpR-@R@Z#3 ztjMgs-{Qi;V;LOIe7Dg*&-!or@33(f{%>gJEhAESOnE<(^xCT*db`A(MUa%AW3tdPMvz)0Ds?hz-wfqkxxo%aOpzJ}%20fKnuTZ>ZV$luM{2ri&z7NKZq91tvN!`8 zK&xdX^sTt{>4Pf3iVwZt@frwHgmA_E22@PJ4RMNjQzeq5DQsT>#1~iSVNhAF)r$Rz z^yP%t?oA*Pv40Un!13N*UM;C@D={?M`d;qHct#ak5GpwpH)c9Fbo(d3>TeftmBeJ@ z!+f5WAu&3fEe!?trWQJJhn35f!q~p(51s0~x;kxX`c)+{@Y%X_IzwAitJxJJnZ;J5 zC%rHOz#YZ#1xV5naZ^cUQuyMi)X$G-rFYJa{cMmm9`omErITy;0;75^#C)Yzn{4qa z1FNE#6XicTp0X-B%iquB%i|D=hIiEBaLQ%d>1(0jE&?Op(I1Y;qe+6~KnF3o?q!Ok zvV70}q4bV%aDd4og%NU;*WD@SwVz;!5VdyRF@J6)`e2e`?6bDS*(JRRA99F}mHO{vufM*$v3GDDBun;8F9fLF=V z=@RLu74U__Vt|M=&g;*yY!61;pRKBc(N9^%Pn?#odJ(-e9*Pl}B9ZRyQZM4yZv^!9 z__|39lq&h(NJ81%14)oZ{{W0(5cIN2@EQICg8!{NG$Ga#*N?ml*9`LLqam=SF;&8y z94)>IlkSYCS@H>vKkZytfYeE~?9MH~N;zsB@UT1U)@Ey9$FJ0>1;xqqtOS#;Z*P9E zJg+21XRkD3==Y_BK|&`VHI|MfUu`H2P#G4!6x88cMFJg%depaG7zp&=Y_~%Yr z?6lCG!l4XFF{(9d?@?e6=Y&HwoKdt6XS6`n42=;AJA-ljp%ydi+zv5x66s)WV~tHs z(1iMgzkAV{CAnUFbp|S6KFk}cY%IDn>&xmBcqKVTm50+=P})ip#-W9hn~%G54#Jm} zN7(rm57yNduPjWVWT2C7)@?I5X}p=Qv1H}(ehHa2Sow|Uwzl1fELP+1K~ugr9!|hr z-F)T|_C@FMxJ`k{kP=zyuTA zAJJ<(vkHTa{;eX!`3t=tYTXP`yN77>hdpWHc2J*^!LklM@EX5ERT1)hl|EK&xcb$3 zQD5uEJCp@QYoa7cbC?WY1h)Pw9ujww1YBesRxg2|x@-aTYx+@N-1f`!p4p^T@ivEz zl;#HY_J!fQl3y-DZ65Dzc=~(^@TD|L%%Ja*av34(&jJFagEo@yIr3)ejqPZMdhJF^ z=+DO>FTZU6YE9}vO;>GAn_}WRq#UNL+yvfriaETOOE�x|u7T_Sw6C0wNzBp-e5sPA@M}&Ca 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

qU^g5^C`EKNtQ^?7wcnLYWJ=V=T+8329!5pCS!* z6K80-BInPgekp0Fl(VtUW%!NEME|<)Nm2Qlff6W`UU|CYYsH_h0;n9&)R8E+aH66& zTJ$8UqGI+Qdd_X`+|>r+aisf-go7VbDI$Su`*aYVe^lLNJ1|QOmtzMAj<9c0e>0~4 z|2*rG_#(VqfgJPpk9U)g|1$B6n79S{Hd@Z-CnA$Vs+E&=?0SXD4i}P2Dl{d|gMsfP zH{mLEzm~N(QD;w<^9|+hv4sNhN5Ll?Wze{-m5Jf-)z8}DIg94Pq&w4|$eVcKR$!l2V*);8e+H%)qHbo>?HQ&|V zAp9L}-FLvbI0z78Cyd-XIy(vmv{E3BUDnqL=F1*CCz)6P{RDF5|^^e*~xJCb�XPEhzT4X>U0gdv&A>to7 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 I 0 + ) >= 2 + for: 5m + labels: + severity: warning + annotations: + summary: "Unstable Couchbase node detected" + description: > + {{ $value }} nodes have reported {{ $labels.node }} as unreachable. +---- + +The `expr` field in the alert rule uses the `increase` function to see if there have been any increments in the `cm_node_unreachable_total` metric for each node during the last 5 minutes. +It then counts how many nodes have reported each node as unreachable. +It triggers the alert if 2 or more nodes have reported the same node as unreachable. + +You can use this example as a starting point to monitor for unstable nodes. +You should customize the alert further to reduce false positives. + +For example, before triggering an alert, you may want to determine whether Couchbase Server has performed an auto failover on the node. +By the time Couchbase Server performs an auto failover on a node, its peers have already reported it as unreachable by incrementing their `cm_node_unreachable_total` counters. +In this case, there's no need to trigger the unstable node alert because the auto failover should alert administrators to the issue. + +[#stat-rest-api] +=== Use the Statistics REST API to Monitor Node Instability + +You can use the `/pools/default/stats/range/cm_node_unreachable_total` REST API endpoint to get the values of the metric over time. +The following example demonstrates getting the starting and ending values of the `cm_node_unreachable_total` metric counters from the last 20 minutes: + +[source,bash] +---- + curl -u Administrator:password -X GET \ + 'http://localhost:8091/pools/default/stats/range/cm_node_unreachable_total?start=-1200&step=1200' \ + | jq +---- + +The previous example returns a JSON object whose `data` field contains a list of metric counters for different nodes and reasons. +The following JSON is an example of the response to the previous example: + +[source,json] +---- +{ + "data": [ + { + "metric": { + "nodes": [ + "node1.example.com:8091" + ], + "instance": "ns_server", + "name": "cm_node_unreachable_total", + "node": "ns_1@node3.example.com", + "reason": "connection_closed" + }, + "values": [ + [ + 1775762638, + "3" + ], + [ + 1775763838, + "4" + ] + ] + }, + { + "metric": { + "nodes": [ + "node1.example.com:8091" + ], + "instance": "ns_server", + "name": "cm_node_unreachable_total", + "node": "ns_1@node3.example.com", + "reason": "net_tick_timeout" + }, + "values": [ + [ + 1775762638, + "36" + ], + [ + 1775763838, + "39" + ] + ] + }, + { + "metric": { + "nodes": [ + "node2.example.com:8091" + ], + "instance": "ns_server", + "name": "cm_node_unreachable_total", + "node": "ns_1@node3.example.com", + "reason": "net_tick_timeout" + }, + "values": [ + [ + 1775762638, + "34" + ], + [ + 1775763838, + "40" + ] + ] + }, + { + "metric": { + "nodes": [ + "node3.example.com:8091" + ], + "instance": "ns_server", + "name": "cm_node_unreachable_total", + "node": "ns_1@node1.example.com", + "reason": "connection_closed" + }, + "values": [ + [ + 1775762638, + "5" + ], + [ + 1775763838, + "7" + ] + ] + }, + { + "metric": { + "nodes": [ + "node3.example.com:8091" + ], + "instance": "ns_server", + "name": "cm_node_unreachable_total", + "node": "ns_1@node1.example.com", + "reason": "disconnect" + }, + "values": [ + [ + 1775762638, + "3" + ], + [ + 1775763838, + "4" + ] + ] + }, + { + "metric": { + "nodes": [ + "node3.example.com:8091" + ], + "instance": "ns_server", + "name": "cm_node_unreachable_total", + "node": "ns_1@node1.example.com", + "reason": "net_tick_timeout" + }, + "values": [ + [ + 1775762638, + "16" + ], + [ + 1775763838, + "16" + ] + ] + }, + { + "metric": { + "nodes": [ + "node3.example.com:8091" + ], + "instance": "ns_server", + "name": "cm_node_unreachable_total", + "node": "ns_1@node2.example.com", + "reason": "connection_closed" + }, + "values": [ + [ + 1775762638, + "7" + ], + [ + 1775763838, + "9" + ] + ] + }, + { + "metric": { + "nodes": [ + "node3.example.com:8091" + ], + "instance": "ns_server", + "name": "cm_node_unreachable_total", + "node": "ns_1@node2.example.com", + "reason": "disconnect" + }, + "values": [ + [ + 1775762638, + "3" + ], + [ + 1775763838, + "3" + ] + ] + }, + { + "metric": { + "nodes": [ + "node3.example.com:8091" + ], + "instance": "ns_server", + "name": "cm_node_unreachable_total", + "node": "ns_1@node2.example.com", + "reason": "net_tick_timeout" + }, + "values": [ + [ + 1775762638, + "20" + ], + [ + 1775763838, + "23" + ] + ] + }, + ], + "errors": [], + "startTimestamp": 1775762638, + "endTimestamp": 1775763838 +} +---- + +Each `metric` contains the following information: + +* The `nodes` list tells you which node is reporting the metric. +* The `node` field contains the target of the metric. +* The `reason` is why the reporting node could not reach the target node. +See xref:learn:clusters-and-availability/unstable-nodes.adoc#what-metric-reports[What the Metric Reports] for a description. + +The associated `values` list contains the starting and ending value for the counter. +The key for these entries is the Unix epoch timestamp of when the value was recorded, and the value is the value of the counter at that time. + +From the example output, you can see that during the 20 minutes, `node1` and `node2` reported `node3` as being unreachable due to `net_tick_timeout` 3 times and 6 times respectively (the end value minus the start value). +Meanwhile, neither `node1` nor `node2` reported issues with each other. +This suggests `node3` is unstable, rather than a wider issue in the cluster. + +NOTE: You can also see that `node3` reported connection issues with the other 2 nodes. +However, because neither `node1` nor `node2` had issues with each other, the issue is probably localized to `node3`. + +You can use the REST API call in the previous example as the basis for monitoring for unstable nodes. +For example, suppose you have a custom monitoring script or monitoring tool that queries Couchbase Server's statistics API. +You can have the script or tool find unstable nodes by performing the following steps: + +. Make a REST API call similar to the previous example to get a snapshot of the `cm_node_unreachable_total` metric over a time period. +. Compare the beginning and end values for each metric to spot new increments. +. Correlate the reports to see whether multiple peers have reported the same node as unavailable. + +If it finds an unstable node, have the script or tool alert an administrator so they can investigate. + +== Troubleshooting Unstable Nodes + +When you find an unstable node, you should investigate the causes of instability. +Nodes can increment their `cm_node_unreachable_total` metric for multiple reasons, not all of which point to an unstable node: + +* Planned downtime, such as graceful failovers. +If your alerts do not verify that the node is still up, then you may get these false positives. +* Network partitioning. +When network issues such as partitioning happen, groups of nodes report each other as unreachable. +To resolve, investigate the health of the network including routers, switches, and bridges. + +When multiple peers have connection issues with a specific node, you should investigate that node. +Node investigation can include looking at the Couchbase Server logs for more information. +This information can include messages telling you when other nodes noticed that the unstable node became available again. +The length of the outage may provide clues about the cause of the instability. + +Also examine the system log of the unstable node to look for potential hardware issues such as network port or disk errors. +Error messages often appear in the `syslog` or `dmesg` logs on Linux nodes. + +On Linux nodes, consider whether the kernel's TCP memory pool is under pressure or is full. +See xref:install:tcp_mem_settings.adoc[] for more information about the symptoms a kernel TCP/IP memory shortage. diff --git a/modules/manage/pages/monitor/set-up-prometheus-for-monitoring.adoc b/modules/manage/pages/monitor/set-up-prometheus-for-monitoring.adoc index 6ebfd69310..d81f607163 100644 --- a/modules/manage/pages/monitor/set-up-prometheus-for-monitoring.adoc +++ b/modules/manage/pages/monitor/set-up-prometheus-for-monitoring.adoc @@ -1,5 +1,5 @@ = Configure Prometheus to Collect Couchbase Metrics - +:page-topic-type: guide :description: Couchbase Server provides an API endpoint that helps you configure Prometheus to collect data from it. [abstract] diff --git a/modules/manage/pages/troubleshoot/common-errors.adoc b/modules/manage/pages/troubleshoot/common-errors.adoc index 178ffee678..2bbef7b67f 100644 --- a/modules/manage/pages/troubleshoot/common-errors.adoc +++ b/modules/manage/pages/troubleshoot/common-errors.adoc @@ -272,3 +272,31 @@ If the CPU supports split lock detection, a misaligned atomic memory access can The mitigation can artificially slow execution, causing a pronounced performance drop for the affected workload. For more information about how to resolve issues with split lock mitigation, see xref:install:install-splitlock-mitigation.adoc[] + +[#unstable-nodes] +== Unstable Nodes Causing Frequent Network Log Messages + +You may notice performance issues in your cluster or frequent errors in your logs related to nodes being unreachable. +For example, you may see messages like this in the Couchbase Server logs: + +[source,log] +---- +Node 'ns_1@node1.example.com' saw that node 'ns_1@node3.example.com' went down. Details: + [{nodedown_reason, net_tick_timeout}] +---- + +Later messages may show that the node is back up: + +[source,log] +---- +Node 'ns_1@node1.example.com' saw that node 'ns_1@node3.example.com' came up. Tags: [] +---- + +If you see these messages frequently reporting issues with the same node, but Couchbase Server does not perform an auto failover on it, the node may be unstable. + +An unstable node periodically becomes unavailable but recovers before the auto failover timeout expires. +An unstable node can cause performance issues for the cluster, even if it does not lead to automatic failover. +When a node is unreachable, other nodes in the cluster may experience increased latency as they attempt to re-establish communication with the unstable node. + +You can monitor for unstable nodes using the `cm_node_unreachable_total` metric. +See xref:learn:clusters-and-availability/unstable-nodes.adoc[] for more information about unstable nodes. diff --git a/modules/metrics-reference/attachments/cm_metrics_metadata.json b/modules/metrics-reference/attachments/cm_metrics_metadata.json index 83d38d9d50..acbc6eda43 100644 --- a/modules/metrics-reference/attachments/cm_metrics_metadata.json +++ b/modules/metrics-reference/attachments/cm_metrics_metadata.json @@ -11,6 +11,18 @@ "stability": "committed", "type": "counter" }, + "cm_alerts_triggered_total": { + "added": "8.1.0", + "help": "Number of times an alert has been triggered", + "labels": [ + { + "help": "Name of the alert", + "name": "type" + } + ], + "stability": "committed", + "type": "counter" + }, "cm_app_telemetry_curr_connections": { "added": "8.0.0", "help": "Number of active app telemetry connections", @@ -71,6 +83,12 @@ "stability": "committed", "type": "gauge" }, + "cm_bucket_autoreprovision_total": { + "added": "8.1.0", + "help": "Number of times buckets have been auto-reprovisioned. Only reported by the orchestrator node.", + "stability": "committed", + "type": "counter" + }, "cm_build_streaming_info_total": { "added": "7.0.0", "help": "Number of streaming requests processed", @@ -125,19 +143,55 @@ "help": "Encryption at rest status per data type (1 - encrypted, 0.5 - partially encrypted, 0 - unencrypted, -1 - unknown)", "labels": [ { - "help": "Encrypted data type (config, logs, audit, bucket_)", + "help": "Encrypted data type (config, logs, audit, other, bucket_)", "name": "data_type" } ], "stability": "internal", "type": "gauge" }, + "cm_encr_at_rest_deks_import_failures_total": { + "added": "8.1.0", + "help": "Total number of DEK import failures", + "labels": [ + { + "help": "Data encryption key (DEK) type (configDek, logDek, auditDek, otherDek, bucketDek_)", + "name": "type" + } + ], + "stability": "internal", + "type": "counter" + }, + "cm_encr_at_rest_deks_import_skipped_total": { + "added": "8.1.0", + "help": "Total number of DEK import skipped (because it already exists)", + "labels": [ + { + "help": "Data encryption key (DEK) type (configDek, logDek, auditDek, otherDek, bucketDek_)", + "name": "type" + } + ], + "stability": "internal", + "type": "counter" + }, + "cm_encr_at_rest_deks_imported_total": { + "added": "8.1.0", + "help": "Total number of DEK imported", + "labels": [ + { + "help": "Data encryption key (DEK) type (configDek, logDek, auditDek, otherDek, bucketDek_)", + "name": "type" + } + ], + "stability": "internal", + "type": "counter" + }, "cm_encr_at_rest_deks_in_use": { "added": "8.0.0", "help": "Number of data keys in use per data type", "labels": [ { - "help": "Data encryption key (DEK) type (configDek, logDek, auditDek, bucketDek_)", + "help": "Data encryption key (DEK) type (configDek, logDek, auditDek, otherDek, bucketDek_)", "name": "type" } ], @@ -149,7 +203,7 @@ "help": "Total number drop DEKs events (when some DEK expires and the system tries to stop using that DEK by re-encrypting data)", "labels": [ { - "help": "Data encryption key (DEK) type (configDek, logDek, auditDek, bucketDek_)", + "help": "Data encryption key (DEK) type (configDek, logDek, auditDek, otherDek, bucketDek_)", "name": "type" } ], @@ -161,7 +215,7 @@ "help": "Total number of data key generation failures", "labels": [ { - "help": "Data encryption key (DEK) type (configDek, logDek, auditDek, bucketDek_)", + "help": "Data encryption key (DEK) type (configDek, logDek, auditDek, otherDek, bucketDek_)", "name": "type" } ], @@ -173,7 +227,31 @@ "help": "Total number of successful data key generation events", "labels": [ { - "help": "Data encryption key (DEK) type (configDek, logDek, auditDek, bucketDek_)", + "help": "Data encryption key (DEK) type (configDek, logDek, auditDek, otherDek, bucketDek_)", + "name": "type" + } + ], + "stability": "internal", + "type": "counter" + }, + "cm_encr_at_rest_retire_key_events_total": { + "added": "8.1.0", + "help": "Total number of successful key retirement events", + "labels": [ + { + "help": "Data encryption key (DEK) type (configDek, logDek, auditDek, otherDek, bucketDek_)", + "name": "type" + } + ], + "stability": "internal", + "type": "counter" + }, + "cm_encr_at_rest_retire_key_failures_total": { + "added": "8.1.0", + "help": "Total number of key retirement failures", + "labels": [ + { + "help": "Data encryption key (DEK) type (configDek, logDek, auditDek, otherDek, bucketDek_)", "name": "type" } ], @@ -264,6 +342,32 @@ ], "type": "counter" }, + "cm_fusion_bucket_state_timestamp_seconds": { + "added": "8.1.0", + "help": "Timestamp when bucket entered the fusion state", + "labels": [ + { + "help": "Name of the bucket associated with the stat", + "name": "bucket" + }, + { + "help": "bucket fusion state (enabled/disabling/disabled/stopped/stopping)", + "name": "state" + } + ], + "type": "gauge" + }, + "cm_fusion_state_timestamp_seconds": { + "added": "8.1.0", + "help": "Timestamp when fusion entered the state", + "labels": [ + { + "help": "fusion state (enabling/enabled/disabling/disabled/stopped/stopping)", + "name": "state" + } + ], + "type": "gauge" + }, "cm_gc_duration_seconds": { "added": "7.6.0", "help": "Time to perform erlang garbage collection", @@ -542,6 +646,21 @@ ], "type": "counter" }, + "cm_node_unreachable_total": { + "added": "7.6.11", + "help": "Total number of times the node identified by the node label was reported as unreachable. Depending on the reason, the notification may be immediate (for example, connection closed) or delayed (for example, tick timeout). This can help identify intermittent network connectivity issues that may not trigger auto-failover.", + "labels": [ + { + "help": "The node that is unreachable", + "name": "node" + }, + { + "help": "The erlang provided reason for the node being unreachable", + "name": "reason" + } + ], + "type": "counter" + }, "cm_ns_config_merger_queue_len_1m_max": { "added": "7.0.0", "help": "Length of the ns_config merger queue", @@ -803,6 +922,44 @@ "type": "gauge", "unit": "bytes" }, + "couch_spatial_data_size": { + "added": "7.0.0", + "help": "Size of object data for spatial views", + "labels": [ + { + "help": "Name of the bucket associated with the stat", + "name": "bucket" + } + ], + "stability": "committed", + "type": "gauge", + "unit": "bytes" + }, + "couch_spatial_disk_size": { + "added": "7.0.0", + "help": "Amount of disk space occupied by spatial views", + "labels": [ + { + "help": "Name of the bucket associated with the stat", + "name": "bucket" + } + ], + "stability": "committed", + "type": "gauge", + "unit": "bytes" + }, + "couch_spatial_ops": { + "added": "7.0.0", + "help": "Spatial operations", + "labels": [ + { + "help": "Name of the bucket associated with the stat", + "name": "bucket" + } + ], + "stability": "committed", + "type": "gauge" + }, "couch_views_actual_disk_size": { "added": "7.0.0", "help": "Amount of disk space used by Views data", @@ -816,6 +973,44 @@ "type": "gauge", "unit": "bytes" }, + "couch_views_data_size": { + "added": "7.0.0", + "help": "Size of object data for views", + "labels": [ + { + "help": "Name of the bucket associated with the stat", + "name": "bucket" + } + ], + "stability": "committed", + "type": "gauge", + "unit": "bytes" + }, + "couch_views_disk_size": { + "added": "7.0.0", + "help": "Amount of disk space occupied by views", + "labels": [ + { + "help": "Name of the bucket associated with the stat", + "name": "bucket" + } + ], + "stability": "committed", + "type": "gauge", + "unit": "bytes" + }, + "couch_views_ops": { + "added": "7.0.0", + "help": "View operations", + "labels": [ + { + "help": "Name of the bucket associated with the stat", + "name": "bucket" + } + ], + "stability": "committed", + "type": "gauge" + }, "sdk_invalid_metric_total": { "added": "8.0.0", "help": "Number of invalid metrics received from app telemetry clients", diff --git a/modules/metrics-reference/attachments/fts_metrics_metadata.json b/modules/metrics-reference/attachments/fts_metrics_metadata.json index 05115734a0..8518a3e178 100644 --- a/modules/metrics-reference/attachments/fts_metrics_metadata.json +++ b/modules/metrics-reference/attachments/fts_metrics_metadata.json @@ -150,6 +150,11 @@ "type": "counter", "uiName": "Search Docs" }, + "fts_frees": { + "added": "8.1.0", + "help": "Cumulative count of heap objects freed", + "type": "counter" + }, "fts_global_query_timer_count": { "added": "8.0.0", "help": "The number of query timer events received at the global query endpoint", @@ -260,6 +265,31 @@ ], "type": "gauge" }, + "fts_heap_alloc": { + "added": "8.1.0", + "help": "Bytes of allocated heap objects currently in use", + "type": "gauge" + }, + "fts_heap_idle": { + "added": "8.1.0", + "help": "Bytes in idle (unused) heap spans", + "type": "gauge" + }, + "fts_heap_inuse": { + "added": "8.1.0", + "help": "Bytes in non-idle heap spans", + "type": "gauge" + }, + "fts_heap_released": { + "added": "8.1.0", + "help": "Bytes of physical memory returned to the OS", + "type": "gauge" + }, + "fts_mallocs": { + "added": "8.1.0", + "help": "Cumulative count of heap objects allocated", + "type": "counter" + }, "fts_meter_cu_total": { "added": "7.5.0", "help": "The number of Compute Units (CUs) recorded.", @@ -345,6 +375,11 @@ "uiName": "RAM Used by Search", "unit": "bytes" }, + "fts_num_cgocalls": { + "added": "8.1.0", + "help": "Total number of CGo calls made by the FTS process since startup", + "type": "counter" + }, "fts_num_files_on_disk": { "added": "7.2.0", "help": "The number of files on disk for an index", @@ -357,6 +392,11 @@ "type": "gauge", "uiName": "Search Disk Files" }, + "fts_num_goroutines": { + "added": "8.1.0", + "help": "Current number of goroutines running in the FTS process", + "type": "gauge" + }, "fts_num_indexes": { "added": "8.0.0", "help": "Number of search indexes in the cluster", @@ -793,7 +833,7 @@ }, "fts_total_queries": { "added": "7.2.0", - "help": "The number of full text queries per second for an index", + "help": "The number of search queries for an index", "labels": [ "bucket", "scope", @@ -909,6 +949,11 @@ "type": "counter", "unit": "nanoseconds" }, + "fts_total_scan_plus_queries_kv_errors": { + "added": "8.1.0", + "help": "Total number of KV errors encountered during scan plus queries", + "type": "counter" + }, "fts_total_synonym_searches": { "added": "8.0.0", "help": "Total bleve synonym search operations", diff --git a/modules/metrics-reference/attachments/goxdcr_metrics_metadata.json b/modules/metrics-reference/attachments/goxdcr_metrics_metadata.json index e88357a2c5..2c72cbf0cc 100644 --- a/modules/metrics-reference/attachments/goxdcr_metrics_metadata.json +++ b/modules/metrics-reference/attachments/goxdcr_metrics_metadata.json @@ -339,6 +339,30 @@ "stability": "committed", "type": "counter" }, + "xdcr_cng_col_not_found_total": { + "added": "8.1.0", + "help": "Number of times a document failed to be replicated because the target collection was not found", + "labels": [ + "sourceBucketName", + "targetClusterUUID", + "targetBucketName", + "pipelineType" + ], + "stability": "committed", + "type": "counter" + }, + "xdcr_cng_scope_not_found_total": { + "added": "8.1.0", + "help": "Number of times a document failed to be replicated because the target scope was not found", + "labels": [ + "sourceBucketName", + "targetClusterUUID", + "targetBucketName", + "pipelineType" + ], + "stability": "committed", + "type": "counter" + }, "xdcr_data_merge_failed_bytes": { "added": "7.0.0", "help": "Amount of data failed to merge as part of Source custom conflict-resolution", @@ -927,6 +951,198 @@ "stability": "internal", "type": "counter" }, + "xdcr_grpc_aborted_total": { + "added": "8.1.0", + "help": "Number of GRPC requests that were aborted", + "labels": [ + "sourceBucketName", + "targetClusterUUID", + "targetBucketName", + "pipelineType" + ], + "stability": "internal", + "type": "counter" + }, + "xdcr_grpc_already_exists_total": { + "added": "8.1.0", + "help": "Number of GRPC requests that failed because resource already exists. A resource could be a document, collection, scope, or bucket", + "labels": [ + "sourceBucketName", + "targetClusterUUID", + "targetBucketName", + "pipelineType" + ], + "stability": "internal", + "type": "counter" + }, + "xdcr_grpc_cancelled_total": { + "added": "8.1.0", + "help": "Number of GRPC requests that were cancelled", + "labels": [ + "sourceBucketName", + "targetClusterUUID", + "targetBucketName", + "pipelineType" + ], + "stability": "internal", + "type": "counter" + }, + "xdcr_grpc_data_loss_total": { + "added": "8.1.0", + "help": "Number of GRPC requests that failed due to data loss", + "labels": [ + "sourceBucketName", + "targetClusterUUID", + "targetBucketName", + "pipelineType" + ], + "stability": "internal", + "type": "counter" + }, + "xdcr_grpc_deadline_exceeded_total": { + "added": "8.1.0", + "help": "Number of GRPC requests that failed due to deadline exceeded", + "labels": [ + "sourceBucketName", + "targetClusterUUID", + "targetBucketName", + "pipelineType" + ], + "stability": "internal", + "type": "counter" + }, + "xdcr_grpc_failed_precondition_total": { + "added": "8.1.0", + "help": "Number of GRPC requests that failed due to failed precondition", + "labels": [ + "sourceBucketName", + "targetClusterUUID", + "targetBucketName", + "pipelineType" + ], + "stability": "internal", + "type": "counter" + }, + "xdcr_grpc_internal_total": { + "added": "8.1.0", + "help": "Number of GRPC requests that failed due to internal error", + "labels": [ + "sourceBucketName", + "targetClusterUUID", + "targetBucketName", + "pipelineType" + ], + "stability": "internal", + "type": "counter" + }, + "xdcr_grpc_invalid_argument_total": { + "added": "8.1.0", + "help": "Number of GRPC requests that failed due to invalid argument", + "labels": [ + "sourceBucketName", + "targetClusterUUID", + "targetBucketName", + "pipelineType" + ], + "stability": "internal", + "type": "counter" + }, + "xdcr_grpc_not_found_total": { + "added": "8.1.0", + "help": "Number of GRPC requests that failed because resource was not found. A resource could be a document, collection, scope, or bucket", + "labels": [ + "sourceBucketName", + "targetClusterUUID", + "targetBucketName", + "pipelineType" + ], + "stability": "internal", + "type": "counter" + }, + "xdcr_grpc_out_of_range_total": { + "added": "8.1.0", + "help": "Number of GRPC requests that failed due to out of range error", + "labels": [ + "sourceBucketName", + "targetClusterUUID", + "targetBucketName", + "pipelineType" + ], + "stability": "internal", + "type": "counter" + }, + "xdcr_grpc_permission_denied_total": { + "added": "8.1.0", + "help": "Number of GRPC requests that failed due to permission denied", + "labels": [ + "sourceBucketName", + "targetClusterUUID", + "targetBucketName", + "pipelineType" + ], + "stability": "internal", + "type": "counter" + }, + "xdcr_grpc_resource_exhausted_total": { + "added": "8.1.0", + "help": "Number of GRPC requests that failed due to resource exhausted", + "labels": [ + "sourceBucketName", + "targetClusterUUID", + "targetBucketName", + "pipelineType" + ], + "stability": "internal", + "type": "counter" + }, + "xdcr_grpc_unauthenticated_total": { + "added": "8.1.0", + "help": "Number of GRPC requests that failed due to authentication failure", + "labels": [ + "sourceBucketName", + "targetClusterUUID", + "targetBucketName", + "pipelineType" + ], + "stability": "internal", + "type": "counter" + }, + "xdcr_grpc_unavailable_total": { + "added": "8.1.0", + "help": "Number of GRPC requests that failed because service is unavailable", + "labels": [ + "sourceBucketName", + "targetClusterUUID", + "targetBucketName", + "pipelineType" + ], + "stability": "internal", + "type": "counter" + }, + "xdcr_grpc_unimplemented_total": { + "added": "8.1.0", + "help": "Number of GRPC requests that failed because operation is unimplemented", + "labels": [ + "sourceBucketName", + "targetClusterUUID", + "targetBucketName", + "pipelineType" + ], + "stability": "internal", + "type": "counter" + }, + "xdcr_grpc_unknown_total": { + "added": "8.1.0", + "help": "Number of GRPC requests that returned unknown error", + "labels": [ + "sourceBucketName", + "targetClusterUUID", + "targetBucketName", + "pipelineType" + ], + "stability": "internal", + "type": "counter" + }, "xdcr_guardrail_data_size_total": { "added": "7.6.0", "help": "The number of writes that target rejected because each target data node is holding too much data", @@ -1026,6 +1242,20 @@ "stability": "committed", "type": "counter" }, + "xdcr_metadata_transferred_bytes": { + "added": "8.1.0", + "help": "The total amount of data transferred to and from target that is used for source side conflict resolution that is not the actual document replicated", + "labels": [ + "sourceBucketName", + "targetClusterUUID", + "targetBucketName", + "pipelineType" + ], + "notes": "This is metadata that is transferred as part of GET_META, or SubdocGet command", + "stability": "internal", + "type": "counter", + "unit": "bytes" + }, "xdcr_mobile_docs_filtered_total": { "added": "7.6.0", "help": "Total number of documents filtered and not replicated because the documents were mobile records", @@ -1038,6 +1268,18 @@ "stability": "committed", "type": "counter" }, + "xdcr_non_local_mutations_skipped_total": { + "added": "8.1.0", + "help": "Number of document mutations that were not batched for replication to Target because they did not qualify as 'local' for the 'forwardLocalOnly' replication", + "labels": [ + "sourceBucketName", + "targetClusterUUID", + "targetBucketName", + "pipelineType" + ], + "stability": "committed", + "type": "counter" + }, "xdcr_num_checkpoints_total": { "added": "7.0.0", "help": "The number of times checkpoint operation has completed successfully since this XDCR process instance is made aware of this replication", @@ -1119,6 +1361,16 @@ "stability": "committed", "type": "gauge" }, + "xdcr_remote_cluster_monitoring_metadata_transferred_bytes": { + "added": "8.1.0", + "help": "The total size of monitoring metadata sent and received to and from the remote cluster", + "labels": [ + "targetClusterUUID" + ], + "stability": "internal", + "type": "counter", + "unit": "bytes" + }, "xdcr_resp_wait_time_seconds": { "added": "7.0.0", "help": "The rolling average amount of time it takes from when a MemcachedRequest is created to be ready to route to an outnozzle to the time that the response has been heard back from the target node after a successful write", @@ -1244,6 +1496,18 @@ "type": "gauge", "unit": "bytes" }, + "xdcr_source_cluster_heartbeat_recv_bytes": { + "added": "8.1.0", + "help": "For a given source cluster, the size of the accumulated heartbeat messages received from this cluster", + "labels": [ + "sourceClusterUUID", + "sourceClusterName" + ], + "notes": "One source node will be responsible to send heartbeat to one target node. This stats will accumulate only if this particular node received data", + "stability": "internal", + "type": "gauge", + "unit": "bytes" + }, "xdcr_source_sync_xattr_removed_total": { "added": "7.6.6", "help": "Number of mutations with source mobile extended attributes removed", @@ -1280,6 +1544,20 @@ "stability": "internal", "type": "counter" }, + "xdcr_sys_metadata_transferred_bytes": { + "added": "8.1.0", + "help": "The total amount of data transferred to and from target that is not related to document but within a context of a pipeline", + "labels": [ + "sourceBucketName", + "targetClusterUUID", + "targetBucketName", + "pipelineType" + ], + "notes": "This is metadata such as checkpoint manager used as part of checkpointing operation of a pipeline. Any other stats outside the context of a replication will not be accounted here. The metric will be re-initialized to 0 when a paused pipeline is resumed. The metadata checkpoint from the act of pausing a pipeline will not be accounted.", + "stability": "internal", + "type": "counter", + "unit": "bytes" + }, "xdcr_system_events_received_from_dcp_total": { "added": "7.6.0", "help": "The number of system events received from source data service", diff --git a/modules/metrics-reference/attachments/index_metrics_metadata.json b/modules/metrics-reference/attachments/index_metrics_metadata.json index 877ce46e5c..7fc98c6378 100644 --- a/modules/metrics-reference/attachments/index_metrics_metadata.json +++ b/modules/metrics-reference/attachments/index_metrics_metadata.json @@ -291,6 +291,12 @@ ], "type": "counter" }, + "index_num_lost_replica_indexes": { + "added": "8.1.0", + "help": "Number of index partitions with atleast one lost replica.", + "notes": "Valid only for replicated indexes.", + "type": "gauge" + }, "index_num_requests": { "help": "Number of scan requests received by the index service, for this index", "labels": [ @@ -358,6 +364,19 @@ "notes": "This metric is valid only for partitioned indexes.", "type": "gauge" }, + "index_partn_num_lost_replicas": { + "added": "8.1.0", + "help": "Set to the number of lost replicas, if the index partition has any lost replicas", + "labels": [ + "bucket", + "scope", + "collection", + "index", + "partition" + ], + "notes": "Valid only for replicated indexes", + "type": "gauge" + }, "index_raw_data_size": { "help": "Encoded, uncompressed size of the index data, for this index", "labels": [ diff --git a/modules/metrics-reference/attachments/kv_metrics_metadata.json b/modules/metrics-reference/attachments/kv_metrics_metadata.json index 9e754386be..c8089a023d 100644 --- a/modules/metrics-reference/attachments/kv_metrics_metadata.json +++ b/modules/metrics-reference/attachments/kv_metrics_metadata.json @@ -76,12 +76,6 @@ "type": "gauge", "unit": "seconds" }, - "kv_clients": { - "added": "7.6.0", - "help": "The number of references to the bucket", - "stability": "committed", - "type": "gauge" - }, "kv_cmd_duration_seconds": { "added": "7.0.0", "help": "Per-opcode histogram of time taken to execute operations", @@ -199,6 +193,13 @@ "stability": "committed", "type": "gauge" }, + "kv_cookie_notification_histogram_seconds": { + "added": "7.6.10", + "help": "Histogram containing the time taken to schedule a notification for a cookie until it is run", + "stability": "committed", + "type": "histogram", + "unit": "seconds" + }, "kv_credit_cu_total": { "added": "7.6.0", "help": "Total Compute Units refunded for a bucket (CU was charged, but operation failed) since reset", @@ -217,6 +218,18 @@ "stability": "internal", "type": "counter" }, + "kv_curr_bucket_connections": { + "added": "8.1.0", + "help": "The current number of connections for this bucket", + "stability": "committed", + "type": "gauge" + }, + "kv_curr_bucket_connections_closing": { + "added": "8.1.0", + "help": "The current number of connections currently closing down for this bucket", + "stability": "committed", + "type": "gauge" + }, "kv_curr_connections": { "added": "7.0.0", "help": "The current number of connections. This includes user, system and daemon connections", @@ -385,6 +398,13 @@ "type": "histogram", "unit": "seconds" }, + "kv_dispatch_socket_histogram_seconds": { + "added": "7.6.10", + "help": "Histogram containing the time taken to dispatch a newly created socket to its worker thread", + "stability": "committed", + "type": "histogram", + "unit": "seconds" + }, "kv_domain_memory_used_bytes": { "added": "7.1.0", "help": "Current memory used in KV for primary/secondary domain", @@ -756,14 +776,14 @@ }, "kv_ep_commit_time_seconds": { "added": "7.0.0", - "help": "Number of milliseconds of most recent commit", + "help": "Number of microseconds of most recent commit", "stability": "committed", "type": "gauge", "unit": "seconds" }, "kv_ep_commit_time_total_seconds": { "added": "7.0.0", - "help": "Cumulative milliseconds spent committing", + "help": "Cumulative microseconds spent committing", "stability": "committed", "type": "gauge", "unit": "seconds" @@ -841,12 +861,6 @@ "stability": "volatile", "type": "gauge" }, - "kv_ep_couchstore_file_cache_max_size": { - "added": "7.0.0", - "help": "Maximum number of couchstore files that we will keep open. Default value is 30 * 1024 (i.e. one file for each vBucket and 30 Buckets - the supported limit).", - "stability": "volatile", - "type": "gauge" - }, "kv_ep_couchstore_midpoint_rollback_optimisation": { "added": "7.0.0", "help": "Should we have to rollback more than half of the seqnos seen by this vBucket we will instead rollback to 0 and re-stream from the active if set to true", @@ -936,6 +950,12 @@ "type": "gauge", "unit": "bytes" }, + "kv_ep_db_tombstones": { + "added": "7.6.10", + "help": "The number of tombstones in db files (currently tracked only in couchstore)", + "stability": "committed", + "type": "gauge" + }, "kv_ep_dcp_backfill_byte_drain_ratio": { "added": "7.0.0", "help": "What ratio of the dcp_backfill_byte_limit must be drained for un-pausing a paused backfill", @@ -978,6 +998,37 @@ "stability": "volatile", "type": "gauge" }, + "kv_ep_dcp_cache_transfer_enabled": { + "added": "7.0.0", + "help": "Does the producer support a cache transfer?", + "stability": "volatile", + "type": "gauge" + }, + "kv_ep_dcp_cache_transfer_high_memory_backoff_duration": { + "added": "7.0.0", + "help": "The duration in floating point seconds to snooze the CacheTransferTask when memory pressure is present and the task should back-off to avoid making memory usage worse (and wait for memory to reduce).", + "stability": "volatile", + "type": "gauge" + }, + "kv_ep_dcp_cache_transfer_one_visit_per_step": { + "added": "7.0.0", + "help": "Set to false for simpler unit-testing. When true CacheTransferTask to visit the hash table many times per step, when false one item per task step", + "stability": "volatile", + "type": "gauge" + }, + "kv_ep_dcp_cache_transfer_read_bytes": { + "added": "8.1.0", + "help": "The number of bytes read by DCP cache transfer", + "stability": "committed", + "type": "gauge", + "unit": "bytes" + }, + "kv_ep_dcp_cache_transfer_visit_duration_ms": { + "added": "7.0.0", + "help": "The upper bound in milliseconds for the CacheTransferTask hash table visitor", + "stability": "volatile", + "type": "gauge" + }, "kv_ep_dcp_checkpoint_dequeue_limit": { "added": "7.0.0", "help": "The limit given to CheckpointManager::getNextItemsForDcp by ActiveStream", @@ -1420,9 +1471,16 @@ "type": "counter", "unit": "count" }, + "kv_ep_fusion_log_store_data_size_bytes": { + "added": "8.0.0", + "help": "Total size of the file data present in all the logs on FusionLogStore.", + "stability": "committed", + "type": "gauge", + "unit": "bytes" + }, "kv_ep_fusion_log_store_garbage_size_bytes": { "added": "8.0.0", - "help": "Total size of the garbage data present on FusionLogStore.", + "help": "Total size of the garbage file data present on FusionLogStore.", "stability": "committed", "type": "gauge", "unit": "bytes" @@ -1469,9 +1527,9 @@ "type": "counter", "unit": "count" }, - "kv_ep_fusion_log_store_size_bytes": { + "kv_ep_fusion_log_store_summary_section_size_bytes": { "added": "8.0.0", - "help": "Total size of all the logs on FusionLogStore.", + "help": "Total size of the summary section of all logs on FusionLogStore.", "stability": "committed", "type": "gauge", "unit": "bytes" @@ -1539,6 +1597,13 @@ "type": "counter", "unit": "count" }, + "kv_ep_fusion_sync_attempts": { + "added": "8.1.0", + "help": "Total number of sync attempts to Fusion including both successful and failed attempts.", + "stability": "committed", + "type": "counter", + "unit": "count" + }, "kv_ep_fusion_sync_failures": { "added": "8.0.0", "help": "Total number of times syncing data to Fusion failed.", @@ -1894,6 +1959,13 @@ "type": "gauge", "unit": "bytes" }, + "kv_ep_magma_bytes_overwritten_bytes": { + "added": "8.1.0", + "help": "Logical bytes that were overwritten during write operations (size of replaced documents).", + "stability": "committed", + "type": "counter", + "unit": "bytes" + }, "kv_ep_magma_bytes_per_read_ratio": { "added": "7.1.0", "help": "Bytes read by get / number of Gets", @@ -1926,6 +1998,12 @@ "stability": "committed", "type": "gauge" }, + "kv_ep_magma_corruption_errors": { + "added": "8.1.0", + "help": "Number of corruption errors detected by Magma", + "stability": "committed", + "type": "gauge" + }, "kv_ep_magma_data_blocks_compressed_size": { "added": "7.2.0", "help": "Data blocks compressed size; actual size in storage", @@ -1976,6 +2054,12 @@ "stability": "volatile", "type": "gauge" }, + "kv_ep_magma_enable_data_block_autotuning": { + "added": "7.0.0", + "help": "Enable auto-tuning of data block size based on compression ratio.", + "stability": "volatile", + "type": "gauge" + }, "kv_ep_magma_enable_direct_io": { "added": "7.0.0", "help": "Using direct IO tells magma to bypass the file system cache when writing or reading sstables.", @@ -1988,6 +2072,12 @@ "stability": "volatile", "type": "gauge" }, + "kv_ep_magma_enable_index_block_autotuning": { + "added": "7.0.0", + "help": "Enable auto-tuning of index block size based on compression ratio.", + "stability": "volatile", + "type": "gauge" + }, "kv_ep_magma_enable_memory_optimized_writes": { "added": "7.0.0", "help": "When enabled, if copying a write batch into memtable results in exceeding the write cache quota, Magma avoids the copy and instead flushes the batch to disk on the writer thread itself. This tradeoffs an increase in write latency for reduced memory consumption and obeys quota limits. If copying a batch keeps us under the quota, Magma will to continue to copy and do the flush in background.", @@ -2024,12 +2114,6 @@ "stability": "committed", "type": "gauge" }, - "kv_ep_magma_flusher_thread_percentage": { - "added": "7.0.0", - "help": "Percentage of storage threads that are flusher threads (i.e. with a value of 20 we will allocate 4 (1/5th) of the storage threads to flushers and the remaining 16 (4/5ths) threads will be compactors).", - "stability": "volatile", - "type": "gauge" - }, "kv_ep_magma_flushes": { "added": "7.1.0", "help": "Number of write cache flushes performed", @@ -2049,15 +2133,33 @@ "type": "gauge", "unit": "ratio" }, - "kv_ep_magma_fusion_log_checkpoint_interval": { + "kv_ep_magma_fusion_logstore_fragmentation_threshold": { "added": "7.0.0", - "help": "The interval at which FusionFS should create a log checkpoint on the FusionMetadataStore and delete eligible logs from the FusionLogStore, in seconds.", + "help": "The threshold at which the fusion log store will perform garbage collection. This is a ratio between 0.0 and 1.0.", "stability": "volatile", "type": "gauge" }, - "kv_ep_magma_fusion_logstore_fragmentation_threshold": { + "kv_ep_magma_fusion_max_log_cleaning_size_ratio": { "added": "7.0.0", - "help": "The threshold at which the fusion log store will perform garbage collection. This is a ratio between 0.0 and 1.0.", + "help": "Minimum log segment size after which logs will be split. The ratio is a percentage of used log data size.", + "stability": "volatile", + "type": "gauge" + }, + "kv_ep_magma_fusion_max_log_size": { + "added": "7.0.0", + "help": "Upper cap for the effective log size, in bytes.", + "stability": "volatile", + "type": "gauge" + }, + "kv_ep_magma_fusion_max_num_log_files": { + "added": "7.0.0", + "help": "Base cap for maximum number of log files.", + "stability": "volatile", + "type": "gauge" + }, + "kv_ep_magma_fusion_max_upload_interval": { + "added": "7.0.0", + "help": "Maximum interval after which an upload will be permitted irrespective of upload thresholds, in seconds. This will be set to the smaller of the current value and 25% of persistent_metadata_purge_age.", "stability": "volatile", "type": "gauge" }, @@ -2196,13 +2298,7 @@ "stability": "volatile", "type": "gauge" }, - "kv_ep_magma_max_default_storage_threads": { - "added": "7.0.0", - "help": "If the number of storage threads = 0, then we set the number of storage threads to this value and use magma_flusher_thread_percentage to determine the ratio of flusher and compactor threads.", - "stability": "volatile", - "type": "gauge" - }, - "kv_ep_magma_max_level_0_ttl": { + "kv_ep_magma_max_level0_ttl": { "added": "7.0.0", "help": "Maximum time (in seconds) that data is kept in level 0 before it is merged.", "stability": "volatile", @@ -2232,6 +2328,12 @@ "stability": "volatile", "type": "gauge" }, + "kv_ep_magma_metaonly_gets": { + "added": "8.1.0", + "help": "Number of metadata-only get operations", + "stability": "committed", + "type": "gauge" + }, "kv_ep_magma_min_checkpoint_interval": { "added": "7.0.0", "help": "Minimum interval between two checkpoints; in seconds. Prevents excessive creation of checkpoints.", @@ -2244,6 +2346,12 @@ "stability": "volatile", "type": "gauge" }, + "kv_ep_magma_nonresident_bloom_filter_size": { + "added": "8.1.0", + "help": "Space taken up by bloom filters not currently in memory", + "stability": "committed", + "type": "gauge" + }, "kv_ep_magma_per_document_compression_enabled": { "added": "7.0.0", "help": "Apply Snappy compression to each document when persisted (magma only)", @@ -2741,6 +2849,13 @@ "stability": "committed", "type": "gauge" }, + "kv_ep_pageable_mem_bytes": { + "added": "7.6.11", + "help": "Current pageable memory usage (used in paging management)", + "stability": "committed", + "type": "gauge", + "unit": "bytes" + }, "kv_ep_pager_sleep_time_ms": { "added": "7.0.0", "help": "How long in milliseconds the ItemPager will sleep for when not being requested to run", @@ -2946,6 +3061,20 @@ "type": "gauge", "unit": "bytes" }, + "kv_ep_total_compressed_value_size_bytes": { + "added": "8.1.0", + "help": "The total size of document values that are compressed, including documents that are later expired or deleted.", + "stability": "committed", + "type": "gauge", + "unit": "bytes" + }, + "kv_ep_total_decompressed_value_size_bytes": { + "added": "8.1.0", + "help": "The total decompressed size of document values that are compressed, including documents that are later expired or deleted.", + "stability": "committed", + "type": "gauge", + "unit": "bytes" + }, "kv_ep_total_deduplicated": { "added": "7.0.0", "help": "Total number of items de-duplicated when queued to CheckpointManager", @@ -3145,6 +3274,26 @@ "type": "gauge", "unit": "bytes" }, + "kv_file_chunk_read_bytes": { + "added": "8.1.0", + "help": "Total number of bytes read from the bucket using GetFileFragment", + "stability": "internal", + "type": "counter", + "unit": "bytes" + }, + "kv_fusion_max_pending_upload_bytes_bytes": { + "added": "8.1.0", + "help": "The maximum number of pending upload bytes to be synced across all volumes.", + "stability": "committed", + "type": "gauge", + "unit": "bytes" + }, + "kv_fusion_max_pending_upload_bytes_lwm_ratio": { + "added": "8.1.0", + "help": "The proportion of max_pending_upload_bytes beyond which syncs for volumes with highest pending bytes are only allowed.", + "stability": "committed", + "type": "gauge" + }, "kv_fusion_migration_rate_limit_bytes": { "added": "8.0.0", "help": "The rate limit for fusion extent migration, in bytes per second.", @@ -3152,6 +3301,27 @@ "type": "gauge", "unit": "bytes" }, + "kv_fusion_num_migrator_threads_bytes": { + "added": "8.0.0", + "help": "The number of Fusion Migrator threads.", + "stability": "committed", + "type": "gauge", + "unit": "bytes" + }, + "kv_fusion_num_uploader_threads_bytes": { + "added": "8.0.0", + "help": "The number of Fusion Uploader threads.", + "stability": "committed", + "type": "gauge", + "unit": "bytes" + }, + "kv_fusion_pending_upload_bytes_bytes": { + "added": "8.1.0", + "help": "The total pending upload bytes across all fusion volumes.", + "stability": "committed", + "type": "gauge", + "unit": "bytes" + }, "kv_fusion_sync_rate_limit_bytes": { "added": "8.0.0", "help": "The rate limit for fusion sync uploads, in bytes per second.", @@ -3195,6 +3365,13 @@ "type": "gauge", "unit": "bytes" }, + "kv_magma_compaction_rate_limit_bytes": { + "added": "8.1.0", + "help": "The I/O bandwidth in bytes per second that compactions across all shards in a node can consume", + "stability": "committed", + "type": "gauge", + "unit": "bytes" + }, "kv_magma_compactions": { "added": "7.2.0", "help": "Count of Magma compactions", @@ -3204,6 +3381,18 @@ "stability": "committed", "type": "gauge" }, + "kv_magma_enable_compaction_dataonly_ratelimiting": { + "added": "8.1.0", + "help": "Limits rate-limiting to fragmentation-reduction compactions only. If disabled, all compactions are throttled", + "stability": "committed", + "type": "gauge" + }, + "kv_magma_flusher_thread_percentage": { + "added": "7.6.10", + "help": "Percent of magma flusher threads out of total magma threads", + "stability": "committed", + "type": "gauge" + }, "kv_magma_itr": { "added": "7.6.0", "help": "Number of items returned by iterators", @@ -3214,6 +3403,24 @@ "stability": "committed", "type": "gauge" }, + "kv_magma_max_default_storage_threads": { + "added": "7.6.10", + "help": "The number of total magma threads", + "stability": "committed", + "type": "gauge" + }, + "kv_magma_num_compactor_threads": { + "added": "8.1.0", + "help": "The number of magma compactor threads.", + "stability": "committed", + "type": "gauge" + }, + "kv_magma_num_flusher_threads": { + "added": "8.1.0", + "help": "The number of magma flusher threads.", + "stability": "committed", + "type": "gauge" + }, "kv_magma_write_bytes_bytes": { "added": "7.6.0", "help": "Bytes written by Magma flushes, compactions.", @@ -3286,18 +3493,6 @@ "stability": "internal", "type": "counter" }, - "kv_meter_ru_total": { - "added": "7.6.0", - "help": "Total Read Units used by a bucket since reset", - "stability": "internal", - "type": "counter" - }, - "kv_meter_wu_total": { - "added": "7.6.0", - "help": "Total Write Units used by a bucket since reset", - "stability": "internal", - "type": "counter" - }, "kv_num_high_pri_requests": { "added": "7.0.0", "help": "Num of async high priority requests", @@ -3359,6 +3554,12 @@ "stability": "committed", "type": "gauge" }, + "kv_ru_total": { + "added": "8.1.0", + "help": "Total Read Units used by a bucket since reset", + "stability": "internal", + "type": "counter" + }, "kv_stat_timings_mem_usage_bytes": { "added": "7.1.0", "help": "The memory footprint for tracing times spent processing stat requests", @@ -3401,6 +3602,12 @@ "type": "gauge", "unit": "bytes" }, + "kv_subdoc_offload_count": { + "added": "8.1.0", + "help": "The number of subdoc operations executed in the non-IO thread pool", + "stability": "committed", + "type": "gauge" + }, "kv_subdoc_ops": { "added": "7.0.0", "help": "The number of subdoc operations", @@ -3452,11 +3659,24 @@ "stability": "internal", "type": "counter" }, - "kv_throttle_seconds_total": { - "added": "7.6.0", - "help": "Total time spent throttling requests for a bucket since reset", + "kv_throttle_duration_seconds": { + "added": "8.1.0", + "help": "Histogram of throttle wait times for a bucket since reset", "stability": "internal", - "type": "counter" + "type": "histogram", + "unit": "seconds" + }, + "kv_throttle_hard_limit": { + "added": "8.1.0", + "help": "Current hard throttle limit for a bucket (units per second).", + "stability": "internal", + "type": "gauge" + }, + "kv_throttle_reserved": { + "added": "8.1.0", + "help": "Current reserved throttle limit for a bucket (units per second).", + "stability": "internal", + "type": "gauge" }, "kv_time_seconds": { "added": "7.0.0", @@ -3828,5 +4048,11 @@ "stability": "committed", "type": "gauge", "unit": "bytes" + }, + "kv_wu_total": { + "added": "8.1.0", + "help": "Total Write Units used by a bucket since reset", + "stability": "internal", + "type": "counter" } } diff --git a/modules/metrics-reference/attachments/n1ql_metrics_metadata.json b/modules/metrics-reference/attachments/n1ql_metrics_metadata.json index 71f4895467..4f6a7f6b19 100644 --- a/modules/metrics-reference/attachments/n1ql_metrics_metadata.json +++ b/modules/metrics-reference/attachments/n1ql_metrics_metadata.json @@ -366,6 +366,11 @@ "help": "The STDDEV latency of SQL++ Hyperscale VECTOR requests.", "type": "gauge" }, + "n1ql_index_hint_not_followed": { + "added": "7.6.11", + "help": "The total number of index hints not followed", + "type": "counter" + }, "n1ql_index_scans": { "added": "7.0.0", "help": "Total number of secondary index scans.", diff --git a/modules/metrics-reference/partials/metrics.hbs b/modules/metrics-reference/partials/metrics.hbs index 324647f7a6..b0e254d998 100644 --- a/modules/metrics-reference/partials/metrics.hbs +++ b/modules/metrics-reference/partials/metrics.hbs @@ -22,7 +22,7 @@ https://prometheus.io/docs/practices/naming/#base-units[unit] (if present). {{#each this}} {{#if (ne stability "internal")}} -|`{{@key}}` +|[[{{@key}}]]`{{@key}}` {nbsp}{nbsp}{nbsp} [.edition]##{{or added "7.0.0"}}## {{~#with deprecated}}[.deprecated]##Deprecated in {{this}}##{{/with~}} From ed9cd8a3c45a313cc81de00fad01345f5da78d64 Mon Sep 17 00:00:00 2001 From: Ray Offiah <77050471+RayOffiah@users.noreply.github.com> Date: Fri, 24 Apr 2026 06:22:50 +0100 Subject: [PATCH 04/13] [DOC-13921]: DOC-13921--extras (#4110) --- .../pages/xdcr-lowering-memory-footprint.adoc | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/modules/xdcr-reference/pages/xdcr-lowering-memory-footprint.adoc b/modules/xdcr-reference/pages/xdcr-lowering-memory-footprint.adoc index 6ad36b94cf..9febe827c4 100644 --- a/modules/xdcr-reference/pages/xdcr-lowering-memory-footprint.adoc +++ b/modules/xdcr-reference/pages/xdcr-lowering-memory-footprint.adoc @@ -5,7 +5,8 @@ [abstract] {description} -XDCR has 2 global replication settings which can be used to lower the memory footprint of a running replication: +XDCR has 2 global replication settings that you can adjust to lower the memory footprint of a running replication: + dcpFlowControlThrottle:: This is a percentage applied to the default value of both: @@ -18,7 +19,7 @@ This is a percentage applied to the default value of both: Effective value for both the above parameters becomes: + -- -stem:[(" " times " dcpFlowControlThrottle") / 100] +`( * dcpFlowControlThrottle) / 100` -- + Reducing this setting from its default value of 100 causes a decrease in the max number of documents that can fit into XDCR's memory buffer. @@ -35,7 +36,8 @@ so that the new values can take effect. == Monitoring the Health of a Throttled Replication -Lowering either of these settings may adversely affect the throughput of the replication, and care must be taken to not over-throttle the replication. +Lowering either of these settings may adversely affect the throughput of the replication. +Be careful to not over-throttle the replication. The health of the replication in response to the throttling can be measured via the following Prometheus metrics expression: From cb12022e70db29dcd7cbdc18e61092f767150ab5 Mon Sep 17 00:00:00 2001 From: Ray Offiah <77050471+RayOffiah@users.noreply.github.com> Date: Wed, 13 May 2026 23:31:21 +0100 Subject: [PATCH 05/13] [DOC-14290]: Document Enforcing CE limitations (#4118) --- modules/introduction/pages/editions.adoc | 60 +++++++++---- .../manage-xdcr/xdcr-management-overview.adoc | 86 ++++++++++++------- 2 files changed, 100 insertions(+), 46 deletions(-) diff --git a/modules/introduction/pages/editions.adoc b/modules/introduction/pages/editions.adoc index 9fc4b1485f..89f4d7e0b8 100644 --- a/modules/introduction/pages/editions.adoc +++ b/modules/introduction/pages/editions.adoc @@ -1,40 +1,70 @@ = Couchbase Server Editions :description: Couchbase Server is available in two editions: Enterprise and Community. +:phone-home: footnote:[Usage information is only sent when you use the Admin GUI. \ +No usage information is sent when you use the command line utilities to administer your cluster.] + [abstract] {description} Each edition offers different features and levels of support. -== Enterprise Edition +== Couchbase Server Enterprise Edition + +The Enterprise Edition (EE) represents the latest, most stable, production-ready release of Couchbase Server. +Couchbase recommends the Enterprise Edition binaries for commercial production systems running Couchbase Server. +The Enterprise Edition contains some unique features that make it the best fit for production deployments running in data centers or public cloud infrastructure. + +A subscription to the Enterprise Edition includes: -The Enterprise Edition (EE) represents the latest, most stable, production-ready release of Couchbase Server. We recommend the Enterprise Edition binaries for commercial production systems running Couchbase Server. The Enterprise Edition contains some unique features that make it the best fit for production deployments running in data centers or public cloud infrastructure. +* a commercial license +* better availability capabilities +* enhanced security features +* advanced tooling +* and higher performance and scale. -A subscription to the Enterprise Edition includes a commercial license, better availability capabilities, enhanced security features, advanced tooling, and higher performance and scale. It also includes technical support with service level commitments via our 24/7 support organization and hot fixes for releases. +It also includes technical support with service level commitments via our 24/7-support organization and hot fixes for releases. -Refer to the https://www.couchbase.com/pricing[pricing^] page for details on Couchbase's Enterprise Edition. +For more information, see the https://www.couchbase.com/pricing[pricing^] page for details on Couchbase's Enterprise Edition. -== Community Edition +== Couchbase Server Community Edition The Community Edition (CE) is best for noncommercial developers where basic availability, performance, scale, tooling, security capabilities and community support is sufficient. -One important principle for Community Edition and Enterprise Edition is to ensure full portability of applications between the two editions. The capabilities ensure that an application running on Enterprise Edition should transition to Community Edition without code changes and vice versa. +One important principle for Community Edition and Enterprise Edition is to ensure full portability of applications between the 2 editions. +The capabilities ensure that an application running on Enterprise Edition should transition to Community Edition without code changes and vice versa. + +The Community Edition license provides the free deployment of Couchbase Community Edition for departmental-scale deployments of up to 5 node clusters. + +The Community Edition license has been updated to disallow the use of cross-datacenter replication (XDCR), +which is now an exclusive Enterprise Edition feature. -The Community Edition license provides the free deployment of Couchbase Community Edition for departmental-scale deployments of up to five node clusters. The Community Edition license has recently been updated to disallow the use of Cross Data Center Replication -(XDCR), which is now an exclusive Enterprise Edition feature. -The Community Edition is not subjected to the iterative "test, fix, and verify" quality assurance cycle that is an integral part of the Enterprise Edition release process. The Community Edition does not include the latest bug fixes. +[NOTE] +.Replicating from a CE server to an EE server +==== +You can still replicate data from a CE server as long as the data is being replicated to an EE installation running XDCR. +==== + +Multi-Dimensional Scaling (MDS) is not supported on the Community Edition. + +The Community Edition is not subjected to the iterative `test`, `fix`, and `verify` quality assurance cycle that's an integral part of the Enterprise Edition release process. + +The Community Edition does not include the latest bug fixes. The Community Edition comes with limited concurrency and parallelism and supports a maximum of 4 cores per node. +The Community Edition shares usage information with Couchbase{empty}{phone-home} and notifies you when updates are available. + Documentation, mailing lists, and forums support the Couchbase user community to help troubleshoot issues and answer questions. == Open Source Project -The Couchbase Server open source project is a platform for innovation. Couchbase is committed to open source development, and the open source project continues to serve as the foundation for both the Community Edition and the Enterprise Edition. +The Couchbase Server open source project is a platform for innovation. +Couchbase is committed to open source development, and the open source project continues to serve as the foundation for both the Community Edition and the Enterprise Edition. -There are many ways to contribute to the open source project: +To contribute to the open source project, you can: -* Contribute code to our core engine, our SDKs, connectors and other integration components that help us connect to other products through https://github.com/couchbase[github.com/couchbase^]. Find more details on the https://developer.couchbase.com/open-source-projects/[Open Source Projects^] page. -* Report issues on our tracking system: https://issues.couchbase.com/projects/MB?selectedItem=com.atlassian.jira.jira-projects-plugin:release-page[JIRA^]. -* xref:home:contribute:index.adoc[Contribute to the documentation] either by submitting changes on GitHub or by simply clicking the "Feedback" link in our online documentation. +* Contribute code to Couchbase's core engine, SDKs, connectors, and other integration components that help to connect to other products through https://github.com/couchbase[github.com/couchbase^]. Find more details on the https://developer.couchbase.com/open-source-projects/[Open Source Projects^] page. +* Report issues on the Couch tracking system: https://issues.couchbase.com/projects/MB?selectedItem=com.atlassian.jira.jira-projects-plugin:release-page[JIRA^]. +* xref:home:contribute:index.adoc[Contribute to the documentation] either by submitting changes on GitHub or by clicking the "Feedback" link in the xref:intro.adoc[Couchbase online documentation]. -For a feature by feature comparison between editions, take a look at https://www.couchbase.com/products/editions[^]. +For a feature-by-feature comparison between editions, take a look at https://www.couchbase.com/products/editions[^]. diff --git a/modules/manage/pages/manage-xdcr/xdcr-management-overview.adoc b/modules/manage/pages/manage-xdcr/xdcr-management-overview.adoc index 16d3ff8a32..5110d0c008 100644 --- a/modules/manage/pages/manage-xdcr/xdcr-management-overview.adoc +++ b/modules/manage/pages/manage-xdcr/xdcr-management-overview.adoc @@ -1,5 +1,5 @@ = XDCR Management Overview -:description: Cross Datacenter Replication (XDCR) provides an easy way to replicate data from one cluster to another. +:description: Cross datacenter Replication (XDCR) provides an easy way to replicate data from one cluster to another. :page-aliases: xdcr:xdcr-intro [abstract] @@ -7,73 +7,97 @@ [#xdcr-summary] == What is XDCR? -Cross Data Center Replication (XDCR) replicates data between clusters: this provides protection against data-center failure, and also provides high-performance data-access for globally distributed, mission-critical applications. +Cross datacenter Replication (XDCR) replicates data between clusters: this provides protection against datacenter failure, and also provides high-performance data-access for globally distributed, mission-critical applications. -Note that Couchbase has modified the license restrictions to its Couchbase Server Community Edition package, for version 7.0 and higher: in consequence, XDCR is promoted to a commercial-only feature of Enterprise Edition. -See https://blog.couchbase.com/couchbase-modifies-license-free-community-edition-package/[Couchbase Modifies License of Free Community Edition Package^], for more information on the license restrictions; and see xref:manage:manage-xdcr/xdcr-management-overview.adoc#xdcr-and-community-edition[XDCR and Community Edition], below, for information on how the new restrictions affect the experience of Community-Edition administrators. +[NOTE] +==== +Couchbase has modified the license restrictions to its Couchbase Server Community Edition package, for version 7.0 and higher: + +XDCR is promoted to a commercial-only feature of Couchbase Server Enterprise Edition. + +For more information, see https://blog.couchbase.com/couchbase-modifies-license-free-community-edition-package/[Couchbase Modifies License of Free Community Edition Package^], + +For more information about how the new restrictions affect the experience of Community-Edition administrators, see xref:manage:manage-xdcr/xdcr-management-overview.adoc#xdcr-and-community-edition[XDCR and Community Edition] below. +==== XDCR replicates data from a specific bucket on the source cluster to a specific bucket on the target cluster. -Any bucket (Couchbase or Ephemeral) on any cluster can be specified as a source or a target for one or more XDCR definitions. -_Scopes_ and _collections_, within source and target buckets, can also be specified. -Data from the source is pushed to the target bucket by means of an XDCR agent, running on the source cluster, using the Database Change Protocol. +Any bucket (Couchbase or Ephemeral) on any cluster can be specified as a source or a target for 1 or more XDCR definitions. +`Scopes` and `collections`, within source and target buckets, can also be specified. +Data from the source is pushed to the target bucket by an XDCR agent, running on the source cluster, using the Database Change Protocol. + +[NOTE] +==== +Prior to Server 8.0, +XDCR could only be established between buckets where the numbers of vBuckets were the same. + +Now, if the cluster versions in the replication topology are 8.0 and later, XDCR can be established between buckets with different numbers of vBuckets. -Note that XDCR can only be established between clusters whose numbers of vBuckets are equal: all supported platforms have _1024_ vBuckets except _MacOS_, which has _64_. -For more information, see xref:learn:buckets-memory-and-storage/vbuckets.adoc[vBuckets]. +While an 8.x cluster can create an XDCR to a 7.x cluster bucket with a different number of vBuckets, a 7.x cluster can only create an XDCR to a bucket with the same number of vBuckets regardless of the target cluster version. +==== -A complete architectural description of XDCR is provided in xref:learn:clusters-and-availability/xdcr-overview.adoc[Cross Data Center Replication (XDCR)]. -You may wish to familiarize yourself with the information provided there, before performing the routines provided in this section. +A complete architectural description of XDCR is provided in xref:learn:clusters-and-availability/xdcr-overview.adoc[Cross datacenter Replication (XDCR)]. +You may want to familiarize yourself with the information provided there before performing the routines provided in this section. -For information on scopes and collections, see xref:learn:data/scopes-and-collections.adoc[Scopes and Collections]. +For information about scopes and collections, see xref:learn:data/scopes-and-collections.adoc[Scopes and Collections]. [#what-xdcr-tasks-can-be-performed] == What XDCR Tasks Can Be Performed? Management of XDCR includes the following: -* _Preparation_: Make sure that you have appropriate permissions for managing XDCR. +* Preparation: Make sure that you have appropriate permissions for managing XDCR. Check platform sizes, configurations, and ports. Details are provided in xref:manage:manage-xdcr/prepare-for-xdcr.adoc[Prepare for XDCR]. -* _Reference_ management: Remote clusters must be registered as targets for XDCR. +* Reference management: Remote clusters must be registered as targets for XDCR. This requires appropriate administration credentials for the remote cluster, and the existence on that cluster of one or more buckets that can be specified as recipients of replicated data. -Information on establishing references is provided in xref:manage:manage-xdcr/create-xdcr-reference.adoc[Create a Reference]; and information on deleting them in xref:manage:manage-xdcr/delete-xdcr-reference.adoc[Delete a Reference]. +Information about establishing references is provided in xref:manage:manage-xdcr/create-xdcr-reference.adoc[Create a Reference]; and information about deleting them in xref:manage:manage-xdcr/delete-xdcr-reference.adoc[Delete a Reference]. -* _Replication_ management: Once a reference has been registered on the local cluster, it can be specified as the target for a _replication_. +* Replication management: Once a reference has been registered on the local cluster, it can be specified as the target for a replication. This requires that an existing source and an existing target bucket also be specified. Optionally, filters can be established, so that only documents with matching ids, fields, values, or extended attributes are replicated. -Additionally, advanced settings can be configured, to ensure optimal performance. -Information on establishing replications is provided in xref:manage:manage-xdcr/create-xdcr-replication.adoc[Create a Replication]; and information on deleting them in xref:manage:manage-xdcr/delete-xdcr-replication.adoc[Delete a Replication]. +Advanced settings can be configured to ensure optimal performance. +Information about establishing replications is provided in xref:manage:manage-xdcr/create-xdcr-replication.adoc[Create a Replication] and information about deleting them in xref:manage:manage-xdcr/delete-xdcr-replication.adoc[Delete a Replication]. + -Note that replications can be configured to occur between specific _scopes_ and _collections_; as described in xref:manage:manage-xdcr/replicate-using-scopes-and-collections.adoc[Replicate Using Scopes and Collections]. +NOTE: Replications can be configured to occur between specific `scopes` and `collections` as described in xref:manage:manage-xdcr/replicate-using-scopes-and-collections.adoc[Replicate Using Scopes and Collections]. -* _Pausing_ and _Resuming_ replications: Once started, a replication is continuous; mutations on the source being constantly transmitted to the target. -Occasionally, for purposes of system maintenance, it may be desirable manually to pause a replication, and then resume it. -Information is provided in xref:manage:manage-xdcr/pause-xdcr-replication.adoc[Pause a Replication]; and xref:manage:manage-xdcr/resume-xdcr-replication.adoc[Resume a Replication]. +* Pausing and Resuming replications: Once started, a replication is continuous; mutations on the source are constantly transmitted to the target. +For purposes of system maintenance, it may be desirable manually to pause a replication and then resume it. +Information is provided in xref:manage:manage-xdcr/pause-xdcr-replication.adoc[Pause a Replication] and xref:manage:manage-xdcr/resume-xdcr-replication.adoc[Resume a Replication]. -* _Recovering Data_: In the event of data-loss, the *cbrecovery* tool can be used to restore data. -The tool accesses remotely replicated buckets, previously created with XDCR, and copies appropriate subsets of their data back onto the original source-cluster. +* Recovering Data: In the event of data-loss, the `cbrecovery` tool can be used to restore data. +The tool accesses remotely replicated buckets created with XDCR, and copies appropriate subsets of their data back onto the original source-cluster. Information is provided in xref:manage:manage-xdcr/recover-data-with-xdcr.adoc[Recover Data with XDCR]. [#how-to-use-xdcr-management-section] == How to Use This Section This section is divided into multiple subsections, each of which presents step-by-step examples of how to perform a particular XDCR management task. -In most subsections, three examples are provided, showing how to perform the same task with Couchbase Web Console, CLI, and REST API respectively. -The subsections are arranged in a sequence, to make it easy to start from the first example, xref:manage:manage-xdcr/prepare-for-xdcr.adoc[Prepare for XDCR], and proceed to the last. +In most subsections, 3 examples are provided, showing how to perform the same task with Couchbase Web Console, command-line tool, and REST API respectively. +The subsections are arranged in a sequence to make it easy to start from the first example, xref:manage:manage-xdcr/prepare-for-xdcr.adoc[Prepare for XDCR], and proceed to the last. [#xdcr-and-community-edition] == XDCR and Community Edition Couchbase has modified the license restrictions to its Couchbase Server Community Edition package, for version 7.0 and higher: in consequence, XDCR is promoted to a commercial-only feature of Enterprise Edition. -Consequently, prior to any attempt to add a remote cluster, the *XDCR* screen displays the following message: -image::manage-xdcr/xdcr-screen-ce.png[,720,align=middle] +[NOTE] +.Replicating from a CE server to an EE server +==== +You can still replicate data from a CE server as long as the data is being replicated to an EE installation running XDCR. +==== -The provided link takes the reader to detailed information on the new license restrictions, at https://blog.couchbase.com/couchbase-modifies-license-free-community-edition-package/[Couchbase Modifies License of Free Community Edition Package^]. +Prior to any attempt to add a remote cluster, the *XDCR* screen displays the following message: + +image::manage-xdcr/xdcr-screen-ce.png[,720, align=middle] + +The provided link takes the reader to detailed information about the new license restrictions, at https://blog.couchbase.com/couchbase-modifies-license-free-community-edition-package/[Couchbase Modifies License of Free Community Edition Package^]. Attempts to establish replications cause the following console message to be displayed: -image::manage-xdcr/xdcr-console-message-ce.png[,400,align=middle] +image::manage-xdcr/xdcr-console-message-ce.png[,400, align=middle] + +Community-Edition administrators who want to upgrade to version 7.0 or later and also want to use XDCR are recommended to consult https://blog.couchbase.com/couchbase-modifies-license-free-community-edition-package/[Couchbase Modifies License of Free Community Edition Package^], for guidance. + -Community-Edition adminstrators who wish to upgrade to version 7.0 or later, and wish to use XDCR, are recommended to consult https://blog.couchbase.com/couchbase-modifies-license-free-community-edition-package/[Couchbase Modifies License of Free Community Edition Package^], for guidance. From bd6efdd0c1f77d68669f2ea79796e4cd529c7b54 Mon Sep 17 00:00:00 2001 From: Ray Offiah <77050471+RayOffiah@users.noreply.github.com> Date: Fri, 29 May 2026 09:20:53 +0100 Subject: [PATCH 06/13] Merge pull request #4120 * [DOC-14049]: Document Magma Zstd compression level configuration setting * [DOC-14049]: Document Magma Zstd compression level configuration setting --- modules/ROOT/nav.adoc | 1 + .../rest-magma-compression-per-bucket.adoc | 133 ++++++++++++++++++ .../rest-memory-and-storage-table.adoc | 4 + 3 files changed, 138 insertions(+) create mode 100644 modules/rest-api/pages/rest-magma-compression-per-bucket.adoc diff --git a/modules/ROOT/nav.adoc b/modules/ROOT/nav.adoc index 42482045bf..e58f9a4279 100644 --- a/modules/ROOT/nav.adoc +++ b/modules/ROOT/nav.adoc @@ -433,6 +433,7 @@ include::cli:partial$cbcli/nav.adoc[] *** xref:rest-api:rest-compact-post.adoc[Performing Compaction Manually] *** xref:rest-api:rest-autocompact-global.adoc[Auto-Compaction: Global] *** xref:rest-api:rest-autocompact-per-bucket.adoc[Auto-Compaction: Per Bucket] + *** xref:rest-api:rest-magma-compression-per-bucket.adoc[Magma Compression] ** xref:rest-api:rest-rza.adoc[Server Groups API] *** xref:rest-api:rest-servergroup-get.adoc[Getting Group Information] diff --git a/modules/rest-api/pages/rest-magma-compression-per-bucket.adoc b/modules/rest-api/pages/rest-magma-compression-per-bucket.adoc new file mode 100644 index 0000000000..a412dd1562 --- /dev/null +++ b/modules/rest-api/pages/rest-magma-compression-per-bucket.adoc @@ -0,0 +1,133 @@ += Magma Compression +:description: You can set and view the compression algorithms for individual Magma buckets using the following REST APIs. + + +[abstract] +{description} + +Compression settings can be set for an existing bucket. +This requires `Full Admin`, `Cluster Admin` roles, or the `Bucket Admin` role for the specified bucket. + +== HTTP methods and URIs + +[source] +---- +GET /pools/default/buckets/ +POST /pools/default/buckets/ +---- + +== Parameters +The following parameters are available to the REST API +[cols="4,3,3"] +|=== +| Parameter | Type | Description + +| `magmaEnableIndexBlockAutotuning` +| Boolean +| Enable auto-tuning of Magma index block size based on the compression ratio + +Automatically adjusts the pre-compression block-accumulation size so the post-compression (physical) index block size stays close to the configured target block size. + +|`magmaEnableDataBlockAutotuning` +| Boolean +| Enable auto-tuning of Magma data block size based on the compression ratio + +|`magmaIndexCompressionAlgo` +| `snappy`, `lz4`, `none`, `zstd`, or `zstd_` where `` is an integer from 1 to 22. + +| Configure the block compression algorithm for the index blocks. + +| `magmaDataCompressionAlgo` +| `snappy`, `lz4`, `none`, `zstd`, or `zstd_` where `` is an integer from 1 to 22. +| Configure the block compression algorithm for the data blocks. + +| `magmaCompacteddataCompressionAlgo` +| `snappy`, `lz4`, `none`, `zstd`, or `zstd_` where `` is an integer from 1 to 22. +| Configure the block compression algorithm for the data blocks after compaction. + +Allows colder data to be compressed with a higher compression ratio using `zstd`. +This compression also is scheduled in background compaction threads. + +|=== + +== `Curl` Syntax + +[source, shell] +---- +curl -u : -X GET \ + :8091/pools/default/buckets/ + +curl -u : -X POST \ + :8091//pools/default/buckets/ \ + -d magmaEnableIndexBlockAutotuning=true|false \ + -d magmaEnableDataBlockAutotuning=true|false \ + -d magmaIndexCompressionAlgo=snappy|lz4|none|zstd|zstd_ \ + -d magmaDataCompressionAlgo=snappy|lz4|none|zstd|zstd_ \ + -d magmaCompacteddataCompressionAlgo=snappy|lz4|none|zstd|zstd_ \ + +---- + +== Responses + +If the call is successful, `200 OK` is given. + +If the operation is performed on a bucket that does not exist, +the REST service responds with a `404 (Object not found)` error. + +Sending the request with an invalid parameter value (sending a number when a Boolean value is expected, for example), returns a `400 (Bad Request)` response. + +You can find the precise nature of the problem by examining the payload in the response: + +[source, jsonlines] +---- +{ +"errors": { + "magmaEnableDataBlockAutotuning": "Value \"ten\" must be a boolean value (true/false, on/off)" + }, + +} +---- + +[NOTE] +==== +Errors in the parameter name result in no change in any of the parameter values, but the REST service responds with `200 (OK)`: + + +==== + + +== Examples + +.Retrieve parameter settings for the bucket. +[source, shell] +---- +curl -u Administrator:password -X GET \ + localhost:8091/pools/default/buckets/travel-sample | jq +---- + +This retrieves all the parameters in the bucket as a JSON string. +If you want to retrieve a parameter or list of parameters, you can add them to `jq` pipe: + +[source, shell] +---- +curl -u Administrator:password -X GET \ + localhost:8091/pools/default/buckets/travel-sample | jq \ + '.magmaEnableDataBlockAutotuning,.magmaEnableDataBlockAutotuning,.magmaIndexCompressionAlgo,.magmaDataCompressionAlgo,.magmaCompacteddataCompressionAlgo' +---- + +.Enable auto-tuning of the bucket index block. +[source, shell] +---- +curl -u Administrator:password -X POST \ + localhost:8091/pools/default/buckets/travel-sample \ + -d magmaEnableIndexBlockAutotuning=true +---- + +.Set the data compression algorithm +[source,shell] +---- +curl -u Administrator:password -X POST \ + localhost:8091/pools/default/buckets/travel-sample \ + -d magmaDataCompressionAlgo=snappy +---- + diff --git a/modules/rest-api/partials/rest-memory-and-storage-table.adoc b/modules/rest-api/partials/rest-memory-and-storage-table.adoc index e5d3fbf0b9..06a09eca8e 100644 --- a/modules/rest-api/partials/rest-memory-and-storage-table.adoc +++ b/modules/rest-api/partials/rest-memory-and-storage-table.adoc @@ -41,4 +41,8 @@ | `POST` | `/pools/default/buckets/[bucket-name]` | xref:rest-api:rest-autocompact-per-bucket.adoc[Auto-Compaction: Per Bucket] + +| `POST` +| `/pools/default/buckets/[bucket-name]` +| xref:rest-api:rest-magma-compression-per-bucket.adoc[Magma compression: Per Bucket] |=== From c5c08f5f3a0eba24da8232a82d753b1c75c293b9 Mon Sep 17 00:00:00 2001 From: Gary Gray Date: Wed, 24 Jun 2026 13:26:19 -0400 Subject: [PATCH 07/13] Initial in-progress commit. --- modules/ROOT/nav.adoc | 1 + .../partials/new-features-81.adoc | 9 ++ .../services/backup-service.adoc | 8 ++ .../services/continuous-backup.adoc | 96 +++++++++++++++++++ preview/DOC-12561_Continuous_backup_PITR.yml | 27 ++++++ 5 files changed, 141 insertions(+) create mode 100644 modules/learn/pages/services-and-indexes/services/continuous-backup.adoc create mode 100644 preview/DOC-12561_Continuous_backup_PITR.yml diff --git a/modules/ROOT/nav.adoc b/modules/ROOT/nav.adoc index e58f9a4279..ce2ab0eec8 100644 --- a/modules/ROOT/nav.adoc +++ b/modules/ROOT/nav.adoc @@ -61,6 +61,7 @@ include::third-party:partial$nav.adoc[] ** xref:learn:services-and-indexes/services/analytics-service.adoc[Analytics Service] ** xref:learn:services-and-indexes/services/eventing-service.adoc[Eventing Service] ** xref:learn:services-and-indexes/services/backup-service.adoc[Backup Service] + *** xref:learn:services-and-indexes/services/continuous-backup.adoc[Continuous Backup & PITR] * xref:learn:clusters-and-availability/clusters-and-availability.adoc[Clusters and Availability] ** xref:learn:clusters-and-availability/cluster-manager.adoc[Cluster Manager] ** xref:learn:clusters-and-availability/metadata-management.adoc[Metadata Management] diff --git a/modules/introduction/partials/new-features-81.adoc b/modules/introduction/partials/new-features-81.adoc index 58b3a29b1f..4b549fe7fd 100644 --- a/modules/introduction/partials/new-features-81.adoc +++ b/modules/introduction/partials/new-features-81.adoc @@ -61,3 +61,12 @@ TBD. Couchbase Server 8.1 introduces several new features for the xref:search:search.adoc[Search Service]. TBD. + +=== Backup Service + +Couchbase Server 8.1 introduces several new features for the xref:backup:backup.adoc[Backup Service]. + +* The new continuous backup feature supplements traditional periodic backups by frequently backing up changes to Magma buckets. +This backup can limit the loss of data updates that occur between full and incremental backups. +In addition to backup up data, it also backs up timestamps of when the data was updated. +These timestamps let you perform Point-In-Time Recovery (PITR) to restore the Magma bucket's data to the state it was in at a specific moment. diff --git a/modules/learn/pages/services-and-indexes/services/backup-service.adoc b/modules/learn/pages/services-and-indexes/services/backup-service.adoc index e24e3c1438..1f89e97778 100644 --- a/modules/learn/pages/services-and-indexes/services/backup-service.adoc +++ b/modules/learn/pages/services-and-indexes/services/backup-service.adoc @@ -36,6 +36,14 @@ To use it on a regular schedule, you must rely on an external scheduling system See xref:backup-restore:enterprise-backup-restore.adoc[cbbackupmgr] for more information about using the command-line tool. +== The Backup Service and Continuous Backup + +In addition to the periodic backups provided by the Backup Service, you can also use the continuous backup agent to frequently back up changes to Magma buckets. +This backup can limit the loss of data updates that occur between full and incremental backups. +It also records the timestamps of when data was mutated. +These timestamps let you perform Point-In-Time Recovery (PITR) to restore the Magma bucket's data to the state it was in at a specific moment. +See xref:learn:services/continuous-backup.adoc[] for more information about using continuous backup. + [#backup-service-architecture] == Backup Service Architecture diff --git a/modules/learn/pages/services-and-indexes/services/continuous-backup.adoc b/modules/learn/pages/services-and-indexes/services/continuous-backup.adoc new file mode 100644 index 0000000000..841367e4cd --- /dev/null +++ b/modules/learn/pages/services-and-indexes/services/continuous-backup.adoc @@ -0,0 +1,96 @@ += Continuous Backup & Point in Time Recovery +:description: pass:q[Continuous backup frequently backs up mutations to Magma buckets and records timestamps to enable Point-In-Time Recovery (PITR).] +:enterprise-only: +:toclevels: 3 + +[abstract] +{description} + +The Backup Service and `cbbackupmgr` are designed to perform periodic backups. +For example, you may choose to have the Backup Service perform a daily full backup at midnight and then incremental backups every 2 hours. + +[ditaa] +.... + Periodic Backups + +----------+ +-----------+ + | cEEE | | cEEE | + | Full | |Incremental| + | Backup | | Backup | +Time ---+----------+-------------------------------------------------+-----------+------> + | | + Midnight 2:00 AM +.... + + +Any data mutations made since the last periodic backup could be lost if there is data loss or corruption. + +Continuous backup supplements full and incremental backups by performing backups at shorter intervals. +You can have it perform backups as frequently as every 2 minutes. +It can limit the loss of data mutations that take place between periodic full and incremental backups. +For example, the following diagram shows a continuous backup that's configured to perform backups every 10 minutes. + +[ditaa] +.... + Continuous Backups + +----------+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-----------+ + | cEEE | | | | | | | | | | | | | | | | | | | | | | | | | | cEEE | + | Full | +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ |Incremental| + | Backup | | Backup | +--------+----------+-------------------------------------------------+-----------+------> + | | + | Midnight | 2:00 A.M. +.... + +== Point in Time Recovery + +With periodic backups, you can only restore a bucket to the state it was in when it was backed up. +For example, consider the backups shown in the Periodic Backup diagram. +You can only choose to restore the bucket to the state it was in at midnight or at 2 A.M. +You cannot restore it to any state between the 2 backups. + +In addition to backing up data, continuous backup also records the timestamp of data mutations. +These timestamps let you perform Point-In-Time Recovery (PITR)—restoring the bucket to the state it was in at a specific moment. + +Using PITR, you can precisely recover from data loss or corruption. +For example, suppose a user accidentally flushed a bucket. +You can restore the bucket to seconds before the flush occurred, recovering the lost data. + +== How Continuous Backup Works + +Continuous backup relies on feature of the Magma storage engine to track changes to the data in a bucket. +Because it relies on these features, continuous backup is only available for Magma buckets. +You cannot use it with Couchstore buckets. + +You enable continuous backup on a per-bucket basis. +This lets you choose to enable it for buckets that contain critical data, while leaving it off for buckets that do not need it. + +=== Continuous Backup Locations + +Continuous backup saves the data mutations and their timestamps to a backup storage location. +This location must be separate from the location of the backup repository for full and incremental backups. +All of the nodes in the cluster must have access to this storage location. +You can host the location on a shared network directory such as an NFS share. +Continuous backup also supports storage locations on Amazon S3, Microsoft Azure Blob Storage, and Google's Cloud Storage. + +=== Continuous Backup Interval + +When enabling continuous backup, you must choose the interval between continuous backup copy the mutations to a bucket's data to the backup location. +The minimum interval is 2 minutes. + + + + + +[ditaa] +.... + ++-------------+ +| Latest | Backup +| Continuous | Interval | Current +| Backup | +2 Minutes | Moment +| | <-----------> | +| cEEE | | ++-------------+ V +------------------------------*-----> + +.... \ No newline at end of file diff --git a/preview/DOC-12561_Continuous_backup_PITR.yml b/preview/DOC-12561_Continuous_backup_PITR.yml new file mode 100644 index 0000000000..bfbba5c0b2 --- /dev/null +++ b/preview/DOC-12561_Continuous_backup_PITR.yml @@ -0,0 +1,27 @@ +sources: + docs-devex: + branches: release/8.1 + +# docs-analytics: +# branches: release/8.0 + + couchbase-cli: + url: https://github.com/couchbaselabs/couchbase-cli-doc + branches: master + startPaths: docs/ + +# backup: +# branches: master +# startPaths: docs/ + + cb-swagger: + url: https://github.com/couchbaselabs/cb-swagger + branches: release/8.1 + start_path: docs + + # Minimal SDK build +# docs-sdk-common: +# branches: [release/8.0] +# docs-sdk-java: +# branches: [3.11] + From 1c4729137b24c1330079ac20e9645f097b7b5938 Mon Sep 17 00:00:00 2001 From: Gary Gray Date: Thu, 25 Jun 2026 16:26:09 -0400 Subject: [PATCH 08/13] Initial draft pf continuoud backup concepts page. Added note on change service page. --- modules/learn/pages/data/change-history.adoc | 5 + .../services/continuous-backup.adoc | 139 ++++++++++++++++-- 2 files changed, 130 insertions(+), 14 deletions(-) diff --git a/modules/learn/pages/data/change-history.adoc b/modules/learn/pages/data/change-history.adoc index dc7cac3def..003a3b423b 100644 --- a/modules/learn/pages/data/change-history.adoc +++ b/modules/learn/pages/data/change-history.adoc @@ -49,6 +49,11 @@ See xref:rest-api:rest-bucket-create.adoc[Creating and Editing Buckets]. * The CLI, using `couchbase-cli bucket-create` (to create a bucket) or `couchbase-cli bucket-edit` (to edit a bucket); specifying one or both of the parameters `history-retention-bytes` and `history-retention-seconds`. See xref:cli:cbcli/couchbase-cli-bucket-create.adoc[bucket-create] and xref:cli:cbcli/couchbase-cli-bucket-edit.adoc[bucket-edit]. +IMPORTANT: You must enable change history on any bucket you want to back up using continuous backup on. +Once you enable continuous backup, you cannot turn off change history for the bucket unless you turn off continuous backup first. +Using collection-level overrides of change history in a bucket where you have enabled continuous backup us unsupported. +See xref:learn:services/continuous-backup.adoc[] for more information. + [#default-collection-setting] === Default Collection-Setting diff --git a/modules/learn/pages/services-and-indexes/services/continuous-backup.adoc b/modules/learn/pages/services-and-indexes/services/continuous-backup.adoc index 841367e4cd..23194e91ec 100644 --- a/modules/learn/pages/services-and-indexes/services/continuous-backup.adoc +++ b/modules/learn/pages/services-and-indexes/services/continuous-backup.adoc @@ -62,35 +62,146 @@ Because it relies on these features, continuous backup is only available for Mag You cannot use it with Couchstore buckets. You enable continuous backup on a per-bucket basis. -This lets you choose to enable it for buckets that contain critical data, while leaving it off for buckets that do not need it. +You can choose to enable it for buckets that contain critical data while leaving it off for buckets that not as vital or do not see many mutations. === Continuous Backup Locations Continuous backup saves the data mutations and their timestamps to a backup storage location. This location must be separate from the location of the backup repository for full and incremental backups. All of the nodes in the cluster must have access to this storage location. -You can host the location on a shared network directory such as an NFS share. +You can host the location on a shared network directory such as a Network File System (NFS) share. Continuous backup also supports storage locations on Amazon S3, Microsoft Azure Blob Storage, and Google's Cloud Storage. -=== Continuous Backup Interval +=== The Continuous Backup Interval -When enabling continuous backup, you must choose the interval between continuous backup copy the mutations to a bucket's data to the backup location. -The minimum interval is 2 minutes. +When enabling continuous backup, you must choose the interval when continuous backup copies the mutations to a bucket's data to the backup location. +The minimum interval is 2 minutes. +When setting the interval, you must consider potential data loss vs. potential increased storage cost. +The longer you make the interval, the greater the possibility of losing data mutations that occur before the next continuous backup. +It also affects the latest moment you can choose to restore the bucket to during a PITR. +[ditaa] +.... ++-------------+ Up to the +| Latest | backup +| continuous | interval | Current +| backup | + 2 Minutes | time +| | <-----------> | +| cEEE | | ++-------------+ V +--------------*---------------*---------> + | + Latest point in time + you can restore to +.... + +The latest point in time you can restore the bucket to is within the latest continuous backup. +This can be as long as the entire backup interval, plus an additional 2 minutes. +The additional 2 minutes is because Magma flushes its in-memory data to disk every 2 minutes. + +The continuous backup interval plus 2 minutes is the worst case scenario. +In most cases, you'll be able to restore to a more recent point in time. + +A shorter continuous backup interval can cost you more money if your storage location is cloud-based. +The cloud services that continuous backup supports all have per-request fees in addition to their raw data storage fee. +Having a shorter interval means more frequent API requests, and therefore more charges. +A continuous backup interval of 5 minutes costs you twice the amount of request fees than a 10 minute backup interval. +The continuous backup interval setting is per bucket. +You can choose to have a shorter continuous backup interval on vital buckets that have a higher volume mutations. +You can also set a longer interval for less important buckets have fewer mutations. +=== Continuous Backup Retention + +Continuous backup retains its backups for a configurable period of time. +The range you can set the retention period is from 1 hour to 60 days. + +The retention period controls how far back in time you can restore a bucket using PITR. +Continuous backup purges data that's older than the retention period. +Once continuous backup purges the data, you cannot perform a PITR to the range of time it contained. + +Assuming you have traditional full and incremental backups older than the continuous backup retention period, you can use them to restore the bucket. +However, they can only restore the bucket to the state it was in when the backup was taken. +You cannot use them to restore the bucket to an arbitrary point in time. + +When choosing the retention period, you must balance between the cost of storing the backup data and the flexibility of restoring your bucket to an earlier time. +If you choose cloud storage for your continuous backup location, you pay data storage fees based on the amounrt of data you store. +These fees increase the longer you set the retention period. + +== How PITR Works + +You can perform a PITR on a bucket to the same cluster or a different cluster. +When restoring to the same cluster, you can choose to restore to the a new bucket or to the existing bucket. + +If you're restoring to the original bucket, decide whether you want the bucket to be in the state it was in at the specific point in time. +PITR does not automatically flush the bucket before performing a restore. +Any documents added after the point in time you choose will remain in the bucket. +However, mutations to existing documents made after the point in time are lost. +If you want the bucket to be the way it was at the point in time you chose to restore to, flush the bucket before restoring. + +When perform a PITR on a bucket, continuous backup first restores the most recent full and incremental backups from before restore time you chose. +It then replays the mutations stored in the continuous backups in order until it reaches the restore time you chose. [ditaa] .... + + +----------+ +-----------+ + | cEEE | | cEEE | Continuous Backups + | Full | |Incremental| +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ + | Backup | | Backup | | | | | | | | | | | | | | | | | | | +--------+----------*---------+-----------+--+-+-+-+-+-+-+-+-+-+-+-+-+-*-+-+-+-+--------> + | | | | + Restored Restored |<----------------------->| + first second Continuous backups | + replayed | + Selected + point in + time +.... -+-------------+ -| Latest | Backup -| Continuous | Interval | Current -| Backup | +2 Minutes | Moment -| | <-----------> | -| cEEE | | -+-------------+ V -------------------------------*-----> -.... \ No newline at end of file +== Continuous Backup's Impact on the Cluster + +Enabling has several impacts on the cluster and interactions with other features. + +=== Disk Use + +Continuous backup increases the disk usage on nodes. +Couchbase Server has to retain some files it would otherwise delete until continuous backup can back them up. +The amount of added disk space depends on the number of mutations and the length of the continuous backup interval. + +=== Change History Requirement + +As part of enabling continuous backup, you must enable the bucket's change history. +Change history is a Magma feature that lets continuous backup record the mutations so it can replay them back during a PITR. +When you have continuous backup enabled for a bucket, you cannot turn off the bucket's change history setting. + +When you enable continuous backup for a bucket, disabling change history for individual collections is not supported. +Verify that no collection has a change history override setting on it before enabling continuous backup. + +See xref:learn/:data/change-history.adoc[] for more information about change history. + +=== Continuous Backup and Unsafe Failover + +For continuous backup to be able to reliably restore a bucket to a point it time, it must have a consistent history of the changes made to a bucket. +An xref:learn:clusters-and-availability/hard-failover.adoc#performing-an-unsafe-failover[unsafe failover] can cause consistency issues in this history. +If you must perform an unsafe failover on a node, first stop the Couchbase Server process on it. +Stopping the process prevents inconsistencies in history, and protects continuous backup's ability to perform a PITR. + +See xref:install:startup-shutdown.adoc[] for more instructions on shutting down the Couchbase Server process. + +=== Continuous Backup and Encryption at Rest + +When you enable encryption at rest for a bucket's data, continuous backup needs to maintain a copy of the encryption at rest Data Encryption Keys (DEKs). +It needs its own copy of these keys because the encryption at rest feature rotates its DEKs. +Therefore, the current DEKs are usually not the same ones continuous backup needs to decrypt older the data in its backups. +Continuous backup creates a backup of the DEKs along with the bucket's data. + +Continuous backup must have access to a Key Management System (KMS) to protect the DEKs it saves alongside the bucket data. +It uses the KMS to securely re-encrypt the DEKs. +This re-encryption protects the keys the same way encryption at rest does. +All nodes in the cluster must be able to connect to the KMS you configure for continuous backup. + +If you have already configured a KMS to manage encryption keys for your traditional full and incremental backups, you can reuse it to manage the keys for continuous backup. + From d743b51963679cee318ff4820a09bee9f88afcc7 Mon Sep 17 00:00:00 2001 From: Gary Gray Date: Mon, 29 Jun 2026 16:56:25 -0400 Subject: [PATCH 09/13] Draft of the manage continuous backup page. --- modules/ROOT/nav.adoc | 1 + .../hard-failover.adoc | 4 + .../services/continuous-backup.adoc | 65 ++-- .../manage-continuous-backup.adoc | 300 ++++++++++++++++++ 4 files changed, 345 insertions(+), 25 deletions(-) create mode 100644 modules/manage/pages/manage-backup-and-restore/manage-continuous-backup.adoc diff --git a/modules/ROOT/nav.adoc b/modules/ROOT/nav.adoc index ce2ab0eec8..720981dcd4 100644 --- a/modules/ROOT/nav.adoc +++ b/modules/ROOT/nav.adoc @@ -186,6 +186,7 @@ include::third-party:partial$nav.adoc[] *** xref:backup-restore:cbbackupmgr-cloud.adoc[Cloud Backup] *** xref:backup-restore:cbbackupmgr-network-filesystems.adoc[Network Filesystems] *** xref:backup-restore:cbbackupmgr-encryption.adoc[Encryption] + ** xref:manage:manage-backup-and-restore/manage-continuous-backup.adoc[] * xref:manage:monitor/monitor-intro.adoc[Monitor] ** xref:manage:monitor/xdcr-monitor-timestamp-conflict-resolution.adoc[Monitor Clock Drift] ** xref:manage:monitor/set-up-prometheus-for-monitoring.adoc[] diff --git a/modules/learn/pages/clusters-and-availability/hard-failover.adoc b/modules/learn/pages/clusters-and-availability/hard-failover.adoc index 5eb0732f62..d1d9c132e4 100644 --- a/modules/learn/pages/clusters-and-availability/hard-failover.adoc +++ b/modules/learn/pages/clusters-and-availability/hard-failover.adoc @@ -39,6 +39,10 @@ Note that this restriction also protects the cluster in situations where multipl [#performing-an-unsafe-failover] === Performing an Unsafe Failover +CAUTION: If you have 1 or more buckets using continuous backup, you must stop the Couchbase Server process on the node before performing an unsafe failover on it. +Not stopping the Couchbase Server process could result in data inconsistencies that can cause issues with the continuous backup. +See xref:learn:services-and-indexes/services/continuous-backup.adoc[] for more information. + In Couchbase Server 7.0 or a later version, metadata is managed by a _consensus protocol_; which achieves strong consistency by _synchronously_ replicating metadata to a majority of the nodes before considering it committed. (This is described in xref:learn:clusters-and-availability/metadata-management.adoc[Metadata Management].) The metadata so managed includes _topology information_. diff --git a/modules/learn/pages/services-and-indexes/services/continuous-backup.adoc b/modules/learn/pages/services-and-indexes/services/continuous-backup.adoc index 23194e91ec..5e496207c8 100644 --- a/modules/learn/pages/services-and-indexes/services/continuous-backup.adoc +++ b/modules/learn/pages/services-and-indexes/services/continuous-backup.adoc @@ -72,6 +72,15 @@ All of the nodes in the cluster must have access to this storage location. You can host the location on a shared network directory such as a Network File System (NFS) share. Continuous backup also supports storage locations on Amazon S3, Microsoft Azure Blob Storage, and Google's Cloud Storage. +You can use 1 continuous backup storage location to store backups for multiple buckets. +Having multiple buckets sharing the same storage location makes performing PITR on multiple buckets easier. +You use the same commands to restore multiple buckets. + +You can also use different storage locations for buckets. +Separate locations are useful in multi-tenancy configurations. +Each tenant can supply their own continuous backup location. +You can also separately track the cost of a tenant's cloud-based continuous backup location. + === The Continuous Backup Interval When enabling continuous backup, you must choose the interval when continuous backup copies the mutations to a bucket's data to the backup location. @@ -140,47 +149,53 @@ Any documents added after the point in time you choose will remain in the bucket However, mutations to existing documents made after the point in time are lost. If you want the bucket to be the way it was at the point in time you chose to restore to, flush the bucket before restoring. -When perform a PITR on a bucket, continuous backup first restores the most recent full and incremental backups from before restore time you chose. -It then replays the mutations stored in the continuous backups in order until it reaches the restore time you chose. +When restoring, PITR first restores the latest full and incremental backups from before restore time you chose. +It then replays the mutations stored in the continuous backups since the last full or incremental backup. +It continues replaying the mutations until it reaches the point in time you chose. [ditaa] .... - +----------+ +-----------+ - | cEEE | | cEEE | Continuous Backups - | Full | |Incremental| +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ - | Backup | | Backup | | | | | | | | | | | | | | | | | | | ---------+----------*---------+-----------+--+-+-+-+-+-+-+-+-+-+-+-+-+-*-+-+-+-+--------> - | | | | - Restored Restored |<----------------------->| - first second Continuous backups | - replayed | - Selected - point in - time + +----------+ +-----------+ + | cEEE | | cEEE | Continuous Backups + | Full | . . . |Incremental+--+--+--+--+--+--+--+--+--+ + | Backup | | Backup | | | | | | | | | | +----+----------+---------+-----------+--+--+--+--+--+--+--+*-+--+--> + | | | | + Restored Restored |<------------------->| + first second Continuous backups | + replayed | + | + Selected + point in + time .... -== Continuous Backup's Impact on the Cluster +== Continuous Backup's Effects on the Cluster Enabling has several impacts on the cluster and interactions with other features. -=== Disk Use - -Continuous backup increases the disk usage on nodes. +* Continuous backup increases the disk usage on nodes. Couchbase Server has to retain some files it would otherwise delete until continuous backup can back them up. The amount of added disk space depends on the number of mutations and the length of the continuous backup interval. -=== Change History Requirement +* You must use the credential store to provide the credentials for any cloud storage locations you use for continuous backup. +The credential store has its own requirements---you must enable peer-to-peer encryption and encryption at rest for Couchbase Server configuration files. +See the credential store documentation for more information. + +// FIXME: add link to the credential store docs when they are done. -As part of enabling continuous backup, you must enable the bucket's change history. +* As part of enabling continuous backup, you must enable the bucket's change history. Change history is a Magma feature that lets continuous backup record the mutations so it can replay them back during a PITR. When you have continuous backup enabled for a bucket, you cannot turn off the bucket's change history setting. ++ When you enable continuous backup for a bucket, disabling change history for individual collections is not supported. Verify that no collection has a change history override setting on it before enabling continuous backup. -See xref:learn/:data/change-history.adoc[] for more information about change history. ++ +See xref:learn:data/change-history.adoc[] for more information about change history. === Continuous Backup and Unsafe Failover @@ -193,12 +208,12 @@ See xref:install:startup-shutdown.adoc[] for more instructions on shutting down === Continuous Backup and Encryption at Rest -When you enable encryption at rest for a bucket's data, continuous backup needs to maintain a copy of the encryption at rest Data Encryption Keys (DEKs). -It needs its own copy of these keys because the encryption at rest feature rotates its DEKs. +If you enable encryption at rest for a bucket's data, continuous backup needs to maintain a copy of the encryption at rest Data Encryption Keys (DEKs). +It needs its own copy of these keys because the encryption at rest rotates its DEKs. Therefore, the current DEKs are usually not the same ones continuous backup needs to decrypt older the data in its backups. -Continuous backup creates a backup of the DEKs along with the bucket's data. +Continuous backup creates a backup of the DEKs along with the bucket's data so that it can decrypt the data itself. -Continuous backup must have access to a Key Management System (KMS) to protect the DEKs it saves alongside the bucket data. +To protect the DEKs, you must configure continuous backup with access to a Key Management System (KMS) to protect the DEKs it saves alongside the bucket data. It uses the KMS to securely re-encrypt the DEKs. This re-encryption protects the keys the same way encryption at rest does. All nodes in the cluster must be able to connect to the KMS you configure for continuous backup. diff --git a/modules/manage/pages/manage-backup-and-restore/manage-continuous-backup.adoc b/modules/manage/pages/manage-backup-and-restore/manage-continuous-backup.adoc new file mode 100644 index 0000000000..6768c26415 --- /dev/null +++ b/modules/manage/pages/manage-backup-and-restore/manage-continuous-backup.adoc @@ -0,0 +1,300 @@ += Manage Continuous Backup +:description: pass:q[This topic describes how to configure continuous backup to frequently back up the data in your Magma buckets.] +:enterprise-only: +:toclevels: 3 + +[abstract] +{description} +See xref:learn:services-and-indexes/services/continuous-backup.adoc[] for an overview of continuous backup. + +== Prerequisites + +Before configuring continuous backup, your cluster must meet the following requirements: + +* It must have 1 or more Magma buckets. +Continuous backup relies on Magma's change history feature to back up individual mutations. +You cannot use it on Couchstore buckets. +Couchstore buckets can still be backed up and restored using the traditional full and incremental backups. + +* Verify that all of the system clocks in your cluster are synchronized. +See xref:install:synchronize-clocks-using-ntp.adoc[] for more information. + +* You must configure scheduled periodic backups using either the Backup Service or `cbbackupmgr`. +Point in Time Recovery (PITR) uses the full and incremental backups taken just before the point in time you're restoring to. +It restores these backups and then uses the data stored in the continuous backup to fill the gap between the previous intermittent backup and the point in time you're recovering to. +See xref:manage-backup-and-restore.adoc[] to learn how to configure intermittent backups. + +* You must have a shared location where continuous backup can store its backup data. +All node in the cluster must be able to reach this location. +It can be a shared filesystem, such as an NFS share. +You can also use cloud-based storage hosted by Amazon S3, Microsoft Azure Blob Storage, and Google's Cloud Storage. + ++ +Whatever location you choose, it must be empty of existing files and dedicated to continuous backup. +You can use the same storage location to store continuous backups for multiple buckets. +Using the same location makes performing a PITR on multiple buckets easier, as you can use the same commands to restore multiple buckets. + +* If you're using cloud-based storage for your continuous backup location, you must add the credentials to access the location to the Couchbase Server credential store. +You must also grant the backup service access to this credential. +See Credential Store for more information. + +// FIXME: add link to credential store docs once written. + +* If you have enabled encryption at rest for the bucket's data that you're backing up, you must supply continuous backup with access to a https://en.wikipedia.org/wiki/Key_management#Key_management_system[Key Management System^] (KMS). +It uses the KMS to encrypt the encryption at rest Data Access Keys (DEKs) it needs to decrypt the data during PITR. +If you have configured a KMS to encrypt keys for traditional periodic backup, you can reuse those credentials for continuous backup. +See xref:learn:security/native-encryption-at-rest-overview.adoc[] for more information about encryption at rest. + +== Configure Bucket Change History for Continuous Backup + +The continuous backup feature relies on the bucket having change history enabled. +Therefore, before you enable continuous backup, you must verify that the bucket's `historyRetentionCollectionDefault` setting is `true`. +You also must verify that no collection overrides the bucket's change history setting. + +You must also configure the bucket so that it keeps its change history long enough for continuous backup to save it to the storage location. + +See xref:learn:data/scopes-and-collections.adoc#change-history[Change History] for more information about the change history. + +To configure the bucket's change history settings: + +. Verify that the bucket's change history setting is the default value of `true`. +The following example calls the REST-API and pipes the result through `jq` to get the setting for the `travel-sample` bucket: + ++ +[source,bash] +``` +curl -s -u $COUCHBASE_USERNAME:$COUCHBASE_PASSWORD \ + http://node1.example.com:8091/pools/default/buckets/travel-sample \ + | jq '.historyRetentionCollectionDefault' +``` + ++ +The previous examples returns either `true` or `false`. + +. If the value is not `true`, set it to `true`. +The following example sets the `travel-sample` bucket to `true`. + ++ +[source,bash] +``` +curl -s POST -u $COUCHBASE_USERNAME:$COUCHBASE_PASSWORD \ + http://node1.example.com:8091/pools/default/buckets/travel-sample\ + -d historyRetentionCollectionDefault=true +``` + ++ +Then repeat step 1 to verify that `historyRetentionCollectionDefault` is now set to `true`. + +. Verify that no collection in the bucket overrides the bucket's `historyRetentionCollectionDefault` setting. +If a collection overrides this setting, continuous backup cannot back it up. +Excluding collections from continuous backup is unsupported. + ++ +The following example gets the settings for the `travel-sample` bucket and uses `jq` to locate aany collections that have their `history` key set to `false`: + ++ +[source,bash] +``` +$ curl -s GET -u $COUCHBASE_USERNAME:$COUCHBASE_PASSWORD \ + http://node1.example.com:8091/pools/default/buckets/travel-sample/scopes \ + | jq '.scopes[] + | select(.name != "_system") + | .name as $scope + | .collections[] + | select(.history == false) + | {scope: $scope, collection: .name, history: .history}' +``` + ++ +Any collections that have overrides appear in the output: + ++ +[source,json] +``` +{ + "scope": "inventory", + "collection": "airline", + "history": false +} +{ + "scope": "tenant_agent_01", + "collection": "bookings", + "history": false +} +``` + +. If any collections have overrides, edit them to change their `history` setting back to `true`. +The following example sets the history setting for the `airline` collection in the `inventory` scope to `true`. + ++ +[source,bash] +``` +curl -s -X PATCH -u $COUCHBASE_USERNAME:$COUCHBASE_PASSWORD \ + http://node1.example.com:8091/pools/default/buckets/travel-sample/scopes/inventory/collections/airline \ + -d history=true +``` + ++ +After editing the collections that had overrides, re-run step 3 to verify that no collection overrides the bucket's setting. + +. You must set the history retention time for the bucket to a period long enough for continuous backup to collect and save the bucket's history to the backup location. +This period is 15 minutes or double the continuous backup interval, whichever is longer. +For example, if you chose 10 minutes for your backup interval, you must set the retention time to 20 minutes. + ++ +The following example sets the `travel-sample` bucket's history retention to 20 minutes (1200 seconds). + ++ +[source,bash] +``` +curl -v -s POST -u $COUCHBASE_USERNAME:$COUCHBASE_PASSWORD \ + http://node1.example.com:8091/pools/default/buckets/travel-sample \ + -d historyRetentionSeconds=1200 +``` + + +== Configure Continuous Backup + +You can configure continuous backup using the Couchbase Server Web Console, the command line interface, or the REST API. + + + +=== Configure Continuous Backup Using the Web Console + +. Click *Buckets*. +. If creating a new bucket, click *Add Bucket*. +Otherwise, expand an existing bucket and click *Edit*. +. Click *Advanced Bucket Settings*. +. Under +. Under Continuous Backup, select *Enable*. +. Enter the location to store the continuous backup data. + This is either: + * An absolute path to the mount point of a shared network storage location such as an NFS share. + This mount point must be the same on all nodes. + * The cloud storage URI for the storage location. +. Set how frequently continuous backup saves data to the storage location in minutes. +Remember that if you use a cloud storage location, a lower settings for this value can often result in greater cost due to per-access charges. +The minimum value is 2. +. Set the number of hours Couchbase Server should retain the continuous backup data, +This value controls the window where you can restore to a point in time. +If you use the cloud as a backup storage location, a higher setting results in higher data storage charges. +. If you entered a cloud storage URI for the Backup Location, choose the credential from the credential store for the Backup Service to use when authenticating with the cloud provider. +Make sure you have granted access to Backup Service for this credential. +. If you have enabled encryption at rest for the data in the bucket, enter the URI for the KMS Key. +Valid URIs start with `awskms`, `azurekeyvalue`, or `gcpkms`. + +=== Configure Continuous Backup Using the REST API + +You can enable continuous backup when creating a bucket or editing it via the REST-API. + +Whether you're creating a new bucket or editing an existing bucket, make a POST call to the `/pools/default/buckets/` REST API endpoint. +Set the following : + + +* `continuousBackupEnabled`: set to `true` to enable continuous backup for the bucket. +* `continuousBackupLocation`: The location where the backup service will store the continuous backup data. +This value must be either an absolute path to NFS an mount point mounted on every node or a cloud storage URI. +* `continuousBackupCloudStorageCredId`: If you set `continuousBackupLocation` to a cloud storage URI, set this to the name of a credential in the credential store that the Backup Service can use to authenticate. +You must grant the Backup Service access to this credential. +* `continuousBackupInterval`: How frequently, in minutes, the Backup Service copies data to the continuous backup location. +When using a cloud-based storage location, lower settings for this value result in higher per-access costs. +* `continuousBackupRetentionPeriod`: the number of hours the Backup Service keeps the continuous backup data before purging it. +This value sets how far back in time you can use Point in Time Recovery (PITR). +* If you have enabled encryption at rest for the bucket, you must supply one of the following: +** `continuousBackupKmKeyUrl`: The URI for the KMS key the Backup Service uses to manage the encryption key it uses to encrypt data encryption keys. + This URI must start with `awskms`, `azurekeyvalue`, or `gcpkms`. +** `continuousBackupKmCredId`: the name of a credential in the Couchbase Server credential store that grants the Backup Service access to a KMS to manage its encryption keys. + +See xref:rest-api:rest-bucket-create.adoc[] for details of using the REST API to add and edit buckets. + +The following example enables continuous backup for `travel-sample` bucket. +It sets the backup interval to 10 minutes. +The backup location is an NFS share mounted on each not at the path `/shared.continuous-backup`. + +[source,bash] +``` +curl -X POST localhost:8091/pools/default/buckets/travel-sample \ + -u $COUCHBASE_USERNAME:$COUCHBASE_PASSWORD \ + -d continuousBackupEnabled=true \ + -d continuousBackupLocation="/shared/continuous-backup" \ + -d continuousBackupInterval=10 +``` + +=== Enable Continuous Backup Using the Command Line + +Use the `couchbase-cli` tool's `bucket create` or `bucket-edit` tool to change the continuous backup settings for the bucket. + +Use the following arguments to enable the continuous backup settings: + +* `--continuous-backup-enabled`: set to `1` to enable continuous backup for the bucket. +* `--continuous-backup-location`: The location where the backup service will store the continuous backup data. +This value must a string containing either an absolute path to NFS an mount point mounted on every node or a cloud storage URI. +* `--continuous-backup-cloud-storage-cred-id`: If you set `--continuous-backup-location` to a cloud storage URI, set this to the name of a credential in the Couchbase Server credential store that the Backup Service can use to authenticate. +You must grant the Backup Service access to this credential. +* `--continuous-backup-interval`: How frequently, in minutes, the Backup Service copies data to the continuous backup location. +When using a cloud-based storage location, lower settings for this value result in higher per-access costs. +* `--continuous-backup-retention-period`: the number of hours the Backup Service keeps the continuous backup data before purging it. +This value sets how far back in time you can use Point in Time Recovery (PITR). +* If you have enabled encryption at rest for the bucket, you must supply one of the following: +** `--continuous-backup-km-key-url`: The URI for the KMS key the Backup Service uses to manage the encryption key it uses to encrypt data encryption keys. + This URI must start with `awskms`, `azurekeyvalue`, or `gcpkms`. +** `--continuous-backup-km-cred=id`: the name of a credential in the Couchbase Server credential store that grants the Backup Service access to a KMS to manage its encryption keys. + + +The following example enables continuous backup on the `travel-sample` bucket. +It sets the backup interval to 10 minutes and the retention period to 30 days (270 hours). +The backup location is an NFS share mounted at `/shared/continuous-backup` on all nodes. + +[source,bash] +``` +couchbase-cli bucket-edit --cluster couchbase://node1.example.com \ + --username Administrator --password password \ + --bucket travel-sample \ + --continuous-backup-enabled 1 \ + --continuous-backup-location /shared/continuous-backup \ + --continuous-backup-interval 10 \ + --continuous-backup-retention-period 270 +``` + +## Turning Off Continuous Backup + +Once enabled, you can turn off continuous backup for a bucket. +You can turn off continuous backups before you do a PITR to prevent a backup from occurring during the restore. +You may also want to turn it off to prevent a point in time you may want to restore to from falling outside the retention window. + +You can turn off continuous backup using the Couchbase Server Web Console, REST API, or command line: + +Using the Couchbase Server Web Console:: + ++ +. Click *Buckets*. +. Click the entry for the bucket. +. Click *Edit*. +. Click *Advanced bucket settings*. +. Under *Continuous Backup*, deselect *Enabled*. +. Click *Save Changes*. + +Using the REST API:: + +Make a POST call to the `/pools/default/buckets/` endpoint and set to `false`. +For example, to turn off continuous backup for the `travel-sample` bucket, use this command: + ++ +[souce,bash] +``` +curl -X POST localhost:8091/pools/default/buckets/travel-sample \ + -u $COUCHBASE_USERNAME:$COUCHBASE_PASSWORD \ + -d continuousBackupEnabled=false +``` + +Using the Ccommand Line Interface:: + +Use the `couchbase-cli` tools' `edit-bucket` command with the argument `--continuous-backup-enabled 0`: + +[source.bash] +``` +couchbase-cli bucket-edit --cluster couchbase://node1.example.com \ + --username Administrator --password password \ + --bucket travel-sample \ + --continuous-backup-enabled 0 +``` From 44e4906b713c43aaa1d0242823cb6d38183c10d4 Mon Sep 17 00:00:00 2001 From: Gary Gray Date: Tue, 30 Jun 2026 16:43:39 -0400 Subject: [PATCH 10/13] * In progress on managing PITR. * Added minitor continuous backup. * Updated metrics. * Finished draft of manage continuous backup. --- modules/ROOT/nav.adoc | 2 + .../manage-continuous-backup.adoc | 76 ++++---- .../manage-pitr.adoc | 74 ++++++++ .../monitor-continuous-backup.adoc | 74 ++++++++ .../attachments/cm_metrics_metadata.json | 12 ++ .../attachments/fts_metrics_metadata.json | 10 + .../attachments/goxdcr_metrics_metadata.json | 10 +- .../attachments/index_metrics_metadata.json | 20 ++ .../attachments/kv_metrics_metadata.json | 173 ++++++++++++++++-- .../attachments/n1ql_metrics_metadata.json | 27 ++- preview/DOC-12561_Continuous_backup_PITR.yml | 6 +- 11 files changed, 421 insertions(+), 63 deletions(-) create mode 100644 modules/manage/pages/manage-backup-and-restore/manage-pitr.adoc create mode 100644 modules/manage/pages/manage-backup-and-restore/monitor-continuous-backup.adoc diff --git a/modules/ROOT/nav.adoc b/modules/ROOT/nav.adoc index 720981dcd4..7edf06da92 100644 --- a/modules/ROOT/nav.adoc +++ b/modules/ROOT/nav.adoc @@ -187,6 +187,8 @@ include::third-party:partial$nav.adoc[] *** xref:backup-restore:cbbackupmgr-network-filesystems.adoc[Network Filesystems] *** xref:backup-restore:cbbackupmgr-encryption.adoc[Encryption] ** xref:manage:manage-backup-and-restore/manage-continuous-backup.adoc[] + ** xref:manage:manage-backup-and-restore/monitor-continuous-backup.adoc[] + ** xref:manage:manage-backup-and-restore/manage-pitr.adoc[] * xref:manage:monitor/monitor-intro.adoc[Monitor] ** xref:manage:monitor/xdcr-monitor-timestamp-conflict-resolution.adoc[Monitor Clock Drift] ** xref:manage:monitor/set-up-prometheus-for-monitoring.adoc[] diff --git a/modules/manage/pages/manage-backup-and-restore/manage-continuous-backup.adoc b/modules/manage/pages/manage-backup-and-restore/manage-continuous-backup.adoc index 6768c26415..940169c1ce 100644 --- a/modules/manage/pages/manage-backup-and-restore/manage-continuous-backup.adoc +++ b/modules/manage/pages/manage-backup-and-restore/manage-continuous-backup.adoc @@ -11,6 +11,8 @@ See xref:learn:services-and-indexes/services/continuous-backup.adoc[] for an ove Before configuring continuous backup, your cluster must meet the following requirements: +* Your Couchbase Server account must have the xref:learn:security/roles.adoc#backup-full-admin[Full Admin] or xref:learn:security/roles.adoc#backup-full-admin[Backup Full Admin] role. + * It must have 1 or more Magma buckets. Continuous backup relies on Magma's change history feature to back up individual mutations. You cannot use it on Couchstore buckets. @@ -52,13 +54,14 @@ Therefore, before you enable continuous backup, you must verify that the bucket' You also must verify that no collection overrides the bucket's change history setting. You must also configure the bucket so that it keeps its change history long enough for continuous backup to save it to the storage location. +This period is either 15 minutes or twice the continuous backup interval, whichever is greater. -See xref:learn:data/scopes-and-collections.adoc#change-history[Change History] for more information about the change history. +See xref:learn:data/scopes-and-collections.adoc#change-history[Change History] for more information about Magma's change history feature. To configure the bucket's change history settings: . Verify that the bucket's change history setting is the default value of `true`. -The following example calls the REST-API and pipes the result through `jq` to get the setting for the `travel-sample` bucket: +The following example calls the REST API and pipes the result through `jq` to get the setting for the `travel-sample` bucket: + [source,bash] @@ -71,8 +74,7 @@ curl -s -u $COUCHBASE_USERNAME:$COUCHBASE_PASSWORD \ + The previous examples returns either `true` or `false`. -. If the value is not `true`, set it to `true`. -The following example sets the `travel-sample` bucket to `true`. +. If the value is not `true`, set it to `true` as shown in the following example: + [source,bash] @@ -83,30 +85,31 @@ curl -s POST -u $COUCHBASE_USERNAME:$COUCHBASE_PASSWORD \ ``` + -Then repeat step 1 to verify that `historyRetentionCollectionDefault` is now set to `true`. +Repeat step 1 to verify that `historyRetentionCollectionDefault` is now set to `true`. . Verify that no collection in the bucket overrides the bucket's `historyRetentionCollectionDefault` setting. If a collection overrides this setting, continuous backup cannot back it up. Excluding collections from continuous backup is unsupported. + -The following example gets the settings for the `travel-sample` bucket and uses `jq` to locate aany collections that have their `history` key set to `false`: +The following example gets the settings for the `travel-sample` bucket and uses `jq` to locate any collections that have their `history` key set to `false`: + [source,bash] ``` -$ curl -s GET -u $COUCHBASE_USERNAME:$COUCHBASE_PASSWORD \ - http://node1.example.com:8091/pools/default/buckets/travel-sample/scopes \ - | jq '.scopes[] - | select(.name != "_system") - | .name as $scope - | .collections[] - | select(.history == false) - | {scope: $scope, collection: .name, history: .history}' +curl -s GET -u $COUCHBASE_USERNAME:$COUCHBASE_PASSWORD \ + http://node1.example.com:8091/pools/default/buckets/travel-sample/scopes \ + | jq '.scopes[] + | select(.name != "_system") + | .name as $scope + | .collections[] + | select(.history == false) + | {scope: $scope, collection: .name, history: .history}' ``` + -Any collections that have overrides appear in the output: +Any collections that have overrides appear in the output. +For example: + [source,json] @@ -123,7 +126,7 @@ Any collections that have overrides appear in the output: } ``` -. If any collections have overrides, edit them to change their `history` setting back to `true`. +. If any collections have overrides, edit them to change their `history` setting to `true`. The following example sets the history setting for the `airline` collection in the `inventory` scope to `true`. + @@ -139,7 +142,7 @@ After editing the collections that had overrides, re-run step 3 to verify that n . You must set the history retention time for the bucket to a period long enough for continuous backup to collect and save the bucket's history to the backup location. This period is 15 minutes or double the continuous backup interval, whichever is longer. -For example, if you chose 10 minutes for your backup interval, you must set the retention time to 20 minutes. +For example, if you chose 10 minutes for your continuous backup interval, set the retention time to 20 minutes. + The following example sets the `travel-sample` bucket's history retention to 20 minutes (1200 seconds). @@ -147,7 +150,7 @@ The following example sets the `travel-sample` bucket's history retention to 20 + [source,bash] ``` -curl -v -s POST -u $COUCHBASE_USERNAME:$COUCHBASE_PASSWORD \ +curl -s POST -u $COUCHBASE_USERNAME:$COUCHBASE_PASSWORD \ http://node1.example.com:8091/pools/default/buckets/travel-sample \ -d historyRetentionSeconds=1200 ``` @@ -157,8 +160,6 @@ curl -v -s POST -u $COUCHBASE_USERNAME:$COUCHBASE_PASSWORD \ You can configure continuous backup using the Couchbase Server Web Console, the command line interface, or the REST API. - - === Configure Continuous Backup Using the Web Console . Click *Buckets*. @@ -188,7 +189,7 @@ Valid URIs start with `awskms`, `azurekeyvalue`, or `gcpkms`. You can enable continuous backup when creating a bucket or editing it via the REST-API. Whether you're creating a new bucket or editing an existing bucket, make a POST call to the `/pools/default/buckets/` REST API endpoint. -Set the following : +Set the following: * `continuousBackupEnabled`: set to `true` to enable continuous backup for the bucket. @@ -204,9 +205,7 @@ This value sets how far back in time you can use Point in Time Recovery (PITR). ** `continuousBackupKmKeyUrl`: The URI for the KMS key the Backup Service uses to manage the encryption key it uses to encrypt data encryption keys. This URI must start with `awskms`, `azurekeyvalue`, or `gcpkms`. ** `continuousBackupKmCredId`: the name of a credential in the Couchbase Server credential store that grants the Backup Service access to a KMS to manage its encryption keys. - -See xref:rest-api:rest-bucket-create.adoc[] for details of using the REST API to add and edit buckets. - + The following example enables continuous backup for `travel-sample` bucket. It sets the backup interval to 10 minutes. The backup location is an NFS share mounted on each not at the path `/shared.continuous-backup`. @@ -220,18 +219,21 @@ curl -X POST localhost:8091/pools/default/buckets/travel-sample \ -d continuousBackupInterval=10 ``` +See xref:rest-api:rest-bucket-create.adoc[] for details about editing bucket settings using the REST API. + === Enable Continuous Backup Using the Command Line -Use the `couchbase-cli` tool's `bucket create` or `bucket-edit` tool to change the continuous backup settings for the bucket. +Use the `couchbase-cli` tool's `bucket create` or `bucket-edit` command to change the continuous backup settings for the bucket. -Use the following arguments to enable the continuous backup settings: +Use the following arguments to configure continuous backup: * `--continuous-backup-enabled`: set to `1` to enable continuous backup for the bucket. * `--continuous-backup-location`: The location where the backup service will store the continuous backup data. -This value must a string containing either an absolute path to NFS an mount point mounted on every node or a cloud storage URI. -* `--continuous-backup-cloud-storage-cred-id`: If you set `--continuous-backup-location` to a cloud storage URI, set this to the name of a credential in the Couchbase Server credential store that the Backup Service can use to authenticate. -You must grant the Backup Service access to this credential. -* `--continuous-backup-interval`: How frequently, in minutes, the Backup Service copies data to the continuous backup location. +This value must a string containing either an absolute path to an NFS mount point mounted on every node or a cloud storage URI. +* `--continuous-backup-cloud-storage-cred-id`: If you set `--continuous-backup-location` to a cloud storage URI, set this to the name of a credential in the Couchbase Server credential store. +The Backup Service uses this credential to authenticate with the cloud provider. +You must also grant the Backup Service access to this credential. +* `--continuous-backup-interval`: How frequently in minutes then Backup Service copies data to the continuous backup location. When using a cloud-based storage location, lower settings for this value result in higher per-access costs. * `--continuous-backup-retention-period`: the number of hours the Backup Service keeps the continuous backup data before purging it. This value sets how far back in time you can use Point in Time Recovery (PITR). @@ -240,7 +242,6 @@ This value sets how far back in time you can use Point in Time Recovery (PITR). This URI must start with `awskms`, `azurekeyvalue`, or `gcpkms`. ** `--continuous-backup-km-cred=id`: the name of a credential in the Couchbase Server credential store that grants the Backup Service access to a KMS to manage its encryption keys. - The following example enables continuous backup on the `travel-sample` bucket. It sets the backup interval to 10 minutes and the retention period to 30 days (270 hours). The backup location is an NFS share mounted at `/shared/continuous-backup` on all nodes. @@ -248,7 +249,8 @@ The backup location is an NFS share mounted at `/shared/continuous-backup` on al [source,bash] ``` couchbase-cli bucket-edit --cluster couchbase://node1.example.com \ - --username Administrator --password password \ + --username $COUCHBASE_USERNAME \ + --password $COUCHBASE_PASSWORD \ --bucket travel-sample \ --continuous-backup-enabled 1 \ --continuous-backup-location /shared/continuous-backup \ @@ -256,11 +258,13 @@ couchbase-cli bucket-edit --cluster couchbase://node1.example.com \ --continuous-backup-retention-period 270 ``` +See the documentation for the `couchbase-cli` tool's xref:cli:cbcli/couchbase-cli-bucket-create.adoc[] and xref:cli:cbcli/couchbase-cli-bucket-edit.adoc[] commands for more information about creating and editing buckets using the command line. + ## Turning Off Continuous Backup Once enabled, you can turn off continuous backup for a bucket. You can turn off continuous backups before you do a PITR to prevent a backup from occurring during the restore. -You may also want to turn it off to prevent a point in time you may want to restore to from falling outside the retention window. +You may also want to turn it off to preserve the PITR recovery window that's currently in the continuous backup location. You can turn off continuous backup using the Couchbase Server Web Console, REST API, or command line: @@ -276,7 +280,7 @@ Using the Couchbase Server Web Console:: Using the REST API:: -Make a POST call to the `/pools/default/buckets/` endpoint and set to `false`. +Make a POST call to the `/pools/default/buckets/` endpoint and set `continuousBackupEnabled` to `false`. For example, to turn off continuous backup for the `travel-sample` bucket, use this command: + @@ -287,14 +291,14 @@ curl -X POST localhost:8091/pools/default/buckets/travel-sample \ -d continuousBackupEnabled=false ``` -Using the Ccommand Line Interface:: +Using the Command Line Interface:: Use the `couchbase-cli` tools' `edit-bucket` command with the argument `--continuous-backup-enabled 0`: [source.bash] ``` couchbase-cli bucket-edit --cluster couchbase://node1.example.com \ - --username Administrator --password password \ + --username $COUCHBASE_USERNAME --password $COUCHBASE_PASSWORD \ --bucket travel-sample \ --continuous-backup-enabled 0 ``` diff --git a/modules/manage/pages/manage-backup-and-restore/manage-pitr.adoc b/modules/manage/pages/manage-backup-and-restore/manage-pitr.adoc new file mode 100644 index 0000000000..90b593e292 --- /dev/null +++ b/modules/manage/pages/manage-backup-and-restore/manage-pitr.adoc @@ -0,0 +1,74 @@ += Manage Point in Time Recovery (PITR) +:description: pass:q[Point in time recovery (PITR) lets you restore a bucket to the state it was in at a specific time.] +:enterprise-only: +:toclevels: 3 + +[abstract] +{description} +See xref:learn:services-and-indexes/services/continuous-backup.adoc[] for an overview of continuous backup and point in time recovery. + +## Prerequisites + +* Your Couchbase Server account must have the xref:learn:security/roles.adoc#backup-full-admin[Full Admin] or xref:learn:security/roles.adoc#backup-full-admin[Backup Full Admin] role. + +* You must have a Magma bucket configured with continuous backup. +See xref:manage:manage-backup-and-restore/manage-continuous-backup.adoc[] for the steps to configure continuous backup for a Magma bucket. + +* Continuous backup must have made at least a single backup to the continuous backup location. +This means continuous backup must have been active for a bit longer than its continuous backup interval. + +* You must have a traditional periodic backups for the bucket you are restoring. +Continuous backup restores the most recent full backup taken before the pont in time you are restoring to. +It then restores any incremental backups taken between the full backup and the point in time you chose. +It uses the data in the continuous backup location to fill the gap between the last traditional backup it restored and the target point in time. + +* You must choose which point in time you want to restore the bucket to. + ++ +The earliest point in time you can restore to is determined by your continuous backup retention period. +The exception is if you enabled continuous backup more recently than the retention period. +In that case, the earliest moment you can restore to is shortly after you enabled continuous backup. +If you need to restore your cluster to a point earlier than this time, you can only restore a traditional backup, assuming you have one that covers the time you need to restore to. +However, you cannot restore to a specific point in time with traditional backup. + ++ +The latest time you can restore to is whenever the Backup Service last copied data to the continuous backup location. +This may be as far back in the past as the continuous backup iteration period you set when configuring continuous backup. +If you stopped continuous backup earlier than + ++ +See xref:manage:manage-backup-and-restore/monitor-continuous-backup.adoc#get-cont-backup-info[Get Information About a Continuous Backup Location] to learn how to find the range of time backed up by a continuous backup location. + +* You must have a bucket where you want to restore to. +This can be: ++ +-- +** The original bucket. +** A new bucket in the same cluster. +** A bucket in a different cluster. +-- ++ +PITR recovery does not flush the bucket before a restore. +The documents restored by PITR overwrite corresponding documents in the bucket. +However, documents that do not exist in the backup (such as those added after the point in time) remain in the bucket. +If you want to restore the bucket to its exact state at the point in time you choose, flush the bucket before restoring. +See xref:manage:manage-buckets/flush-bucket.adoc[] for more information about flushing buckets. + +## Restore to a Point in Time + +You use the `cbcontbk` command line tool to restore a bucket backed up using continuous backup to point in time. + +When calling `cbcontbk`, you must supply the following arguments: + +* `--target` is the date and time you want to restore the bucket to in an https://www.rfc-editor.org/info/rfc3339/[RFC3339 timestamp^]. +* `-u` and `-p` are the username and password for the full administrator. +* `--tmp-dir` a temporary directory the Backup Service can use when restoring data. +* `-l` the continuous backup storage location. +This is either the absolute path of the NFS mount point, or the URI of the cloud storage location. +* `-a` the path to the traditional backup directory. +* `-r` is the repository containing the bucket's traditional backup. +* `-c` is the URL for a node in the cluster. + +In addition, you must supply credentials to access the continuous backup location or the traditional backup repository if they are stored in the cloud. + + diff --git a/modules/manage/pages/manage-backup-and-restore/monitor-continuous-backup.adoc b/modules/manage/pages/manage-backup-and-restore/monitor-continuous-backup.adoc new file mode 100644 index 0000000000..c0b2746a49 --- /dev/null +++ b/modules/manage/pages/manage-backup-and-restore/monitor-continuous-backup.adoc @@ -0,0 +1,74 @@ += Monitor Continuous Backup +:description: pass:q[Once you have enabled continuous backup for a bucket, you can monitor its status.] +:enterprise-only: +:toclevels: 3 + +[abstract] +{description} +See xref:learn:services-and-indexes/services/continuous-backup.adoc[] for an overview of continuous backup and point in time recovery. + +== Prerequisites + +* Your Couchbase Server account must have the xref:learn:security/roles.adoc#backup-full-admin[Full Admin] or xref:learn:security/roles.adoc#backup-full-admin[Backup Full Admin] role. +* You must have a Magma bucket with continuous backup enabled. +See xref:manage:manage-backup-and-restore/manage-continuous-backup.adoc[] for the steps to configure continuous backup for a Magma bucket. + + +[#get-cont-backup-info] +== Get Information About a Continuous Backup Location + +Once you have enabled continuous backup, you can get information about your backup location using the `cbcontbk` command line tool's `info` command. +The information includes the earliest and latest data in the location. + +To get the information about the location, use the command: + +[source,bash] +``` +cbcontbk info -l +``` + +Where `` is either the local path to the NFS mount or the URI of the cloud storage location where the backup is stored. +If the storage location is cloud-based, you must also supply the credentials and other settings `cbcontbk` needs to read data from the location. +See the `cbcontbk` documentation for details. + +// FIXME: link to cbcontbk docs when they are available. + +The following example gets information about the continuous backup location stored on an NFS share mounted at `/shared/continuous-backup` on all nodes in the cluster. + +[source,bash] +``` +cbcontbk info -l /shared/continuous-backup/ +``` + +The following example shows the output of the previous command for a location backing up the `travel-sample` bucket. + +[source,bash] +``` +| Buckets +| ------- +| +| * Bucket +| ------ +| Name | UUID | +| travel-sample | b5de13bdc656985b0a41dd3d832c9be6 | +| +| Range +| ----- +| Start | End | +| 2026-06-05T14:57:18Z | 2026-06-05T17:55:22Z | +| +``` + +The timestamps under the Range heading in the output show you the earliest and latest times you can restore the bucket to using point in time recovery (PITR). +See xref:manage:manage-backup-and-restore/manage-pitr.adoc[] for more information about performing a PITR. + +## Continuous Backup Metrics + +Continuous backup exposes several metrics that let you monitor its status. +You can use these metrics to monitor its status in tools such as Prometheus. +These metrics all start with the `contbk_` (continuous backup) prefix. + +// FIXME: link to metrics whenever they show up in the metrics_metadata file in the server build.. They aren't there as of build #2395 + +For more information about monitoring Couchbase Server using metrics, see xref:current:manage/monitor/set-up-prometheus-for-monitoring.adoc[]. + diff --git a/modules/metrics-reference/attachments/cm_metrics_metadata.json b/modules/metrics-reference/attachments/cm_metrics_metadata.json index acbc6eda43..92a0aaa874 100644 --- a/modules/metrics-reference/attachments/cm_metrics_metadata.json +++ b/modules/metrics-reference/attachments/cm_metrics_metadata.json @@ -507,6 +507,18 @@ "stability": "internal", "type": "counter" }, + "cm_lighthouse_telemetry_sends_total": { + "added": "7.6.12", + "help": "Number of times lighthouse telemetry sends were attempted", + "labels": [ + { + "help": "Whether the report was a success or a failure", + "name": "result" + } + ], + "stability": "internal", + "type": "counter" + }, "cm_logs_total": { "added": "7.1.0", "help": "Total number of logs logged", diff --git a/modules/metrics-reference/attachments/fts_metrics_metadata.json b/modules/metrics-reference/attachments/fts_metrics_metadata.json index 8518a3e178..7803c24f9c 100644 --- a/modules/metrics-reference/attachments/fts_metrics_metadata.json +++ b/modules/metrics-reference/attachments/fts_metrics_metadata.json @@ -989,6 +989,16 @@ ], "type": "counter" }, + "fts_total_vector_indexes_in_cpu": { + "added": "8.1.0", + "help": "The total number of segmented vector indexes currently loaded in CPU memory", + "type": "gauge" + }, + "fts_total_vector_indexes_in_gpu": { + "added": "8.1.0", + "help": "The total number of segmented vector indexes currently loaded in GPU memory", + "type": "gauge" + }, "fts_total_vectors": { "added": "7.6.1", "help": "The total number of vectors indexed", diff --git a/modules/metrics-reference/attachments/goxdcr_metrics_metadata.json b/modules/metrics-reference/attachments/goxdcr_metrics_metadata.json index 2c72cbf0cc..45ab299913 100644 --- a/modules/metrics-reference/attachments/goxdcr_metrics_metadata.json +++ b/modules/metrics-reference/attachments/goxdcr_metrics_metadata.json @@ -770,25 +770,27 @@ }, "xdcr_docs_sent_with_subdoc_delete_total": { "added": "7.6.6", - "help": "The number of deletes issued using subdoc command instead of delete_with_meta to avoid cas rollback on target", + "help": "The number of deletes issued using subdoc (or MutateWithMeta) command instead of delete_with_meta to avoid cas rollback on target", "labels": [ "sourceBucketName", "targetClusterUUID", "targetBucketName", "pipelineType" ], + "notes": "MutateWithMeta is used when both source and target cluster are 8.1+. Subdoc command is used otherwise", "stability": "committed", "type": "counter" }, "xdcr_docs_sent_with_subdoc_set_total": { "added": "7.6.6", - "help": "The number of sets issued using subdoc command instead of set_with_meta to avoid cas rollback on target", + "help": "The number of sets issued using subdoc (or MutateWithMeta) command instead of set_with_meta to avoid cas rollback on target", "labels": [ "sourceBucketName", "targetClusterUUID", "targetBucketName", "pipelineType" ], + "notes": "MutateWithMeta is used when both source and target cluster are 8.1+. Subdoc command is used otherwise", "stability": "committed", "type": "counter" }, @@ -1269,7 +1271,7 @@ "type": "counter" }, "xdcr_non_local_mutations_skipped_total": { - "added": "8.1.0", + "added": "8.0.2", "help": "Number of document mutations that were not batched for replication to Target because they did not qualify as 'local' for the 'forwardLocalOnly' replication", "labels": [ "sourceBucketName", @@ -1505,7 +1507,7 @@ ], "notes": "One source node will be responsible to send heartbeat to one target node. This stats will accumulate only if this particular node received data", "stability": "internal", - "type": "gauge", + "type": "counter", "unit": "bytes" }, "xdcr_source_sync_xattr_removed_total": { diff --git a/modules/metrics-reference/attachments/index_metrics_metadata.json b/modules/metrics-reference/attachments/index_metrics_metadata.json index 7fc98c6378..96dc374b68 100644 --- a/modules/metrics-reference/attachments/index_metrics_metadata.json +++ b/modules/metrics-reference/attachments/index_metrics_metadata.json @@ -235,6 +235,26 @@ "help": "Average index scan rate across all indexes, for this node", "type": "gauge" }, + "index_num_bhive_dense_indexes": { + "added": "8.1.0", + "help": "Total number of bhive indexes without sparse vector, located on this node", + "type": "gauge" + }, + "index_num_bhive_sparse_indexes": { + "added": "8.1.0", + "help": "Total number of bhive indexes with sparse vector, located on this node", + "type": "gauge" + }, + "index_num_composite_dense_indexes": { + "added": "8.1.0", + "help": "Total number of composite indexes without sparse vector, located on this node", + "type": "gauge" + }, + "index_num_composite_sparse_indexes": { + "added": "8.1.0", + "help": "Total number of composite indexes with sparse vector, located on this node", + "type": "gauge" + }, "index_num_diverging_replica_indexes": { "added": "8.0.0", "help": "Number of index partitions with diverging replica item counts.", diff --git a/modules/metrics-reference/attachments/kv_metrics_metadata.json b/modules/metrics-reference/attachments/kv_metrics_metadata.json index c8089a023d..d2980c4e94 100644 --- a/modules/metrics-reference/attachments/kv_metrics_metadata.json +++ b/modules/metrics-reference/attachments/kv_metrics_metadata.json @@ -652,6 +652,7 @@ "kv_ep_cache_size": { "added": "7.0.0", "help": "Memory quota (in bytes) for this bucket.", + "long_description": "Provides the absolute maximum amount of memory, measured in bytes, allocated to a specific bucket on a single node. It represents the hard memory quota configured by the administrator, serving as the strict baseline for calculating critical thresholds like high and low watermarks. This value is critical for capacity planning.", "stability": "volatile", "type": "gauge" }, @@ -705,6 +706,7 @@ "kv_ep_checkpoint_memory_ratio": { "added": "7.0.0", "help": "Max ratio of the bucket quota that can be allocated in checkpoints. The system enters a TempOOM phase if hit.", + "long_description": "Provides the maximum percentage of the bucket's memory quota dedicated to checkpoints. When this ratio is hit, the system enters a temporary TempOOM phase and immediately triggers memory recovery to minimize the duration of TempOOM state. A checkpoint is a sequenced queue of mutations that acts as the single source of truth for both persistence and replication within a bucket. Persistence and replication consume from this queue independently, each progressing at its own pace without coordinating with the other. The checkpoint queue allow disk flusher and DCP consumers to read from the same data structure to ensure consistency. This value helps ensure efficient memory utilization.", "stability": "volatile", "type": "gauge" }, @@ -956,6 +958,12 @@ "stability": "committed", "type": "gauge" }, + "kv_ep_dcp_active_stream_inline_checkpoint_item_limit": { + "added": "7.0.0", + "help": "When the number of items pending for an ActiveStream's cursor is less than or equal to this value, the stream will run checkpoint item extraction inline rather than scheduling the ActiveStreamCheckpointProcessorTask. This avoids task-scheduling latency for small numbers of items. Set to 0 to always schedule the task.", + "stability": "volatile", + "type": "gauge" + }, "kv_ep_dcp_backfill_byte_drain_ratio": { "added": "7.0.0", "help": "What ratio of the dcp_backfill_byte_limit must be drained for un-pausing a paused backfill", @@ -982,7 +990,7 @@ }, "kv_ep_dcp_backfill_idle_protection_enabled": { "added": "7.0.0", - "help": "When true, DCP backfills will be checked for progress. Any backfill which makes no progress for dcp_backfill_idle_limit_seconds will be subject to further checks. If the directory referenced by dbname is over dcp_backfill_idle_disk_threshold percent used and cancelling the backfill will free disk space, the scan cancels and the associated DCP stream will end with reason slow.", + "help": "When true, DCP backfills will be checked for progress. Any backfill which makes no progress for dcp_backfill_idle_limit_seconds will be subject to further checks. If the directory referenced by dbname is over dcp_backfill_idle_disk_threshold percent used and cancelling the backfill will free disk space, the scan cancels and the associated DCP stream will end with reason slow. This is ignored for emphemeral buckets", "stability": "volatile", "type": "gauge" }, @@ -1010,6 +1018,12 @@ "stability": "volatile", "type": "gauge" }, + "kv_ep_dcp_cache_transfer_max_batch_bytes": { + "added": "7.0.0", + "help": "Maximum batch size in bytes for batching cache transfer items. At least 1 item will included in a batch, so a value of 0 is always 1 item per batch.", + "stability": "volatile", + "type": "gauge" + }, "kv_ep_dcp_cache_transfer_one_visit_per_step": { "added": "7.0.0", "help": "Set to false for simpler unit-testing. When true CacheTransferTask to visit the hash table many times per step, when false one item per task step", @@ -1597,6 +1611,13 @@ "type": "counter", "unit": "count" }, + "kv_ep_fusion_pending_upload_bytes_bytes": { + "added": "8.1.0", + "help": "Total amount of data not yet synced to FusionLogStore.", + "stability": "committed", + "type": "gauge", + "unit": "bytes" + }, "kv_ep_fusion_sync_attempts": { "added": "8.1.0", "help": "Total number of sync attempts to Fusion including both successful and failed attempts.", @@ -1931,6 +1952,30 @@ "stability": "volatile", "type": "gauge" }, + "kv_ep_magma_bloom_filter_cache_hits": { + "added": "8.1.0", + "help": "Number of bloom filter lookups served from the in-memory bloom filter cache", + "stability": "committed", + "type": "counter" + }, + "kv_ep_magma_bloom_filter_cache_misses": { + "added": "8.1.0", + "help": "Number of bloom filter lookups that required a disk read", + "stability": "committed", + "type": "counter" + }, + "kv_ep_magma_bloom_filter_lookups_hit": { + "added": "8.1.0", + "help": "Number of bloom filter lookups where the filter correctly indicated the key did not exist", + "stability": "committed", + "type": "counter" + }, + "kv_ep_magma_bloom_filter_lookups_miss": { + "added": "8.1.0", + "help": "Number of bloom filter lookups where the filter returned a false positive", + "stability": "committed", + "type": "counter" + }, "kv_ep_magma_bloom_filter_mem_used_bytes": { "added": "7.1.0", "help": "Bloom filter memory usage in all versions of the LSM Trees", @@ -1998,6 +2043,48 @@ "stability": "committed", "type": "gauge" }, + "kv_ep_magma_contbk_num_backup_hardlinks": { + "added": "8.1.0", + "help": "Number of file hardlinks that have occurred as a part of backup", + "stability": "committed", + "type": "counter", + "unit": "count" + }, + "kv_ep_magma_contbk_num_backups": { + "added": "8.1.0", + "help": "Number of Backups that have occurred", + "stability": "committed", + "type": "counter", + "unit": "count" + }, + "kv_ep_magma_contbk_num_bytes_written_bytes": { + "added": "8.1.0", + "help": "Number of bytes written as a part of the backup", + "stability": "committed", + "type": "gauge", + "unit": "bytes" + }, + "kv_ep_magma_contbk_num_failed_backups": { + "added": "8.1.0", + "help": "Number of Backups that have failed", + "stability": "committed", + "type": "counter", + "unit": "count" + }, + "kv_ep_magma_contbk_num_table_bytes_backedup_bytes": { + "added": "8.1.0", + "help": "Number of Table Bytes that have been backed up", + "stability": "committed", + "type": "gauge", + "unit": "bytes" + }, + "kv_ep_magma_contbk_num_write_ios": { + "added": "8.1.0", + "help": "Number of Write IOs that have occurred as a part of backup", + "stability": "committed", + "type": "counter", + "unit": "count" + }, "kv_ep_magma_corruption_errors": { "added": "8.1.0", "help": "Number of corruption errors detected by Magma", @@ -2292,6 +2379,12 @@ "type": "gauge", "unit": "bytes" }, + "kv_ep_magma_max_base_level_size": { + "added": "7.0.0", + "help": "Upper bound on the dynamic L0/L1 target size. The target scales with the bottom level; values above this are clamped.", + "stability": "volatile", + "type": "gauge" + }, "kv_ep_magma_max_checkpoints": { "added": "7.0.0", "help": "Maximum # of checkpoints retained for rollback.", @@ -2304,6 +2397,12 @@ "stability": "volatile", "type": "gauge" }, + "kv_ep_magma_max_num_level0_tables": { + "added": "7.0.0", + "help": "Maximum number of L0 tables in the magma LSM trees.", + "stability": "volatile", + "type": "gauge" + }, "kv_ep_magma_max_recovery_bytes": { "added": "7.0.0", "help": "Maximum amount of data that is replayed from the WAL during magma recovery. When this threshold is reached magma, creates a temporary checkpoint to recover at. This is per kvstore and in bytes.", @@ -2406,6 +2505,18 @@ "stability": "committed", "type": "gauge" }, + "kv_ep_magma_readio_get": { + "added": "8.1.0", + "help": "Number of read IOs performed on the get path", + "stability": "committed", + "type": "counter" + }, + "kv_ep_magma_readio_set": { + "added": "8.1.0", + "help": "Number of read IOs performed on the set path", + "stability": "committed", + "type": "counter" + }, "kv_ep_magma_readioamp_ratio": { "added": "7.1.0", "help": "Number of read IOs performed by GetDocs divided by the number of GetDocs", @@ -2632,6 +2743,7 @@ "kv_ep_max_size": { "added": "7.0.0", "help": "Memory quota (in bytes) for this bucket.", + "long_description": "Provides the absolute maximum amount of memory, measured in bytes, allocated to a specific bucket on a single node. It represents the hard memory quota configured by the administrator, serving as the strict baseline for calculating critical thresholds like high and low watermarks. This value is critical for capacity planning.", "stability": "volatile", "type": "gauge" }, @@ -2676,6 +2788,7 @@ "kv_ep_mem_high_wat_percent": { "added": "7.0.0", "help": "Ratio of the Bucket Quota at which to place the high watermark. This is the maximum desired memory usage. This value should be lower than mutation_mem_ratio to avoid no memory errors.", + "long_description": "Provides the specific percentage of the total bucket memory quota that acts as the high watermark threshold. By default, the high watermark is set at 85% of the bucket's allocated memory. It represents the critical trigger point where the engine proactively initiates background memory management routines to evict data from RAM to disk until memory usage drops below the low watermark. This value is vital for identifying heavy memory pressure.", "stability": "volatile", "type": "gauge" }, @@ -2688,6 +2801,7 @@ "kv_ep_mem_low_wat_percent": { "added": "7.0.0", "help": "Ratio of the Bucket Quota at which to place the low watermark. This is the point to which to reduce the memory usage of the bucket after hitting the high watermark.", + "long_description": "Provides the specific percentage of the maximum bucket memory quota designated as the low watermark. By default it is set at 10% lower than the high watermark. It represents the target recovery threshold for the item pager, indicating the point at which continuous eviction from memory to disk ceases after a high watermark breach. This value ensures a healthy buffer of free memory.", "stability": "volatile", "type": "gauge" }, @@ -2723,9 +2837,16 @@ "stability": "volatile", "type": "gauge" }, + "kv_ep_monitor_task_interval": { + "added": "7.0.0", + "help": "Schedule interval (in seconds) for the MonitorTask.", + "stability": "volatile", + "type": "gauge" + }, "kv_ep_mutation_mem_ratio": { "added": "7.0.0", "help": "Ratio of the Bucket Quota that can be used before mutations return tmpOOMs", + "long_description": "Provides the precise percentage of the maximum bucket memory quota beyond which the engine will begin to reject frontend mutations with temporary OOM errors. It is set at a default of 93%. It represents a protective throttling threshold, indicating the system is nearing complete memory exhaustion and must temporarily block incoming writes. It is a dynamic value that can be modified. This value protects the node from allocating beyond the assigned bucket quota. It prevent crashes in the cases like high memory fragmentation where memcached memory usage is higher than logical allocation.", "stability": "volatile", "type": "gauge" }, @@ -2915,6 +3036,7 @@ "kv_ep_persistent_metadata_purge_age": { "added": "7.0.0", "help": "Age in seconds after which tombstones may be purged. Defaults to 3 days. Max of 60 days. If this is dynamically changed for a magma bucket then magma may not trigger compactions when it should, this can be avoided by running a full manual compaction after changing this parameter.", + "long_description": "Provides the configured time interval after which the persistent metadata of deleted items, known as tombstones, is permanently purged from disk storage. It represents the active policy for tombstone expiration, balancing robust replication consistency against disk space reclamation. This value is crucial for tuning storage overhead.", "stability": "volatile", "type": "gauge" }, @@ -3260,13 +3382,6 @@ "stability": "volatile", "type": "gauge" }, - "kv_ephemeral_vb_checkpoint_memory_overhead_bytes": { - "added": "7.6.0", - "help": "Total memory overhead of all checkpoints", - "stability": "internal", - "type": "gauge", - "unit": "bytes" - }, "kv_ephemeral_vb_ht_memory_bytes": { "added": "7.6.0", "help": "Total memory used by HashTable items", @@ -3281,16 +3396,23 @@ "type": "counter", "unit": "bytes" }, + "kv_fusion_deferred_upload_bytes_bytes": { + "added": "8.1.0", + "help": "The amount of data Fusion knows is pending sync but has decided to defer in order to reduce the number of uploads to FusionLogStore", + "stability": "committed", + "type": "gauge", + "unit": "bytes" + }, "kv_fusion_max_pending_upload_bytes_bytes": { "added": "8.1.0", - "help": "The maximum number of pending upload bytes to be synced across all volumes.", + "help": "Configuration value for the maximum amount of pending upload bytes across all volumes.", "stability": "committed", "type": "gauge", "unit": "bytes" }, "kv_fusion_max_pending_upload_bytes_lwm_ratio": { "added": "8.1.0", - "help": "The proportion of max_pending_upload_bytes beyond which syncs for volumes with highest pending bytes are only allowed.", + "help": "Configuration value for the proportion of max_pending_upload_bytes beyond which syncs for volumes with highest pending bytes are only allowed.", "stability": "committed", "type": "gauge" }, @@ -3315,13 +3437,6 @@ "type": "gauge", "unit": "bytes" }, - "kv_fusion_pending_upload_bytes_bytes": { - "added": "8.1.0", - "help": "The total pending upload bytes across all fusion volumes.", - "stability": "committed", - "type": "gauge", - "unit": "bytes" - }, "kv_fusion_sync_rate_limit_bytes": { "added": "8.0.0", "help": "The rate limit for fusion sync uploads, in bytes per second.", @@ -3410,13 +3525,13 @@ "type": "gauge" }, "kv_magma_num_compactor_threads": { - "added": "8.1.0", + "added": "7.6.11", "help": "The number of magma compactor threads.", "stability": "committed", "type": "gauge" }, "kv_magma_num_flusher_threads": { - "added": "8.1.0", + "added": "7.6.11", "help": "The number of magma flusher threads.", "stability": "committed", "type": "gauge" @@ -3456,6 +3571,7 @@ "kv_mem_used_bytes": { "added": "7.0.0", "help": "Engine's total memory usage", + "long_description": "Provides the most comprehensive view of bucket memory consumption. It is used for quota enforcement, eviction decisions, and monitoring memory pressure. It is calculated using jemalloc's ArenaMalloc. The metric includes (1) Item data (item metadata, keys, resident and non-resident values); (2) Structural overhead (checkpoint queues, persistence queues, DCP queues, hash table and collections/scope metadata); and (3) Component allocations (Magma storage buffers, bloom filters, durability monitor memory, arena allocator overhead and any other internal allocations).", "stability": "committed", "type": "gauge", "unit": "bytes" @@ -3529,6 +3645,19 @@ "stability": "committed", "type": "counter" }, + "kv_pager_deleted_bytes": { + "added": "7.6.11", + "help": "Number of bytes deleted by pager", + "stability": "committed", + "type": "gauge", + "unit": "bytes" + }, + "kv_pager_throttled": { + "added": "7.6.11", + "help": "Total number of times pager has been throttled", + "stability": "committed", + "type": "counter" + }, "kv_read_bytes": { "added": "7.0.0", "help": "The number bytes received from all connections bound to this bucket", @@ -3685,6 +3814,12 @@ "type": "gauge", "unit": "seconds" }, + "kv_tls_certificate_verification_problems": { + "added": "totoro", + "help": "The number of times TLS certificate verification has found issues with the certificate presented by the client during connection establishment", + "stability": "committed", + "type": "gauge" + }, "kv_total_connections": { "added": "7.0.0", "help": "The total number of connections to this system since the process started (or reset)", diff --git a/modules/metrics-reference/attachments/n1ql_metrics_metadata.json b/modules/metrics-reference/attachments/n1ql_metrics_metadata.json index 4f6a7f6b19..a9ea5ff49b 100644 --- a/modules/metrics-reference/attachments/n1ql_metrics_metadata.json +++ b/modules/metrics-reference/attachments/n1ql_metrics_metadata.json @@ -89,6 +89,11 @@ "help": "Count of CAS mismatch errors", "type": "counter" }, + "n1ql_chats": { + "added": "8.1.0", + "help": "Total number of natural language chats.", + "type": "counter" + }, "n1ql_counter_cu_total": { "added": "7.6.0", "help": "The number of distinct operations recording Compute Units (CUs) with Regulator.", @@ -235,6 +240,11 @@ "type": "counter", "uiName": "N1QL Error Rate" }, + "n1ql_external_scans": { + "added": "8.1.0", + "help": "Total number of external collection scans.", + "type": "counter" + }, "n1ql_ffdc_manual": { "added": "7.6.6", "help": "The total number of ffdc captures triggered due to manual invocation of ffdc admin api", @@ -717,11 +727,26 @@ "uiName": "Query Execution Time", "unit": "nanoseconds" }, + "n1ql_spills_merge": { + "added": "7.6.12", + "help": "Number of merge operations that have spilled to disk.", + "type": "counter" + }, "n1ql_spills_order": { - "added": "8.0.0", + "added": "7.6.12", "help": "Number of order by operations that have spilled to disk.", "type": "counter" }, + "n1ql_spills_seq_scan": { + "added": "7.6.12", + "help": "Number of sequential scans that have spilled to disk.", + "type": "counter" + }, + "n1ql_spills_update_statistics": { + "added": "7.6.12", + "help": "Number of statistics update operations that have spilled to disk.", + "type": "counter" + }, "n1ql_svi_request_timer_15m_rate": { "added": "8.0.0", "help": "The 15m.rate latency of SQL++ FTS VECTOR requests.", diff --git a/preview/DOC-12561_Continuous_backup_PITR.yml b/preview/DOC-12561_Continuous_backup_PITR.yml index bfbba5c0b2..a191863262 100644 --- a/preview/DOC-12561_Continuous_backup_PITR.yml +++ b/preview/DOC-12561_Continuous_backup_PITR.yml @@ -10,9 +10,9 @@ sources: branches: master startPaths: docs/ -# backup: -# branches: master -# startPaths: docs/ + backup: + branches: master + startPaths: docs/ cb-swagger: url: https://github.com/couchbaselabs/cb-swagger From 0e8a30554876d2680d533d826bbdc5e033e84c9e Mon Sep 17 00:00:00 2001 From: Gary Gray Date: Wed, 1 Jul 2026 14:40:26 -0400 Subject: [PATCH 11/13] Wrapped up draft of PITR page. --- modules/manage/examples/continuous-backup.log | 150 ++++++++++++++++++ modules/manage/examples/continuous-backup.sh | 15 ++ .../manage-continuous-backup.adoc | 9 +- .../manage-pitr.adoc | 120 +++++++++++++- .../monitor-continuous-backup.adoc | 20 +-- 5 files changed, 288 insertions(+), 26 deletions(-) create mode 100644 modules/manage/examples/continuous-backup.log create mode 100644 modules/manage/examples/continuous-backup.sh diff --git a/modules/manage/examples/continuous-backup.log b/modules/manage/examples/continuous-backup.log new file mode 100644 index 0000000000..5af6911e66 --- /dev/null +++ b/modules/manage/examples/continuous-backup.log @@ -0,0 +1,150 @@ +# Result of getting continuous backup info +# tag::get-backup-info[] +| Buckets +| ------- +| +| * Bucket +| ------ +| Name | UUID | +| travel-sample | b5de13bdc656985b0a41dd3d832c9be6 | +| +| Range +| ----- +| Start | End | +| 2026-06-05T14:57:18Z | 2026-06-23T17:55:22Z | +| +# end::get-backup-info[] + +# tag::restore-output[] +Warning: Restore has skipped some users and/or groups. Please check the logs for more information. +(1/6) Restoring backup '2026-06-05T14_07_44.644199759Z' +Copied all data in 2.196s (Avg. 20.72MiB/Sec) 63288 items / 41.43MiB +[===========================================================================================================================================] 100.00% + +| Transfer +| -------- +| Status | Avg Transfer Rate | Started At | Finished At | Duration | +| Succeeded | 20.72MiB/s | Tue, 09 Jun 2026 18:28:44 +0000 | Tue, 09 Jun 2026 18:28:46 +0000 | 2.274s | + +| Bucket +| ------ +| Name | Status | Transferred | Avg Transfer Rate | Started At | Finished At | Duration | +| travel-sample | Succeeded | 41.43MiB | 41.43MiB/s | Tue, 09 Jun 2026 18:28:45 +0000 | Tue, 09 Jun 2026 18:28:46 +0000 | 1.939s | +| +| Mutations | Deletions | Expirations | +| --------- | --------- | ----------- | +| Received | Errored | Skipped | Received | Errored | Skipped | Received | Errored | Skipped | +| 63288 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | + +Warning: Restore has skipped some users and/or groups. Please check the logs for more information. +(2/6) Restoring backup '2026-06-05T15_30_24.625814389Z' +Copied all data in 2.599s (Avg. 206.57KiB/Sec) 619 items / 413.14KiB +[===========================================================================================================================================] 100.00% + +| Transfer +| -------- +| Status | Avg Transfer Rate | Started At | Finished At | Duration | +| Succeeded | 206.57KiB/s | Tue, 09 Jun 2026 18:28:44 +0000 | Tue, 09 Jun 2026 18:28:47 +0000 | 2.663s | + +| Bucket +| ------ +| Name | Status | Transferred | Avg Transfer Rate | Started At | Finished At | Duration | +| travel-sample | Succeeded | 413.14KiB | 413.14KiB/s | Tue, 09 Jun 2026 18:28:47 +0000 | Tue, 09 Jun 2026 18:28:47 +0000 | 177ms | +| +| Mutations | Deletions | Expirations | +| --------- | --------- | ----------- | +| Received | Errored | Skipped | Received | Errored | Skipped | Received | Errored | Skipped | +| 369 | 0 | 0 | 250 | 0 | 0 | 0 | 0 | 0 | + +Warning: Restore has skipped some users and/or groups. Please check the logs for more information. +(3/6) Restoring backup '2026-06-05T16_37_54.174811004Z' +Copied all data in 2.991s (Avg. 143.06KiB/Sec) 303 items / 286.13KiB +[===========================================================================================================================================] 100.00% + +| Transfer +| -------- +| Status | Avg Transfer Rate | Started At | Finished At | Duration | +| Succeeded | 95.38KiB/s | Tue, 09 Jun 2026 18:28:44 +0000 | Tue, 09 Jun 2026 18:28:47 +0000 | 3.042s | + +| Bucket +| ------ +| Name | Status | Transferred | Avg Transfer Rate | Started At | Finished At | Duration | +| travel-sample | Succeeded | 286.13KiB | 286.13KiB/s | Tue, 09 Jun 2026 18:28:47 +0000 | Tue, 09 Jun 2026 18:28:47 +0000 | 172ms | +| +| Mutations | Deletions | Expirations | +| --------- | --------- | ----------- | +| Received | Errored | Skipped | Received | Errored | Skipped | Received | Errored | Skipped | +| 233 | 0 | 0 | 70 | 0 | 0 | 0 | 0 | 0 | + +Warning: Restore has skipped some users and/or groups. Please check the logs for more information. +(4/6) Restoring backup '2026-06-05T18_30_56.913953884Z' +Copied all data in 3.461s (Avg. 241.02KiB/Sec) 910 items / 723.06KiB +[===========================================================================================================================================] 100.00% + +| Transfer +| -------- +| Status | Avg Transfer Rate | Started At | Finished At | Duration | +| Succeeded | 241.02KiB/s | Tue, 09 Jun 2026 18:28:44 +0000 | Tue, 09 Jun 2026 18:28:48 +0000 | 3.498s | + +| Bucket +| ------ +| Name | Status | Transferred | Avg Transfer Rate | Started At | Finished At | Duration | +| travel-sample | Succeeded | 723.06KiB | 723.06KiB/s | Tue, 09 Jun 2026 18:28:47 +0000 | Tue, 09 Jun 2026 18:28:48 +0000 | 243ms | +| +| Mutations | Deletions | Expirations | +| --------- | --------- | ----------- | +| Received | Errored | Skipped | Received | Errored | Skipped | Received | Errored | Skipped | +| 633 | 0 | 0 | 277 | 0 | 0 | 0 | 0 | 0 | + +Warning: Restore has skipped some users and/or groups. Please check the logs for more information. +(5/6) Restoring backup '2026-06-05T19_30_57.726884217Z' +Copied all data in 5.093s (Avg. 11.28KiB/Sec) 54 items / 56.39KiB +[===========================================================================================================================================] 100.00% + +| Transfer +| -------- +| Status | Avg Transfer Rate | Started At | Finished At | Duration | +| Succeeded | 11.28KiB/s | Tue, 09 Jun 2026 18:28:44 +0000 | Tue, 09 Jun 2026 18:28:49 +0000 | 5.119s | + +| Bucket +| ------ +| Name | Status | Transferred | Avg Transfer Rate | Started At | Finished At | Duration | +| travel-sample | Succeeded | 56.39KiB | 56.39KiB/s | Tue, 09 Jun 2026 18:28:49 +0000 | Tue, 09 Jun 2026 18:28:49 +0000 | 117ms | +| +| Mutations | Deletions | Expirations | +| --------- | --------- | ----------- | +| Received | Errored | Skipped | Received | Errored | Skipped | Received | Errored | Skipped | +| 44 | 0 | 0 | 10 | 0 | 0 | 0 | 0 | 0 | + +(6/6) Restoring backup 'Continuous' +Copied all data in 5.316s (Avg. 378B/Sec) 0 items / 1.85KiB +[===========================================================================================================================================] 100.00% + +| Transfer +| -------- +| Status | Avg Transfer Rate | Started At | Finished At | Duration | +| Succeeded | 378B/s | Tue, 09 Jun 2026 18:28:44 +0000 | Tue, 09 Jun 2026 18:28:50 +0000 | 5.454s | + +| Bucket +| ------ +| Name | Status | Transferred | Avg Transfer Rate | Started At | Finished At | Duration | +| travel-sample | Succeeded | 1.85KiB | 1.85KiB/s | Tue, 09 Jun 2026 18:28:50 +0000 | Tue, 09 Jun 2026 18:28:50 +0000 | 91ms | +| +| Mutations | Deletions | Expirations | +| --------- | --------- | ----------- | +| Received | Errored | Skipped | Received | Errored | Skipped | Received | Errored | Skipped | +| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | +root@node1:/# cbcontbk info -l /shared/continuous-backup/ +| Buckets +| ------- +| +| * Bucket +| ------ +| Name | UUID | +| travel-sample | b5de13bdc656985b0a41dd3d832c9be6 | +| +| Range +| ----- +| Start | End | +| 2026-06-05T14:57:18Z | 2026-06-09T14:54:10Z | +# end::restore-output[] \ No newline at end of file diff --git a/modules/manage/examples/continuous-backup.sh b/modules/manage/examples/continuous-backup.sh new file mode 100644 index 0000000000..cc0bd8562a --- /dev/null +++ b/modules/manage/examples/continuous-backup.sh @@ -0,0 +1,15 @@ +# Get information about the continuous backup location +# tag::get-backup-info[] +cbcontbk info -l /shared/continuous-backup/ +# end::get-backup-info[] + +# Restore the bucket +# tag::restore-bucket[] +cbcontbk restore --target 2026-06-08T19:54:10Z \ + -u $COUCHBASE_USERNAME -p $COUCHBASE_PASSWORD \ + --tmp-dir /scratch \ + -l /shared/continuous-backup/ \ + -a /shared/backups \ + -r 1c48c43c-45b8-4155-8352-7d21523b2603 \ + -c couchbase://node3.example.com +# end::restore-bucket[] \ No newline at end of file diff --git a/modules/manage/pages/manage-backup-and-restore/manage-continuous-backup.adoc b/modules/manage/pages/manage-backup-and-restore/manage-continuous-backup.adoc index 940169c1ce..0841bf2d6b 100644 --- a/modules/manage/pages/manage-backup-and-restore/manage-continuous-backup.adoc +++ b/modules/manage/pages/manage-backup-and-restore/manage-continuous-backup.adoc @@ -260,11 +260,12 @@ couchbase-cli bucket-edit --cluster couchbase://node1.example.com \ See the documentation for the `couchbase-cli` tool's xref:cli:cbcli/couchbase-cli-bucket-create.adoc[] and xref:cli:cbcli/couchbase-cli-bucket-edit.adoc[] commands for more information about creating and editing buckets using the command line. -## Turning Off Continuous Backup +[#stop-continuous-backup] +## Stop Continuous Backup -Once enabled, you can turn off continuous backup for a bucket. -You can turn off continuous backups before you do a PITR to prevent a backup from occurring during the restore. -You may also want to turn it off to preserve the PITR recovery window that's currently in the continuous backup location. +Once enabled, you can stop continuous backup for a bucket. +You must must continuous backups before you do a PITR to prevent a backup from occurring during the restore. +You may also want to stop it to preserve the PITR recovery window that's currently in the continuous backup location. You can turn off continuous backup using the Couchbase Server Web Console, REST API, or command line: diff --git a/modules/manage/pages/manage-backup-and-restore/manage-pitr.adoc b/modules/manage/pages/manage-backup-and-restore/manage-pitr.adoc index 90b593e292..6b5d672646 100644 --- a/modules/manage/pages/manage-backup-and-restore/manage-pitr.adoc +++ b/modules/manage/pages/manage-backup-and-restore/manage-pitr.adoc @@ -49,11 +49,18 @@ This can be: -- + PITR recovery does not flush the bucket before a restore. -The documents restored by PITR overwrite corresponding documents in the bucket. -However, documents that do not exist in the backup (such as those added after the point in time) remain in the bucket. +By default, it does not overwrite existing documents already in the bucket. If you want to restore the bucket to its exact state at the point in time you choose, flush the bucket before restoring. See xref:manage:manage-buckets/flush-bucket.adoc[] for more information about flushing buckets. +* To prevent consistency issues, stop continuous backup on the bucket you're restoring. +You must stop continuous backup even if you're not restoring to the original bucket. +Once the PITR finishes, you can restart continuous backup. +See xref:manage:manage-backup-and-restore/manage-continuous-backup.adoc#stop-continuous-backup[Stop Continuous Backup] to learn how to stop continuous backup for a bucket. + +NOTE: You do not need to stop traditional periodic backups or XDCR for the bucket when performing PITR. + + ## Restore to a Point in Time You use the `cbcontbk` command line tool to restore a bucket backed up using continuous backup to point in time. @@ -65,10 +72,111 @@ When calling `cbcontbk`, you must supply the following arguments: * `--tmp-dir` a temporary directory the Backup Service can use when restoring data. * `-l` the continuous backup storage location. This is either the absolute path of the NFS mount point, or the URI of the cloud storage location. -* `-a` the path to the traditional backup directory. -* `-r` is the repository containing the bucket's traditional backup. -* `-c` is the URL for a node in the cluster. +* `-a` the path to the traditional backup directory or its . +* `-r` is the UUID for the repository containing the bucket's traditional backup. +* `-c` is the URL for a node in the cluster running the backup service. + +In addition, you must supply credentials the Backup Service can use to authenticate with the continuous backup location and the traditional backup repository if they're stored in the cloud. +You have encrypted backups, you must also supply credentials to decrypt them. +See the documentation for `cbcontbk` for details. + +// FIXME: add link to `cbcontbk` docs when they are available in the repo. + +For example, suppose you want to restore the `travel-sample` bucket that uses locally mounted NFS shares for continuous backup and traditional backup. +Also suppose you want to restore to the original bucket and want the bucket to be in the state it was in at your chosen restoration time. +In that case, you can follow these steps to perform the PITR: + +. Stop continuous backup for the bucket. +Because you'll need to use the command line to run `cbcontbk` anyhow, this example uses command line on one of the nodes to stop continuous backup: + ++ +[source,bash] +``` +couchbase-cli bucket-edit --cluster couchbase://localhost \ + --username $COUCHBASE_USERNAME --password $COUCHBASE_PASSWORD \ + --bucket travel-sample \ + --continuous-backup-enabled 0 +``` + +. In this example, the goal is to have the bucket to be the exact state it was at the recovery time. +Therefore, you need to flush the bucket before performing PITR. + ++ +[source,bash] +``` +couchbase-cli bucket-flush --cluster couchbase://localhost \ + --username $COUCHBASE_USERNAME --password $COUCHBASE_PASSWORD \ + --bucket travel-sample +``` + ++ +[NOTE] +==== +The previous example assumes the bucket is already configured to allow flushing. +If it's not, you must first enable flushing using the command: + +[source,bash] +``` +couchbase-cli bucket-edit --cluster couchbase://localhost \ + --username $COUCHBASE_USERNAME --password $COUCHBASE_PASSWORD \ + --bucket travel-sample \ + --enable-flush 1 +``` + +After finishing the PITR, consider tunring off flushing the bucket again to prevent accidental data loss. +==== + +. Before performing the restore, you should verify the point in time you want to restore to is available in the continuous backup location. +You can find the range of times you can restore to using the `cbcontbk` command line tool. -In addition, you must supply credentials to access the continuous backup location or the traditional backup repository if they are stored in the cloud. ++ +[source,bash] +``` +include::manage:example$continuous-backup.sh[tag=get-backup-info] +``` + ++ +The result of the previous command looks like the following: + ++ +[source,log] +``` +include::manage:example$continuous-backup.log[tag=get-backup-info] +``` + ++ +The result shows that you can restore to a point in time between June 6th at 14:57 GMT and June 23rd at 17:55 GMT. + +. Use the `cbcontbk restore` command to restore the bucket. +The following command restores `travel-sample` to the state it was in at June 8th, 2026 at 19:54:10 GMT. + ++ +[source,bash] +``` +include::manage:example$continuous-backup.sh[tag=restore-bucket] +``` ++ +The output from this command looks like this: + ++ +[source,log] +``` +include::manage:example$continuous-backup.log[tag=restore-output] +``` + ++ +You can see that PITR restores a traditional full backup and possibly multiple incremental backups. +Then it replays mutations from the continuous backup until it reaches the selected point in time. + +. After you have finished the PITR, start continuous backup again. + ++ +[source,bash] +``` +couchbase-cli bucket-edit --cluster couchbase://localhost \ + --username $COUCHBASE_USERNAME --password $COUCHBASE_PASSWORD \ + --bucket travel-sample \ + --continuous-backup-enabled 1 +``` diff --git a/modules/manage/pages/manage-backup-and-restore/monitor-continuous-backup.adoc b/modules/manage/pages/manage-backup-and-restore/monitor-continuous-backup.adoc index c0b2746a49..15af3b1ae1 100644 --- a/modules/manage/pages/manage-backup-and-restore/monitor-continuous-backup.adoc +++ b/modules/manage/pages/manage-backup-and-restore/monitor-continuous-backup.adoc @@ -37,26 +37,14 @@ The following example gets information about the continuous backup location stor [source,bash] ``` -cbcontbk info -l /shared/continuous-backup/ +include::manage:example$continuous-backup.sh[tag=get-backup-info] ``` The following example shows the output of the previous command for a location backing up the `travel-sample` bucket. -[source,bash] +[source,log] ``` -| Buckets -| ------- -| -| * Bucket -| ------ -| Name | UUID | -| travel-sample | b5de13bdc656985b0a41dd3d832c9be6 | -| -| Range -| ----- -| Start | End | -| 2026-06-05T14:57:18Z | 2026-06-05T17:55:22Z | -| +include::manage:example$continuous-backup.log[tag=get-backup-info] ``` The timestamps under the Range heading in the output show you the earliest and latest times you can restore the bucket to using point in time recovery (PITR). @@ -70,5 +58,5 @@ These metrics all start with the `contbk_` (continuous backup) prefix. // FIXME: link to metrics whenever they show up in the metrics_metadata file in the server build.. They aren't there as of build #2395 -For more information about monitoring Couchbase Server using metrics, see xref:current:manage/monitor/set-up-prometheus-for-monitoring.adoc[]. +For more information about monitoring Couchbase Server using metrics, see xref:manage:monitor/set-up-prometheus-for-monitoring.adoc[]. From 31efbb98b06dc2c485b6a4082f5697c985fd7a58 Mon Sep 17 00:00:00 2001 From: Gary Gray Date: Wed, 1 Jul 2026 15:41:07 -0400 Subject: [PATCH 12/13] Added the port # for cbcontbk to the list of ports and processes in the install section. --- modules/install/pages/install-ports.adoc | 12 ++- modules/install/pages/server-processes.adoc | 95 +++++++++++---------- 2 files changed, 60 insertions(+), 47 deletions(-) diff --git a/modules/install/pages/install-ports.adoc b/modules/install/pages/install-ports.adoc index c13a88f9bc..65d142d577 100644 --- a/modules/install/pages/install-ports.adoc +++ b/modules/install/pages/install-ports.adoc @@ -70,7 +70,7 @@ The following table lists all port numbers, grouped by category of communication | Communication Path | Default Ports | _Node-local only_ -| *Unencrypted*: 9119, 9998, 11213, 21200, 21300 +| *Unencrypted*: 9119, 9125, 9998, 11213, 21200, 21300 *Encrypted*: 21250 {fn-encrypted-traffic-port}, 21350 {fn-encrypted-communication-port} @@ -99,7 +99,7 @@ a| *Unencrypted*: 8091-8096, 9102, 11210 [NOTE] ==== `cbbackupmgr`, the backup client, connects to the Couchbase Server using the ports listed above. -You can find detailed information about the server ports in the xref:detailed-port-description[Detailed Port Description]. +You can find detailed information about the server ports in the <>. Below is a summary of the services cbbackupmgr is accessing via the ports. [horizontal] @@ -351,6 +351,14 @@ The following table contains a detailed description of each port used by Couchba | No | No +| `cbcontbk` +| 9125 +| Continuous backup +| No +| No +| No + + | `fts_grpc_port` / `fts_grpc_ssl_port` | 9130 / 19130 a| Search Service gRPC port used for xref:learn:services-and-indexes/services/search-service.adoc[scatter-gather] operations between FTS nodes diff --git a/modules/install/pages/server-processes.adoc b/modules/install/pages/server-processes.adoc index f477045a98..8f9f64c159 100644 --- a/modules/install/pages/server-processes.adoc +++ b/modules/install/pages/server-processes.adoc @@ -26,121 +26,126 @@ The following table lists the Couchbase processes that run on Linux platforms. | Process | Description | Service | Path +| `cbcontbk` +| The continuous backup agent. +| Backup +| `/opt/couchbase/bin` + | `cbft` | Couchbase Full-Text Search (FTS) service | Search -| _/opt/couchbase/bin/_ +| `/opt/couchbase/bin/` | `cbq-engine` | Couchbase Query service | Query -| _/opt/couchbase/bin/_ +| `/opt/couchbase/bin/` | `goport` (5 copies) | Process that acts as a bridge between `ns_server` (Erlang) and the other server components (`cbq- engine`, `cbft`, etc.) which are written in Go | Query -| _/opt/couchbase/bin/_ +| `/opt/couchbase/bin/` | `gosecrets` | Service that is used to encrypt the cluster configuration stored on disk | Data -| _/opt/couchbase/bin/_ +| `/opt/couchbase/bin/` | `goxdcr` | Cross Data Center Replication (XDCR) - replicates data from one cluster to another | Data -| _/opt/couchbase/bin/_ +| `/opt/couchbase/bin/` | `indexer` | Index service | Index -| _/opt/couchbase/bin/_ +| `/opt/couchbase/bin/` | `memcached` | Data service responsible for storing user data | Data -| _/opt/couchbase/bin/_ +| `/opt/couchbase/bin/` | `godu` (2 copies) | Utility in Go to get disk usage stats | Data -| _/opt/couchbase/bin/priv/_ +| `/opt/couchbase/bin/priv/` | `projector` | Extracts secondary key from documents | Data -| _/opt/couchbase/bin/_ +| `/opt/couchbase/bin/` | `saslauthd-port` | Erlang port process (wrapper) used to talk to the `saslauthd` daemon for authentication purposes | Data -| _/opt/couchbase/bin/_ +| `/opt/couchbase/bin/` | `beam.smp` (3 copies) | Couchbase cluster manager run as Erlang virtual machines - `babysitter`, `ns_server`, and `ns_couchdb` | Data -| _/opt/couchbase/lib/erlang/erts-9.3.3.9/bin/_ +| `/opt/couchbase/lib/erlang/erts-9.3.3.9/bin/` | `epmd` | Erlang-specific process which acts as a name server for Erlang distribution | Data -| _/opt/couchbase/bin/_ +| `/opt/couchbase/bin/` | `cpu_sup` (2 copies) | Erlang-specific process used to collect CPU: 1 for `ns_server` VM and 1 for `ns_couchdb` VM | Data -| _/opt/couchbase/lib/erlang/lib/os_mon-2.2.14/priv/bin/_ +| `/opt/couchbase/lib/erlang/lib/os_mon-2.2.14/priv/bin/` | `memsup` (2 copies) | Erlang-specific process used to collect memory usage: 1 for `ns_server` VM and 1 for `ns_couchdb` VM | Data -| _/opt/couchbase/lib/erlang/lib/os_mon-2.2.14/priv/bin/_ +| `/opt/couchbase/lib/erlang/lib/os_mon-2.2.14/priv/bin/` | `inet_gethost` (2 copies) | Built-in Erlang port process that is used to perform name service lookup | Data -| _/opt/couchbase/lib/erlang/erts-5.10.4.0.0.1/bin/_ +| `/opt/couchbase/lib/erlang/erts-5.10.4.0.0.1/bin/` | `portsigar` | Open source tool sigar that is used to collect system information | Data -| _/opt/couchbase/bin/_ +| `/opt/couchbase/bin/` | `sh -s disksup` (2 copies) | Erlang-specific process that is used to supervise the available disk space: 1 for `ns_server` VM and 1 for `ns_couchdb` VM | Data -| _/opt/couchbase/lib/erlang/lib/os_mon-2.2.14/ebin/_ +| `/opt/couchbase/lib/erlang/lib/os_mon-2.2.14/ebin/` | `sh -s ns_disksup` | Wrapper for `disksup` which also collects information about mounted drives | Data -| _/opt/couchbase/lib/ns_server/erlang/lib/ns_server/ebin/_ +| `/opt/couchbase/lib/ns_server/erlang/lib/ns_server/ebin/` | `cbcollect_info` | Utility used to collect Couchbase server logs (will be seen only during log collection) | Data -| _/opt/couchbase/bin/_ +| `/opt/couchbase/bin/` | `eventing-producer` (1 copy) | Eventing supervisor service (one instance per node) | Eventing -| _/opt/couchbase/bin/_ +| `/opt/couchbase/bin/` | `eventing-consumer` (n copies) | Eventing worker (multiple instances per node). Instance count is configured in UI. | Eventing -| _/opt/couchbase/bin/_ +| `/opt/couchbase/bin/` | `java` (Analytics Driver) | JVM running the Analytics NC and CC | Analytics -| _/opt/couchbase/lib/cbas/runtime/bin_ +| `/opt/couchbase/lib/cbas/runtime/bin` | `cbas` | Go-wrapper that communicates with `ns_server` and manages the lifecycle of the Analytics Driver | Analytics -| _/opt/couchbase/bin/_ +| `/opt/couchbase/bin/` |=== == Windows @@ -156,112 +161,112 @@ The following table lists the Couchbase processes that run on the Windows platfo | `backup.exe` | Backup application for Couchbase data | Backup -| _C:\Program Files\Couchbase\Server\bin_ +| `C:\Program Files\Couchbase\Server\bin` | `cbas.exe` | Go-wrapper that communicates with `ns_server` and manages the lifecycle of the Analytics Driver | Analytics -| _C:\Program Files\Couchbase\Server\bin_ +| `C:\Program Files\Couchbase\Server\bin` | `cbcollect_info.exe` | Utility used to collect Couchbase server logs (will be seen only during log collection) | Data -| _C:\Program Files\Couchbase\Server\bin_ +| `C:\Program Files\Couchbase\Server\bin` | `cbft.exe` | Couchbase Full-Text Search (FTS) service | Search -| _C:\Program Files\Couchbase\Server\bin_ +| `C:\Program Files\Couchbase\Server\bin` | `cbq-engine.exe` | Couchbase Query service | Query -| _C:\Program Files\Couchbase\Server\bin_ +| `C:\Program Files\Couchbase\Server\bin` | `epmd.exe` | Erlang-specific process which acts as a name server for Erlang distribution | Data -| _C:\Program Files\Couchbase\Server\erts-x.x.x.x\bin_ +| `C:\Program Files\Couchbase\Server\erts-x.x.x.x\bin` | `erl.exe` | Erlang process used by the name server. | Data -| _C:\Program Files\Couchbase\Server\erts-x.x.x.x\bin_ +| `C:\Program Files\Couchbase\Server\erts-x.x.x.x\bin` | `erlsrv.exe` | Used to start the Erlang emulator as a Windows process. | Data -| _C:\Program Files\Couchbase\Server\erts-x.x.x.x\bin_ +| `C:\Program Files\Couchbase\Server\erts-x.x.x.x\bin` | `eventing-consumer.exe` | Eventing worker (multiple instances per node). Instance count is configured in UI. | Eventing -| _C:\Program Files\Couchbase\Server\bin_ +| `C:\Program Files\Couchbase\Server\bin` | `eventing-producer.exe` | Eventing supervisor service (one instance per node) | Eventing -| _C:\Program Files\Couchbase\Server\bin_ +| `C:\Program Files\Couchbase\Server\bin` | `goport.exe` | Process that acts as a bridge between `ns_server` (Erlang) and the other server components (`cbq- engine.exe`, `cbft.exe`, etc.) | Query -| _C:\Program Files\Couchbase\Server\bin_ +| `C:\Program Files\Couchbase\Server\bin` | `gosecrets.exe` | Service that is used to encrypt the cluster configuration stored on disk | Data -| _C:\Program Files\Couchbase\Server\bin_ +| `C:\Program Files\Couchbase\Server\bin` | `goxdcr.exe` | Cross Data Center Replication (XDCR) - replicates data from one cluster to another | Data -| _C:\Program Files\Couchbase\Server\bin_ +| `C:\Program Files\Couchbase\Server\bin` | `indexer.exe` | Index service | Index -| _C:\Program Files\Couchbase\Server\bin_ +| `C:\Program Files\Couchbase\Server\bin` | `godu.exe` | Utility in Go to get disk usage stats | Data -| _C:\Program Files\Couchbase\Server\bin\priv_ +| `C:\Program Files\Couchbase\Server\bin\priv` | `inet_gethost.exe` | Built-in Erlang port process that is used to perform name service lookup | Data -| _C:\Program Files\Couchbase\Server\erts-x.x.x.x\bin_ +| `C:\Program Files\Couchbase\Server\erts-x.x.x.x\bin` | `java.exe` (Analytics Driver) | JVM running the Analytics NC and CC | Analytics -| _C:\Program Files\Couchbase\Server\bin_ +| `C:\Program Files\Couchbase\Server\bin` | `memcached.exe` | Data service responsible for storing user data | Data -| _C:\Program Files\Couchbase\Server\bin_ +| `C:\Program Files\Couchbase\Server\bin` | `projector.exe` | Extracts secondary key from documents | Data -| _C:\Program Files\Couchbase\Server\bin_ +| `C:\Program Files\Couchbase\Server\bin` | `prometheus.exe` | Engine used Couchbase for creating metrics. | Data -| _C:\Program Files\Couchbase\Server\bin_ +| `C:\Program Files\Couchbase\Server\bin` | `saslauthd-port.exe` | Erlang port process (wrapper) used to talk to the `saslauthd` daemon for authentication purposes | Data -| _C:\Program Files\Couchbase\Server\bin_ +| `C:\Program Files\Couchbase\Server\bin` | `sigar_port.exe` | Open source tool sigar that is used to collect system information | Data -| _C:\Program Files\Couchbase\Server\bin_ +| `C:\Program Files\Couchbase\Server\bin` |=== From 5eec3ce91bd844346343b43a596d17e38ee40454 Mon Sep 17 00:00:00 2001 From: Gary Gray Date: Wed, 1 Jul 2026 16:03:10 -0400 Subject: [PATCH 13/13] Added link to introduction. --- modules/introduction/partials/new-features-81.adoc | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/modules/introduction/partials/new-features-81.adoc b/modules/introduction/partials/new-features-81.adoc index 4b549fe7fd..1141494f4b 100644 --- a/modules/introduction/partials/new-features-81.adoc +++ b/modules/introduction/partials/new-features-81.adoc @@ -67,6 +67,7 @@ TBD. Couchbase Server 8.1 introduces several new features for the xref:backup:backup.adoc[Backup Service]. * The new continuous backup feature supplements traditional periodic backups by frequently backing up changes to Magma buckets. -This backup can limit the loss of data updates that occur between full and incremental backups. +This backup can limit the loss of data updates that occur between full and incremental backups. In addition to backup up data, it also backs up timestamps of when the data was updated. These timestamps let you perform Point-In-Time Recovery (PITR) to restore the Magma bucket's data to the state it was in at a specific moment. +See xref:learn:services-and-indexes/services/continuous-backup.adoc[] for more information.