From 5415a0c5610d7b676ee2be66eeff04c4e9c5251c Mon Sep 17 00:00:00 2001 From: Gary Gray <137797428+ggray-cb@users.noreply.github.com> Date: Thu, 5 Jun 2025 17:13:42 -0400 Subject: [PATCH 1/5] Rough draft --- modules/install/pages/upgrade.adoc | 27 +- .../partials/new-features-80.adoc | 22 ++ .../storage-engines.adoc | 118 ++++--- .../buckets-memory-and-storage/vbuckets.adoc | 81 +++-- .../xdcr-overview.adoc | 9 +- ...dcr-magma-128-vbucket-incompatibility.adoc | 3 + .../addDataBucketDialogInitial.png | Bin 109344 -> 72183 bytes .../examples/duplicate-scopes-collections.py | 43 +++ .../pages/manage-buckets/create-bucket.adoc | 53 ++- .../pages/manage-buckets/migrate-bucket.adoc | 128 +++++++- .../pages/manage-xdcr/prepare-for-xdcr.adoc | 2 + .../rest-api/pages/rest-bucket-create.adoc | 53 ++- .../rest-api/pages/rest-buckets-summary.adoc | 15 +- .../partials/get_bucket_travel_sample.json | 310 +++--------------- 14 files changed, 493 insertions(+), 371 deletions(-) create mode 100644 modules/learn/partials/xdcr-magma-128-vbucket-incompatibility.adoc create mode 100644 modules/manage/examples/duplicate-scopes-collections.py diff --git a/modules/install/pages/upgrade.adoc b/modules/install/pages/upgrade.adoc index d790f326db..e55f00ab5f 100644 --- a/modules/install/pages/upgrade.adoc +++ b/modules/install/pages/upgrade.adoc @@ -23,6 +23,31 @@ See xref:install:upgrade-procedure-selection.adoc#swap-rebalance[Swap Rebalance] Before upgrading, consider the following version compatibility concerns. +[#8-0-storage-backend] +=== New Default Storage Backend in Couchbase Server Version 8.0 + +After you have fully upgraded a cluster to Couchbase Server 8.0.x and later, the default storage backend for buckets is Magma with 128 vBuckets. +Previous versions of Couchbase Server used Couchstore with 1024 vBuckets as the default storage backend. + +This new default results in two behavior changes from previous versions: + +* If you create a bucket and do not specify the storage backend, your bucket will use the Magma storage backend instead of the Couchstore backend. +* If you specify Magma as the storage backend but do not set the new `numVBuckets` parameter, the bucket will have 128 vBuckets instead of the prior default of 1024 vBuckets. +Magma buckets with 128 vBuckets is a new feature in Couchbase Server 8.0 and later. + +These behavior changes could cause issues if you rely on the prior behavior, especially if you use deployment scripts. +If you have deployment scripts that create buckets, review them to determine if you need to make changes. + +For example, suppose your deployment script does not specify the storage backend when it creates a bucket that you intend to use with the xref:views/views-mapreduce-intro.adoc[] feature. +On versions prior to Couchbase Server 8.0, your script created a Couchstore bucket with 1024 vBuckets, +In version 8.0, due to change in the default backend, your script creates a bucket with the Magma storage backend with 128 vBuckets. +Attempting to use MapReduce Views with this bucket results in errors, because Magma buckets do not support this feature. + +Another concern is that versions of Couchbase Server earlier than 8.0 do not support XDCR replication between buckets with different numbers of vBuckets. +Therefore, you cannot replicate between a bucket you create with the new default backend setting and buckets on an earlier server version. +To able to replicate with a bucket on an earlier version of Couchbase Server, explicitly set the new bucket's storage backend to Couchstore or to Magma with 1024 vBuckets during creation. + +For more information about storage backends, see xref:buckets-memory-and-storage/storage-engines.adoc#storage-engines[]. // So long as upgrading from 6.x is supported, this notice will need to stay in some form in each new release. === Upgrading to Version 7.x With Earlier Versions of .NET SDK @@ -43,7 +68,7 @@ You cannot upgrade directly from a version of Couchbase Server earlier than 7.1 For example, you can directly upgrade from version 6.6 to version 7.2.3. You cannot directly upgrade from version 6.6 to version 7.2.4. A compatibility issue with the Erlang version used by these earlier server versions prevents a direct upgrade to later versions of the server. -To upgrade from server versions 6.5, 6.6, or 7.0 to version 7.6 or later, first upgrade to version between 7.1 and 7.2.3. +To upgrade from server versions 6.5, 6.6, or 7.0 to version 7.6 or later, first upgrade to a version between 7.1 and 7.2.3. Then upgrade to version 7.6 or later. [#understanding-upgrade] diff --git a/modules/introduction/partials/new-features-80.adoc b/modules/introduction/partials/new-features-80.adoc index e609f68246..b5934c8afd 100644 --- a/modules/introduction/partials/new-features-80.adoc +++ b/modules/introduction/partials/new-features-80.adoc @@ -62,6 +62,28 @@ curl --get -u \ [#section-new-feature-data-service] === Data Service +[#mb-62777] +https://jira.issues.couchbase.com/browse/MB-62777[MB-62777] Magma with 128 vBuckets is now the default stoage engine:: +In earlier versions of Couchbase Server, if you did not specify which storage engine to use when creating a new bucket, Couchbase Server used Couchstore. +Once you upgrade your entire cluster to Couchbase Server Enterprise 8.0, the default storage engine for new buckets is Magma with 128 vBuckets. +Using 128 vBuckets with Magma is a new option which provides the advantages of the Magma storage engine while reducing the memory requirement for a Magma bucket. +Before Couchbase Server 8.0, Magma only supported using 1024 vBuckets and had a minimum memory requirements of 1{nbsp}GB. +Buckets that use Magma with 128 vBuckets have a minimum memory requirement of 100{nbsp}MB. + ++ +This change in the default storage engine does not affect existing buckets. +You can still create buckets that use the Couchstore storage engine by explicitly specifying it as the storage backend during bucket creation. + ++ +NOTE: This change does not affect Couchbase Server Community Edition, because it does not support the Magma storage engine. + ++ +See xref:learn:buckets-memory-and-storage/storage-engines.adoc[] for more information about storage engines. + ++ +IMPORTANT: This change to the default storage engine may affect scripts you have developed to deploy Couchbase Server or create new buckets. +Before upgrading to Couchbase Server 8.0, verify that any scripts you use are not affected by this change. + https://jira.issues.couchbase.com/browse/MB-9418[MB-9418]:: The previous warmup behavior was to load values and not complete warmup until the Bucket reaches one of: diff --git a/modules/learn/pages/buckets-memory-and-storage/storage-engines.adoc b/modules/learn/pages/buckets-memory-and-storage/storage-engines.adoc index 83e6dbd97f..2c248fd2b3 100644 --- a/modules/learn/pages/buckets-memory-and-storage/storage-engines.adoc +++ b/modules/learn/pages/buckets-memory-and-storage/storage-engines.adoc @@ -1,95 +1,119 @@ = Storage Engines -:description: pass:q[Couchbase supports two different backend storage mechanisms: Couchstore and Magma.] +:description: pass:q[Couchbase supports two different backend storage engines: Couchstore and Magma.] [abstract] {description} -It is important to understand which backend storage is best suited to your requirements. +These storage engines organize the data both on disk ad in memory. +This page explains how to choose a backend storage to suit your needs. -== Couchstore - -Couchstore is the default bucket storage engine. -It is optimized for high performance with large data sets, -while using fewer system resources (the minimum bucket size for the Couchstore backend is 100{nbsp}MB). -If you have a small data set that can fit in memory, then you should consider using Couchstore. [#storage-engine-magma] == Magma [.edition]#{enterprise}# -Magma is designed for high performance with very large datasets that do not fit in memory. -It is ideal for use cases that rely primarily on disk access. -The performance of disk access will be as good as the underlying disk sub-systems -- -for example, using NVMe SSDs will give higher performance. +Magma is designed for high performance with large datasets that do not fit in memory. +It's ideal for use cases that rely primarily on data stored on disk. +The performance of disk access is as good as the underlying disk sub-systems. +For example, using NVMe SSDs gives better performance than spinning drives. -In order to get maximum performance from Magma for disk-oriented workloads, it is recommended to set the Writer Threads to `Disk i/o optimized`. This setting will ensure there are enough threads to sustain high write rates. +When you create a bucket using the Magma storage engine, you choose the number of xref:learn:buckets-memory-and-storage/vbuckets.adoc[vBuckets] a bucket uses. +Magma supports two vBucket configurations: 128 or 1024. +This choice affects the minimum memory requirements for the bucket. +The 128 vBucket configuration is the default for new buckets in Couchbase Server Enterprise Edition 8.0 and later. +It has a minimum memory requirement of 100{nbsp}MB per node. -To learn more about Writer Thread settings, see xref:manage:manage-settings/general-settings.adoc#data-settings[Data Settings] +NOTE: Magma buckets with 128 vBuckets are only available in clusters that have fully migrated to Couchbase Server 8.0 or later. -Magma can work with very low amounts of memory for large datasets: a minimum memory-to-data ratio of 1% is required. -For example, if a node is holding 5{nbsp}TB of data, Magma can be used with only 64{nbsp}GB RAM. +Magma using 1024 vBuckets requires a minimum of 1{nbsp}GiB of memory per node. +As your dataset grows, Magma has a minimum memory-to-data ratio of 1%. +For example, a node with 5{nbsp}TB data in a Magma bucket must have 64{nbsp}GiB of RAM allocated to the bucket. -.Magma Supported Services -|=== -|Couchbase Version |Services Supported +=== Magma Writer Thread Settings -|*Version 7.1* -|Query, Index, XDCR, Backup +Couchbase Server lets you set the number of threads for reading and writing data to the disk. +Under some circumstances, you may want to set the Writer Threads to `Disk i/o optimized` for Magma buckets. +This setting makes sure there are enough threads to sustain high write rates. -|*Version 7.1.2 and Higher* -|[[magma-support-ref]]Search, Eventing, Analytics<> -|=== +To learn more about how you should configure the Writer Thread settings for your Magma bucket, see xref:manage:manage-settings/general-settings.adoc#data-settings[Data Settings] + +== Couchstore -[horizontal] -[[magma-support-note]]<>:: If these services are required in versions prior to 7.1.2, Couchstore should be used. +Couchstore is the original storage engine for Couchbase Server. +It's the only storage engine available in Couchbase Server Community Edition. +Couchstore is designed for high performance with datasets that fit in memory. +It has a minimum memory requirement of 100{nbsp}MB per node, and a minimum memory-to-data ratio of 10%. +If you have a small dataset whose working set (frequently accessed data) can fit in memory, then you should consider using Couchstore. -== Couchstore and Magma at a Glance +== Couchstore verses Magma at a Glance + +The following table summarizes the differences between Couchstore and Magma storage engines. |=== -| {empty} | Couchstore |Magma +| {empty} | Couchstore |Magma 128 vBuckets | Magma 1024 vBuckets | Minimum bucket memory quota -| 100{nbsp}MB -| [[quota-ref]]1{nbsp}GB<> +| 100{nbsp}MiB +| 100{nbsp}MiB +| 1{nbsp}GiB | Minimum memory to data ratio | 10% | 1% +| 1% | Maximum data per node | 3{nbsp}TB +| 10{nbsp}TB, but with much higher possibility of data imbalance. | 10{nbsp}TB |=== -[horizontal] -[[quota-note]]<>:: Magma's minimum memory requirement is higher at 1GB per node due to the more complex data structures it has to maintain. - -== When should you use Couchstore? -The choice of Couchstore or Magma is set at the bucket level xref:manage:manage-buckets/create-bucket.adoc[when the bucket is created]. -A single Couchbase cluster can have a mix of Couchstore and Magma buckets. +== Which Storage Engine Should You Use? -You should use the Couchstore backend if: +The choice of which storage engine to use depends on your use case and the size of your dataset. +As of Couchbase Serve 8.0, the Magma is the recommended storage engine for most use cases. +The choice between 128 and 1024 vBuckets gives you flexibility when configuring your bucket. -* You have a dataset with a working set that will fit into available memory (and the working set is >{nbsp}20%). -* You are running the Couchbase server on low-end hardware. -* You are running a version prior to 7.1.2, and your bucket needs to support the Search, Eventing, or Analytics Service. -* You are running the legacy xref:learn:views/views-intro.adoc[MapReduce Views] Service, which will not run on Magma storage. +When to choose Magma with 128 vBuckets:: +You should use the Magma backend with 128 vBuckets if any of the following are true: -== When should you use Magma? ++ +* You want to minimize memory use and have a working dataset that does not fit in the available memory or is more than 20% of the total dataset. +Magma with 128 vBuckets is more efficient in this case than Couchstore. +* You want to conserve memory as your dataset grows. +Because Magma has a 1% memory-to-data ratio, its memory requirements grow more slowly than Couchstore's 10% memory-to-data ratio. +* You have a dataset size that's less than 100{nbsp}GiB. +With this small dataset size, the 128 vBucket configuration saves you memory verses the minimum 1{nbsp}GiB memory required by the 1024 vBucket Magma configuration. +* You're configuring a POC or testing system and plan to use Magma with 1024 vBuckets in production. -You should use the Magma backend if: +When to choose Magma with 1024 vBuckets:: +You should use the Magma backend with 1024 vBuckets if any of the following are true: -* Your working set is much larger than the available memory, and you need high disk-access speed. -* You need to store and access large amounts of data (several terabytes) using a small amount of memory. ++ +* Your working set is larger than the available memory (or you expect it to outgrow memory), and you need high disk-access speed. +* You need to store and access large amounts of data (multiple terabytes) using a small amount of memory. +In this case, the 1024 vBucket configuration is less likely to have data imbalance issues than the 128 vBucket configuration. +Also, Magma with 1024 vBuckets uses less CPU for operations such as compaction verse the 128 vBucket configuration. * Your applications make heavy use of transactions with persistence-based durability. +* Your dataset will grow beyond Couchstore's 3{nbsp}TB limit. + +When should you choose Couchstore?:: +You should use the Couchstore backend if any of the following are true: + ++ +* You're using Couchbase Server Community Edition which only supports the Couchstore storage engine. +* You have a dataset with a working set that fits into available memory and the working set is less than 20% of the total dataset. +* You're running Couchbase Server on low-end hardware. +* You're running the legacy xref:learn:views/views-intro.adoc[] Service, which does not run on Magma storage. + -== Migrating Between Storage Engines +== Migrating between Storage Engines You can migrate a bucket to use a different storage engine. Consider migrating a bucket if it no longer meets the criteria explained in the previous sections. -For example, suppose you have a bucket using the Couchstore backend that has grown to the point where it no longer fits in memory. +For example, suppose you have a bucket using the Couchstore backend whose working dataset has grown to the point where it no longer fits in memory. In this case, you should migrate the bucket to use Magma as a storage backend. To learn how to migrate a bucket's storage backend, see xref:manage:manage-buckets/migrate-bucket.adoc[]. diff --git a/modules/learn/pages/buckets-memory-and-storage/vbuckets.adoc b/modules/learn/pages/buckets-memory-and-storage/vbuckets.adoc index 2945b1f895..e074182734 100644 --- a/modules/learn/pages/buckets-memory-and-storage/vbuckets.adoc +++ b/modules/learn/pages/buckets-memory-and-storage/vbuckets.adoc @@ -1,5 +1,5 @@ = vBuckets -:description: pass:q[_vBuckets_ are virtual buckets that help distribute data effectively across a cluster, and support replication across multiple nodes.] +:description: pass:q[vBuckets are virtual buckets that break bucket data into smaller pieces to make distributing data the cluster and replicating data across multiple nodes easier.] :page-aliases: understanding-couchbase:buckets-memory-and-storage/vbuckets,architecture:core-data-access-bucket-disk-storage,architecture:core-data-access-vbuckets-bucket-partition [abstract] @@ -8,40 +8,69 @@ [#understanding-vbuckets] == Understanding vBuckets -Couchbase Server allows users and applications to save data, in binary or JSON format, in named _buckets_. -Each bucket therefore contains _keys_ and associated _values_. -See xref:buckets-memory-and-storage/buckets.adoc[Buckets], for detailed information. +Couchbase Server lets users and applications save data in binary or JSON format in named buckets. +Each bucket contains keys and their associated values. +See xref:buckets-memory-and-storage/buckets.adoc[Buckets] for detailed information about buckets. -Within the memory and storage management system of Couchbase Server, both Couchbase and Ephemeral buckets are implemented as _vBuckets_, 1024 of which are created for every bucket (except on MacOS, where the number is 64). -vBuckets are distributed evenly across the memory and storage facilities of the cluster; and the bucket's items are distributed evenly across its vBuckets. -This evenness of distribution ensures that all instances of the xref:services-and-indexes/services/data-service.adoc[Data Service] take an approximately equal share of the workload, in terms of numbers of documents to maintain, and operations to handle. +Couchbase Server breaks the data in buckets into smaller units called vBuckets (short for virtual buckets). +Some people refer to vBuckets as shards. +The vBuckets let Couchbase Server work with smaller chunks of data to ease distributing work around the cluster and maintaining data availability through replication. -The 1024 vBuckets that implement a defined bucket are referred to as _active_ vBuckets. -If a bucket is replicated, each replica is implemented as a further 1024 (or 64) vBuckets, referred to as _replica_ vBuckets. -Thus, a bucket configured on Linux to be replicated twice results in a total of 3072 vBuckets, distributed across the cluster. -_Write_ operations are performed only on _active_ vBuckets. -Most _read_ operations are performed on _active_ vBuckets, though items can also be read from _replica_ vBuckets when necessary. +When it creates the bucket, Couchbase Server breaks it into a fixed number of vBuckets . +Once created, the number of vBuckets in a bucket does not change. +The number of vBuckets depends on the bucket's storage backend (the system that manages the data storage) and the operating system running Couchbase Server: -Note that vBuckets are sometimes referred to as _shards_. +* On MacOS, Couchbase Server creates 64 vBuckets for each bucket, no matter what the storage engine is. +* Buckets that use the Couchstore storage engine use 1024 vBuckets on Linux and Windows. +* Buckets that use Magma storage engine can use either 128 or 1024 vBuckets on Linux and Windows. +You choose the number of vBuckets when you create the bucket. -Items are written to and retrieved from vBuckets by means of a _CRC32_ hashing algorithm, which is applied to the item's key, and so produces the number of the vBucket in which the item resides. -vBuckets are mapped to individual nodes by the Cluster Manager: the mapping is constantly updated and made generally available to SDK and other clients. +The system distributes vBuckets evenly across the memory and storage resources of nodes that run the xref:services-and-indexes/services/data-service.adoc[Data Service]. +The bucket's data is distributed evenly across its vBuckets. +This even distribution balances the workload of processing and maintaining data across all of the Data Service instances in the cluster. -The relationships between a bucket, its keys (and their associated values), the hashing algorithm, vBuckets, server-mappings, and servers, is illustrated below: +=== Accessing Data in vBuckets + +When reading or writing data, Couchbase Server uses a CRC32 hashing algorithm to map items to vBuckets. +It hashes the item's key, to determine which vBucket stores the item. + +The Cluster Manager tracks which nodes contain each vBucket. +It also determines which vBuckets are active vs which are replicas (see <>). +When the mapping changes, the Cluster Manager updates the vBucket map and notifies clients of the change. + +The following diagram shows the relationships between a bucket, its keys and values, the hashing algorithm, vBuckets, server mappings, and servers: [#vbucket_to_node_mapping] image::buckets-memory-and-storage/vbucketToNodeMapping.png[,820,align=left] -Thus, an authorized client attempting to access data performs a hash operation on the appropriate key, and thereby calculates the number of the vBucket that owns the key. -The client then examines the vBucket map to determine the server-node on which the vBucket resides; and finally performs its operation directly on that server-node. +When accessing data via keys, a client hashes the key to calculate which the vBucket contains the key. +It checks the vBucket map it got from the Cluster Manager to find the node containing the active vBucket. +The then client directly connects to the node to read or modify the data. + +Buckets organize their documents into xref:learn:data/scopes-and-collections.adoc[Scopes and Collections]. +Scopes and collections do not affect the way in which keys are allocated to vBuckets. +However, each vBucket is aware of the scope and collection containing of each of its keys. + +[[active-vs-replica]] +=== Active and Replica vBuckets + +The vBuckets that Couchbase Server uses to access and store data in a bucket are called active vBuckets. +If you enable replication for a bucket, each replica uses another set vBuckets, called replica vBuckets. +These replicas are stored across the cluster, similar to active vBuckets. +The active vBucket and its replicas are always on different nodes in the cluster to protect against data loss from node failovers. + +For example, suppose you have a Magma bucket configured with 1024 vBuckets and two replicas on Linux. +Then, Couchbase Server has have a total of 3072 vBuckets distributed across the cluster for the bucket. +In most cases, replica vBuckets are not actively used for data access. +Most data read operations use active vBuckets, but the system can read items from replica vBuckets when needed. +Data write operations write only to active vBuckets. +However, durable writes can require that data be replicated from an active vBucket to a replica vBucket before Couchbase Server considers the write operation a success. +See xref:learn:data/durability.adoc[] for more information about durable writes. -In Couchbase Server Version 7.0+, documents within a bucket are organized into xref:learn:data/scopes-and-collections.adoc[Scopes and Collections]. -Scopes and collections do _not_ affect the way in which keys are allocated to vBuckets. -However, each vBucket _is_ aware, for each of its allocated keys, of the scope and collection with which that particular key is associated. +When the configuration of the cluster changes due to rebalance, failover, or node-addition, Couchbase Server promotes replica buckets to active if necessary. +For example, if a node fails over, any active vBuckets on it becomes unavailable. +Couchbase Server promotes replicas of the lost vBuckets to active to maintain data availability. -When a cluster-configuration changes — due to rebalance, failover, or node-addition — replica buckets are promoted to primaries if appropriate, and both primaries and replicas are redistributed across the available nodes of the modified cluster. -The vBucket map is duly updated by the Cluster Manager. -The updated map is then sent to all cluster-participants. -For additional information on the distribution of vBuckets across the cluster, see xref:clusters-and-availability/replication-architecture.adoc[Availability]. +During a rebalance, Couchbase Server redistributes active and replica vBuckets across the available nodes. +For additional information about the distribution of vBuckets across the cluster, see xref:clusters-and-availability/replication-architecture.adoc[Availability]. -Note that this use of client-side hashing for access to Couchbase and Ephemeral bucket-data contrasts with the Memcached data-access method; which requires active management of the server-list, and a specific hashing algorithm, such as Ketama, to handle topology-changes. diff --git a/modules/learn/pages/clusters-and-availability/xdcr-overview.adoc b/modules/learn/pages/clusters-and-availability/xdcr-overview.adoc index 16b2a536d9..3cf6e4a57d 100644 --- a/modules/learn/pages/clusters-and-availability/xdcr-overview.adoc +++ b/modules/learn/pages/clusters-and-availability/xdcr-overview.adoc @@ -1,6 +1,7 @@ = Cross Data Center Replication (XDCR) :description: pass:q[_Cross Data Center Replication_ (XDCR) allows data to be replicated across clusters that are potentially located in different data centers.] :page-aliases: ha-dr:ha-dr-intro,learn:clusters-and-availability/xdcr-cloud-deployment.adoc,install:deployments-xdcr,xdcr:xdcr-tuning-performance +:page-edition: Enterprise Edition [abstract] {description} @@ -8,11 +9,12 @@ [#introduction-to-xdcr] == Introduction to XDCR -Cross Data Center Replication (XDCR) replicates data between a source bucket and a target bucket. +Cross data center replication (XDCR) replicates data between a source bucket and a target bucket. The buckets may be located on different clusters, and in different data centers: this provides protection against data-center 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], for information on how the new restrictions affect the experience of Community-Edition administrators. +NOTE: In Version 7.0, Couchbase made XDCR 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 about the license restrictions. +Also see xref:manage:manage-xdcr/xdcr-management-overview.adoc#xdcr-and-community-edition[XDCR and Community Edition], for information about how the new restrictions affect the experience of Community-Edition administrators. Data from the source bucket 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 one or more XDCR definitions. @@ -28,6 +30,7 @@ Cross Data Center Replication differs from intra-cluster replication in the foll The starting, stopping, and pausing of XDCR all occur independently of whatever intra-cluster replication is in progress on either the source or target cluster. While running, XDCR continuously propagates mutations from the source to the target bucket. +include::learn:partial$xdcr-magma-128-vbucket-incompatibility.adoc[] [#tools-for-managing-xdcr] == Tools and Procedures for Managing XDCR diff --git a/modules/learn/partials/xdcr-magma-128-vbucket-incompatibility.adoc b/modules/learn/partials/xdcr-magma-128-vbucket-incompatibility.adoc new file mode 100644 index 0000000000..f7addfade8 --- /dev/null +++ b/modules/learn/partials/xdcr-magma-128-vbucket-incompatibility.adoc @@ -0,0 +1,3 @@ +NOTE: Versions of Couchbase Server before 8.0 do not support XDCR replication between buckets with different numbers of vBuckets. +They also do not support Magma buckets with 128 vBuckets. +Due to both these limitations, you cannot replicate a Magma bucket with 128 vBuckets on an 8.0 or later cluster to a bucket on a pre-8.0 cluster. diff --git a/modules/manage/assets/images/manage-buckets/addDataBucketDialogInitial.png b/modules/manage/assets/images/manage-buckets/addDataBucketDialogInitial.png index a3b1c93d4d077d940495fc9a0956424430dafe63..fbb640a849c90dd59d66abaaa0950adc503ddcc0 100644 GIT binary patch literal 72183 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

+I0OI~d(aa|Bz}>|5B|NFdcj$gWtHH| z;pvBev7hE{?+pKi*?nQ`EiLCu_|wduPenQWFvZ=#DV^0WP~E?JaV6V+DZ3CcneM$V zjQ;enEjlEgPe0kj%XV&NOq~O>^^rAXyH(eyTF#k*e~jXZGa3JUNFoc^=w9)ulOD5^ z^>%d@du+upc!<|I27Rz!E*Ir%8=*kx`!4tujPD>SkhzV=X!c#Yz^SWX4)|2h2PnN%l!R7}B>hy}@X;tAV33WS)U)+pLQw!iLi>S#WvHiZj)N>IFZ5IGyVPUr*Cbsfq0iqI{c zpv)VyuX8y=PR-7-rg2--U8BZ@x}n;ymLzynXplIGzgt92CljU0KM&oIbSjEGe1#Fm ziAtz>S7W*E)l(4CL0_mSr`DNr+Rue;i0DxpMzFcWH>n&eWxF}D_B zh4{Q58kkNk2H`$gBD|NP`1J`sc@JY8`_vQI$`el13DTI*m{SM(Ng=pdR@=o4-;jfn zlE0&rC#|POw&a==zzSF(9xOebGqwo_k7|!TA|+47ZA$__s4nS5Uv{k=EcznMVk`!3P1=XlTIc$zE(BmO4~;-#=K$X?7I zmIY+kGw&}$heCRU0Uu$K`wP7s4nuvdzF(-1VFYHc9}*}aLDjU@B*;4J!IaKr(eQ~- z+w`r}SD{-_c+wT2B9edo?NaAU8nhusrjP3lYWfMmG;^xrG?PFu4|icnvA=y6bc-2` zM=_qsxOxpbuXaxVs)0kpGrt&M?gg8T$Sqo(j@ToUa*c4Fx7!iy5NvCZBtOxC)Yfp* z_n6RzUq~~uAkBtp!$GwY^KBrkrDx@;=SsBxHNv?RC*Hg4NTb#^ImJ%N7ac@PbK>C@QV3Ld8c%mY&>R zMCvJNW#_z26YLd2Y68qt_(0&{1Pk}M;I6F1b7t215T9!42dGAWMyR&pFe}udhP0+= zA*-hkSHDis%OzYz{HU9IE{o397@lnHgfGBr%mo`H;q zmGY#NZ$86qiv7nH%1Kh2+ysF*_ zo*;**%hR#U75(X1mPoa08E|7Q5`3V8f00RphS79Rd;6H#_pM#;NeJ*}UeYJKF+XEz zR%cqo?09`z}C@^#4>#h&2>n z07v?>k$#tECxAD6G|;hb@DPYv-S3nJh?1or8URe+teW5XNU6>HvlW0txwv%(u;<51 z6Y!%?0w3UrJ(tu}`ukQ1sAN?qF*zwqzv`pMnC@Y71QdN9uODd|ECZzK-CO?4EdWKc z!BKLX2gq3PyDYOBrvIy(5hQZIy9G#=-?}xs}w?g^qAil{B@d*#`+f*cY9-l23nTy{WDDqd{fL6c&h_OWiP@u(eZL^4PzZdC_Z*dua=c;Te zS;75xrYmd}msST-w@~**b8h)Feny+80ETUI>m1O{*8ugaW(rmX+g1Q5U>ty* z#P7Z&CjHU?`e{H8--k!RhqzUMgqZg`)BDx;kgugIs@laHxU(;933psOy#i92*`?hE zon0>_KmLYgYhOC|d}ePfxYfGf!b8#a-vH@rh#MdsNjvH4PZI3C#ozdf&s764!aZ~Z zGq+OQR*&MZsVXTVL;MUh8@!dy*S9Hi^R(7_KpFYR$@UI_BTS1>BfltfT9orc-coti zdTaigkjs0ai2rPW!Wj-6AlGC@aF?m5relMKKK_YM%8T<4&Fr%WXloHMMYr;sLl+eZ z!nb5PtmIQnur9IWbpRou!r5uM&OqWP)qrOqFZB5_+82D7pL;|_djyDrc*N=6qcD5*v z`J+j%j;oqDv+(GEXp)+);FS3ytHCs)4Uusm_Lz$))bQg*wl%QdmXd~t>~)_2+JmQA z*mSpHIb9gG=BXY6???0UGBW7-OsG-;O}4Kz6)CQg#ylXrU$+Ka7SW!HSI#l

Laj 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

&pT-bniO?^&(MyuP-Ifr3oYVas z%nO||j!_z1Zk~?5r3q<0N-@I5wbX8wBWq&!Bk;QqDnR>xP`fjTubhUwycCcQDn{NN zF=AM#EX$}zxpQ8#vy9i;Mnv!gz}T8yJNNCAB6NvyV5~n3p-sc^x+Hr=BZx`*g>j|$ zS|wW5-C`2$7fG{|&>p%*V%Fu}PTUtOm#8hav^gBt44}k|#bctUiY>z;j;i{b^o(gS_W4$1!lnz>WX>1O zOTV?5!08ca{f;J^bI)kW0w)!YL{|uQy{}|^iG`8Ed8Ohe0cRnJ?1^gfSB+52D8a2# z<6q@D_D$JahgV390gUgv)1hN z)E3E$K`?V-Cu@B@Z?j|Jqe3H1_agapV*roG{i7~ zdz_l|^*CbETcAWoR^bggh|YAxmFf6sbJNXt%OUE8N`({}IZF6ur<--E!cPc@m&<;w zE)#ln0zpdW^6y@d8cEp{5jCm|tG@_8FT3%LBjeBeesagws2tBQe->shS(_f&X`Un4 z@zHxEAJ4DX*B8&d+-uGTdf_P6Re~{?Qbg%fw{ikKskG2Zpue`>&VZ03Qthcq(#kmO zZ_@A{Uv(4~$w2(@r|Z+V<{IksEED4{W(6K4FJixbce?}n6^F4us_(n}!#5H8`5W!= zfNJ4->3lu1ZLJIVzHLwm(}Ol`4o+tnr(a3KRl>*Vr4o~-mver{M~l9y4O{7nn+_!* z2E4u%f%Bqxl{MHEI0SlAMTs7}_R3Z~3{vEQ+kG9}ehW%wuaSgQaUCdLl6HM+2`=dp+8YLy{4%M!Mrc5h;>E>1n1KswxSb{tLAONBsw<3 zp%6hOXI^Uc<@pXkp?vaEhQopT3y*VFXwOW5)Ushv(hcY|l+J#v$TBR`sPc(v;K zI@h7HH?EUJeXCY{`kv0;EEZy;nP^sB$-Ly)(RRN~;IfbZZ0dRLxozHVvLKv^cM~5z zD8fd+!z$7xFXOFCDhpURexr~-!L)@8^=n0ui6P%?%)Iw9Gs{et^r{qJ7|!8!u-Amf z#f`Mp=iR?>`w**QtU3H072RH!lp;AZe2_d7x%hGEdS9#~#Hi*9d@6IwpE9G%h#RmK z2&J6%V=rQ}kEs-23_G*%iz}!&Vz0PS?Swn|TpSCkeKbAy{7&F(B%;Vu!k+Vm)jXDlgg6J;bKokZ>+-{H}4ihe%RQiPko+?c3!i*&>Zo zO6u0Cj?(5XqD0AtXpwfbVYE&3Q?xq5@j5-sZO@)KypVc7X7JxVvkb;&6tEwrNqbB4 zH%RX9^2Qo~@0<`Ftb^&g!?R{3?{wEN-j_Fss@5v`RBWbs?-DA*+m~7=-72U%g-LOS~2~BjYHZHy9iIKGA<>UxXPLwKZOld=oKw3)0-3CBvzY z8`o-jJoCn7`cK~7*FvmcEkXhUr}%LvK(*rK)6Y` zTj}e4;${$Zt+1qIC``uG${|6hV%-jF~ literal 109344 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%0A7d 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 fL-GH0TfQoW;> +* <> +* <> You can create a maximum of 30 buckets per cluster. == Prerequisites -* You must be a Full or Cluster Administrator. +* You have the Full, Cluster, or Backup Administrator role. +* Your cluster must have less than 30 buckets. [#create-bucket-using-couchbase-web-console] == Create a Bucket with the UI @@ -20,29 +25,27 @@ You can create a maximum of 30 buckets per cluster. To create a bucket with the Couchbase UI: . Log in to the Couchbase Server Web Console. -. Select btn:[Add Bucket]. +. Click menu:Buckets[]. + +. Click btn:[Add Bucket]. + The [.ui]*Add Data Bucket* dialog appears: [#add-data-bucket-dialog-initial] -image::manage-buckets/addDataBucketDialogInitial.png[,320,align=center, alt="An image that displays the Add Data Bucket dialog. The Name field is empty. Bucket Type is set to Couchbase, and the Storage Backend is set to CouchStore. The Memory Quota is set to 18488MiB. The Advanced bucket settings are collapsed."] +image::manage-buckets/addDataBucketDialogInitial.png[align=center, alt="An image that displays the Add Data Bucket dialog. The Name field is empty. Bucket Type is set to Couchbase, and the Storage Backend is set to Magma with 128 vBuckets. The Memory Quota is set to 312MiB. The Advanced bucket settings is collapsed."] [start="4"] . In the *Name* field, enter a name for the new bucket. -+ -[NOTE] -==== A bucket name can be up to 100 characters in length and contain: ++ * Uppercase and lowercase characters (A-Z and a-z) * Digits (0-9) * Underscores (_), periods (.), dashes (-), and percent symbols (%) -==== -[start="5"] + . Choose a *Bucket Type* for the bucket: + * *Couchbase* -* *Memcached* * *Ephemeral* + @@ -54,16 +57,38 @@ For more information about bucket types, see xref:learn:buckets-memory-and-stora * *Magma* + +If you choose *Magma*, you can also choose the number of xref:learn:buckets-memory-and-storage/vbuckets.adoc[vBuckets] for the bucket. For more information about the available storage engines, see xref:learn:buckets-memory-and-storage/storage-engines.adoc[Storage Engines]. -. In the *Memory Quota* field, enter a value in MiB per node for the total RAM available for the bucket. This value can't exceed the total RAM quota for your cluster. +. In the *Memory Quota* field, enter a value in MiB per node for the total RAM available for the bucket. +This value cannot exceed the total RAM quota for your cluster. +It must also be equal to or greater than the minimum memory quota required by your chosen storage engine: + ++ +|=== +| Storage Engine | Minimum Memory Quota + +| Couchstore +| 100{nbsp}MiB + +| Magma (128 vBuckets) +| 100{nbsp}MiB + +| Magma (1024 vBuckets) +| 1{nbsp}GiB +|=== + + -NOTE: Your memory quota needs to match the minimum memory resident ratio required by your chosen storage engine. +Your setting should also meet or surpass the memory resident requirement of the storage backend for your anticipated dataset size. +For example, Magma has a minimum memory-to-data ratio of 1% of the data size. +Suppose you expect the dataset in your Magma bucket to be 5{nbsp}TB. +Then set the memory quota to at least 64{nbsp}GiB. For more information, see xref:learn:buckets-memory-and-storage/memory.adoc#bucket-memory[Bucket Memory Quotas]. [start="8"] . Expand *Advanced bucket settings*. -. Set any advanced settings for your bucket. See <>. +. Set any advanced settings for your bucket. +See <>. . Select btn:[Add Bucket]. The bucket appears on the *Buckets* screen. diff --git a/modules/manage/pages/manage-buckets/migrate-bucket.adoc b/modules/manage/pages/manage-buckets/migrate-bucket.adoc index fa90d38807..cd5c695e11 100644 --- a/modules/manage/pages/manage-buckets/migrate-bucket.adoc +++ b/modules/manage/pages/manage-buckets/migrate-bucket.adoc @@ -7,8 +7,15 @@ You can migrate a bucket's storage backend if you find the bucket's current performance is not meeting your needs. For example, you can migrate a bucket from Couchstore to Magma if the bucket's working set grows beyond its memory quota. - You can migrate from Couchstore to Magma, or from Magma to Couchstore. +Migrating to a Magma bucket always results in a bucket with 1024 vBuckets, regardless of the number of vBuckets in the original bucket. + +NOTE: The backend migration described in this section does not support migrating between buckets with different numbers of vBuckets. +You cannot migrate a Couchstore or Magma bucket with 1024 vBuckets to a Magma bucket with 128 vBuckets. +Similarly, you cannot migrate from a Magma bucket with 128 vBuckets to a Couchstore or a Magma bucket with 128 vBuckets. +To migrate between buckets with different number of vBuckets, you can use a local cross datacenter replication (XDCR). +See <> for more information. + You start a bucket's migration by calling the REST API to edit the bucket's `storageBackend` setting. This call changes the bucket's global storage backend parameter. However, it does not trigger an immediate conversion of the vBuckets to the new backend. @@ -185,3 +192,122 @@ include::manage:example$migrate-bucket-storage-backend.sh[tag=rebalance-cluster] ---- . Repeat the previous step until all nodes that you'd migrated have rolled back to their original storage backend. + + +[#xdcr-migration] +== XDCR Storage Backend Migration + +You can use xref:learn:clusters-and-availability/xdcr-overview.adoc[] to migrate data between two buckets with different storage backends, including between Magma buckets using different numbers of vBuckets. +You can perform this migration on the same cluster or between two clusters. + +include::learn:partial$xdcr-magma-128-vbucket-incompatibility.adoc[] + +To perform an XDCR storage backed migration on the same cluster, it must have enough memory and storage for two copies of the bucket's data. +After the migration, you can drop the original bucket to free the resources it uses. + +The process for performing a backend migration using XDCR is similar to configuring any other XDCR replication. +The only difference is that the source and destination of the replication are the same cluster. + +The following steps demonstrate migrating a Magma bucket with 128 vBuckets named `travel-sample` to a Magma bucket with 1024 vBuckets named `travel-sample-1024`: + +. Create a new bucket named `travel-sample-1024` using the Magma storage backend with 1024 vBuckets. +For more information about creating a bucket, see xref:manage:manage-buckets/create-bucket.adoc[]. +The following example uses the REST API to create the new bucket: + ++ +[source,console] +---- +curl -X POST http://127.0.0.1:8091/pools/default/buckets \ + -u Administrator:password \ + -d name=travel-sample-1024 \ + -d storageBackend=magma \ + -d numVbuckets=1024 \ + -d ramQuota=1024 +---- + +. Recreate any scopes and collections in the new bucket that are in the original bucket. +Replication does not recreating missing scopes and collections for you. +You can create the scopes and collections manually or reuse any deployment scripts you have. +See xref:manage:manage-scopes-and-collections/manage-scopes-and-collections.adoc[] for details on creating scopes and collections. + ++ +You can also create a script to recreate the scopes and collections in the new bucket. +For example, the following Python script uses the Python SDK to accomplish this task: + ++ +[source,python] +---- +include::manage:example$duplicate-scopes-collections.py[] +---- + +. Add a loopback reference to the cluster. +The following example uses the REST API to add an XDCR reference named `self` to the cluster that uses the loopback IP address as the hostname: + ++ +[source,console] +---- + curl -X POST http://127.0.0.1:8091/pools/default/remoteClusters -u Administrator:password \ +-d username=Administrator \ +-d password=password \ +-d hostname=127.0.0.1 \ +-d name=self \ +-d demandEncryption=0 | jq +---- + ++ +The out of previous command is: + ++ +[source,json] +---- +{ + "connectivityErrors": null, + "deleted": false, + "hostname": "127.0.0.1:8091", + "name": "self", + "network_type": "", + "secureType": "none", + "uri": "/pools/default/remoteClusters/self", + "username": "Administrator", + "uuid": "a43e930240738b5aee16e2688a65d08f", + "validateURI": "/pools/default/remoteClusters/self?just_validate=1" +} +---- + +. Create an XDCR replication from the original bucket to the new bucket. +The following example uses the REST API to create the replication: + ++ +[source,console] +---- +curl -v -X POST -u Administrator:password \ +http://127.0.0.1:8091/controller/createReplication \ +-d fromBucket=travel-sample \ +-d toCluster=self \ +-d toBucket=travel-sample-1024 \ +-d replicationType=continuous \ +-d createTarget=true \ +-d enableCompression=1 | jq +---- + ++ +The result of the previous command looks like this: + ++ +[source,json] +---- +{ + "id": "a43e930240738b5aee16e2688a65d08f/travel-sample/travel-sample-1024" +} +---- + ++ +The replication process starts. + +. Monitor the replication process until it completes. +You can monitor the replication process xref:manage:manage-xdcr/create-xdcr-replication.adoc#monitor-current-replications[via the Couchbase Server Web Console] or by xref:rest-api:rest-xdcr-statistics.adoc[calling the REST API]. +Once the replication has duplicated all of the documents in the original bucket without errors, you can stop and delete it. +Then you can drop the original bucket. + ++ +IMPORTANT: Be sure to update all clients to use the new bucket before you stop the replication. diff --git a/modules/manage/pages/manage-xdcr/prepare-for-xdcr.adoc b/modules/manage/pages/manage-xdcr/prepare-for-xdcr.adoc index 7120d407f2..a532b83b7b 100644 --- a/modules/manage/pages/manage-xdcr/prepare-for-xdcr.adoc +++ b/modules/manage/pages/manage-xdcr/prepare-for-xdcr.adoc @@ -33,6 +33,8 @@ If a cluster is not sized to handle _both_ the existing workload _and_ the new X * Couchbase Server uses TCP/IP port `8091` to exchange cluster configuration information. If you are communicating with a destination cluster over a dedicated connection, or over the Internet, ensure that all nodes in the destination and source clusters can communicate with each other over ports `8091` and `8092`. +include::learn:partial$xdcr-magma-128-vbucket-incompatibility.adoc[] + [#next-xdcr-steps-after-preparation] == Next Steps diff --git a/modules/rest-api/pages/rest-bucket-create.adoc b/modules/rest-api/pages/rest-bucket-create.adoc index fbc196b313..b012eddd7d 100644 --- a/modules/rest-api/pages/rest-bucket-create.adoc +++ b/modules/rest-api/pages/rest-bucket-create.adoc @@ -46,6 +46,7 @@ curl -X POST -u : -d bucketType=[ couchbase | ephemeral | memcached ] -d ramQuota= -d storageBackend=[ couchstore | magma ] + -d numVbuckets=[ 128 | 1024 ] -d evictionPolicy=[ [ valueOnly | fullEviction ] | [ noEviction | nruEviction ] @@ -104,7 +105,7 @@ xref:rest-api:rest-bucket-create.adoc#historyretentioncollectiondefault[historyR xref:rest-api:rest-bucket-create.adoc#historyretentionbytes[historyRetentionBytes], xref:rest-api:rest-bucket-create.adoc#storagebackend[storageBackend], and xref:rest-api:rest-bucket-create.adoc#historyretentionseconds[historyRetentionSeconds]. -** Parameters that _cannot_ be edited after bucket creation; these being xref:rest-api:rest-bucket-create.adoc#buckettype[bucketType], xref:rest-api:rest-bucket-create.adoc#replicaindex[replicaIndex], and xref:rest-api:rest-bucket-create.adoc#conflictresolutiontype[conflictResolutionType]. +** Parameters that _cannot_ be edited after bucket creation; these being xref:rest-api:rest-bucket-create.adoc#buckettype[bucketType], xref:rest-api:rest-bucket-create.adoc#replicaindex[replicaIndex], <>, and xref:rest-api:rest-bucket-create.adoc#conflictresolutiontype[conflictResolutionType]. For full details and examples, see xref:rest-api:rest-bucket-create.adoc#general-parameters[General Parameters], below. @@ -249,21 +250,27 @@ No object is returned. [#storagebackend] === storageBackend -The _storage backend_ to be assigned to and used by the bucket. -This can be either `couchstore` (which is the default) or `magma`. -For information, see xref:learn:buckets-memory-and-storage/storage-engines.adoc[Storage Engines]. +The storage backend to use for the new bucket. +In Enterprise Edition, this value can be set to either `couchstore` or `magma` (the default). +In Couchbase Server Community Edition, the default and only valid value is `couchstore`. +For more information, see xref:learn:buckets-memory-and-storage/storage-engines.adoc[Storage Engines]. -NOTE: You can edit this value after initially creating the bucket. Couchbase Server sets the new backend value globally. However, this change does not convert the bucket to the new backend storage engine. Instead, Couchbase Server adds overrides to every node containing the bucket to indicate that their vBuckets are still in the old format. You must take additional steps to complete the migration to the new storage backend. See xref:manage:manage-buckets/migrate-bucket.adoc[] for more information. +NOTE: You can edit this value after initially creating the bucket. +Couchbase Server sets the new backend value globally. +However, this change does not convert the bucket to the new backend storage engine. +Instead, Couchbase Server adds overrides to every node containing the bucket to indicate that their vBuckets are still in the old format. +You must take additional steps to complete the migration to the new storage backend. +See xref:manage:manage-buckets/migrate-bucket.adoc[] for more information. [#example-storage-backend] ==== Example: Specifying the Storage Backend -A minimum of 1024 MiB is required if the `magma` option is used; a minimum of 100 MiB if the default `couchstore` is used. +The following example creates a new bucket, named `testBucket`, with the Magma storage backend. ---- curl -v -X POST http://127.0.0.1:8091/pools/default/buckets \ -u Administrator:password \ --d ramQuota=1024 \ +-d ramQuota=300 \ -d storageBackend=magma \ -d name=testBucket ---- @@ -271,6 +278,38 @@ curl -v -X POST http://127.0.0.1:8091/pools/default/buckets \ If successful, the call returns a `202 Accepted` notification. No object is returned. + +[#numvbuckets] +=== numVbuckets + +Sets the number of vBuckets for a Magma bucket. +The possible values are `128` or `1024`. +If you do not supply this value (or if you supply a value other than `128` or `1024`), Couchbase Server uses the default value of `128`. + +If you set `storageBackend` to `couchstore`, the number of vBuckets is always 1024, and Couchbase Server ignores this parameter if you provide it. + +NOTE: You cannot change the number of vBuckets for a bucket after creating it. +If you need a bucket with a different number of vBuckets, you must create a new bucket with the desired number of vBuckets and then migrate your data to it. +See xref:manage:manage-buckets/migrate-bucket.adoc#xdcr-migration[XDCR Storage Backend Migration] for more information. + +[#example-numvbuckets-create] +==== Example: Setting the Number of vBuckets + +The following example creates a new bucket named `testBucket` with the Magma stage backend assigns it `1024` vBuckets. +It also sets the `ramQuota` to `1024`, which is the minimum value allowed for a Magma bucket with 1024 vBuckets. + +[source,console] +---- +curl -X POST http://127.0.0.1:8091/pools/default/buckets \ + -u Administrator:password \ + -d name=testBucket \ + -d storageBackend=magma \ + -d numVbuckets=1024 \ + -d ramQuota=1024 +---- + +This example returns the status code `202 Accepted` and no additional output. + [#evictionpolicy] === evictionPolicy diff --git a/modules/rest-api/pages/rest-buckets-summary.adoc b/modules/rest-api/pages/rest-buckets-summary.adoc index ffc8c71160..3982e909a3 100644 --- a/modules/rest-api/pages/rest-buckets-summary.adoc +++ b/modules/rest-api/pages/rest-buckets-summary.adoc @@ -41,18 +41,19 @@ If an internal error prevents successful execution, `500 Internal Server Error` [#example] == Example -The following example returns information on a single bucket named `travel-sample`. -The output of the call is piped to https://stedolan.github.io/jq/[jq^] to improve readability. +The following example demonstrates getting information about a bucket named `travel-sample`. +It uses the https://stedolan.github.io/jq/[jq^] command-line JSON processor to format the output for readability and also filter out some of the less relevant fields. + ---- curl -X GET -u Administrator:password \ -http://localhost:8091/pools/default/buckets/travel-sample | jq '.' + http://localhost:8091/pools/default/buckets/travel-sample \ + | jq '.vBucketServerMap.vBucketMap = "" + | .nodes = ""' ---- If successful, the call returns `200 OK`, and an object similar to the one shown in the following example. -NOTE: The output contains an extensive array of vBucket data that is omitted from this example. - The fields `historyRetentionCollectionDefault`, `historyRetentionCollectionBytes`, and `historyRetentionCollectionSeconds` are specific to Magma storage. When the bucket does not use Magma as its storage backend, these properties do not appear in the output. @@ -70,5 +71,5 @@ See the xref:rest-bucket-create.adoc#notes[Notes] section of xref:rest-bucket-cr [#see-also] == See Also -An overview of buckets is provided in xref:learn:buckets-memory-and-storage/buckets.adoc[Buckets]. -An introduction to scopes and collections is provided in xref:learn:data/scopes-and-collections.adoc[Scopes and Collections]. +* xref:learn:buckets-memory-and-storage/buckets.adoc[] for an overview of buckets. +* xref:learn:data/scopes-and-collections.adoc[] for an overview of scopes and collections. diff --git a/modules/rest-api/partials/get_bucket_travel_sample.json b/modules/rest-api/partials/get_bucket_travel_sample.json index bbe2812419..12f793a49a 100644 --- a/modules/rest-api/partials/get_bucket_travel_sample.json +++ b/modules/rest-api/partials/get_bucket_travel_sample.json @@ -2,25 +2,27 @@ "name": "travel-sample", "nodeLocator": "vbucket", "bucketType": "membase", - "storageBackend": "couchstore", - "uuid": "85ff541d1f4cfbc9e67cda3db698cac6", - "uri": "/pools/default/buckets/travel-sample?bucket_uuid=85ff541d1f4cfbc9e67cda3db698cac6", - "streamingUri": "/pools/default/bucketsStreaming/travel-sample?bucket_uuid=85ff541d1f4cfbc9e67cda3db698cac6", - "numVBuckets": 1024, + "storageBackend": "magma", + "uuid": "823f32a2b2abd57581230b39e31b7a34", + "uri": "/pools/default/buckets/travel-sample?bucket_uuid=823f32a2b2abd57581230b39e31b7a34", + "streamingUri": "/pools/default/bucketsStreaming/travel-sample?bucket_uuid=823f32a2b2abd57581230b39e31b7a34", + "numVBuckets": 128, "bucketCapabilitiesVer": "", "bucketCapabilities": [ "collections", "durableWrite", "tombstonedUserXAttrs", - "couchapi", "subdoc.ReplaceBodyWithXattr", "subdoc.DocumentMacroSupport", "subdoc.ReviveDocument", + "nonDedupedHistory", "dcp.IgnorePurgedTombstones", "preserveExpiry", "querySystemCollection", "mobileSystemCollection", "subdoc.ReplicaRead", + "subdoc.BinaryXattr", + "subdoc.AccessDeleted", "rangeScan", "dcp", "cbhello", @@ -31,9 +33,6 @@ "xattr" ], "collectionsManifestUid": "2", - "ddocs": { - "uri": "/pools/default/buckets/travel-sample/ddocs" - }, "vBucketServerMap": { "hashAlgorithm": "CRC", "numReplicas": 1, @@ -42,23 +41,7 @@ "node2.:11210", "node3.:11210" ], - "vBucketMap": [ - [ - 0, - 1 - ], - [ - 0, - 1 - ], - . - . - . - [ - 2, - 1 - ] - ] + "vBucketMap": "" }, "localRandomKeyUri": "/pools/default/buckets/travel-sample/localRandomKey", "controllers": { @@ -67,235 +50,7 @@ "purgeDeletes": "/pools/default/buckets/travel-sample/controller/unsafePurgeBucket", "startRecovery": "/pools/default/buckets/travel-sample/controller/startRecovery" }, - "nodes": [ - { - "couchApiBaseHTTPS": "https://node3.:18092/travel-sample%2B85ff541d1f4cfbc9e67cda3db698cac6", - "couchApiBase": "http://node3.:8092/travel-sample%2B85ff541d1f4cfbc9e67cda3db698cac6", - "clusterMembership": "active", - "recoveryType": "none", - "status": "healthy", - "otpNode": "ns_1@node3.", - "hostname": "node3.:8091", - "nodeUUID": "d6bfd3cccf28f3e648bca46cb30ac271", - "clusterCompatibility": 524288, - "version": "8.0.0-1649-enterprise", - "os": "aarch64-unknown-linux-gnu", - "cpuCount": 4, - "ports": { - "direct": 11210, - "httpsMgmt": 18091, - "httpsCAPI": 18092, - "distTCP": 21100, - "distTLS": 21150 - }, - "services": [ - "backup", - "index", - "kv", - "n1ql" - ], - "nodeEncryption": false, - "nodeEncryptionClientCertVerification": false, - "addressFamilyOnly": false, - "configuredHostname": "node3.:8091", - "addressFamily": "inet", - "externalListeners": [ - { - "afamily": "inet", - "nodeEncryption": false - } - ], - "serverGroup": "Group 1", - "replication": 1, - "nodeHash": 48264202, - "systemStats": { - "cpu_utilization_rate": 10.20000000018626, - "cpu_stolen_rate": 0, - "swap_total": 2147479552, - "swap_used": 396525568, - "mem_total": 8327258112, - "mem_free": 1855406080, - "mem_limit": 8327258112, - "cpu_cores_available": 4, - "allocstall": 37181 - }, - "interestingStats": { - "cmd_get": 0, - "couch_docs_actual_disk_size": 48142369, - "couch_docs_data_size": 32943627, - "couch_spatial_data_size": 0, - "couch_spatial_disk_size": 0, - "couch_views_actual_disk_size": 0, - "couch_views_data_size": 0, - "curr_items": 21189, - "curr_items_tot": 42289, - "ep_bg_fetched": 0, - "get_hits": 0, - "index_data_size": 37010997, - "index_disk_size": 16332886, - "mem_used": 63213008, - "ops": 0, - "vb_active_num_non_resident": 0, - "vb_replica_curr_items": 21100 - }, - "uptime": "788913", - "memoryTotal": 8327258112, - "memoryFree": 1855406080, - "mcdMemoryReserved": 6353, - "mcdMemoryAllocated": 6353 - }, - { - "couchApiBaseHTTPS": "https://node2.:18092/travel-sample%2B85ff541d1f4cfbc9e67cda3db698cac6", - "couchApiBase": "http://node2.:8092/travel-sample%2B85ff541d1f4cfbc9e67cda3db698cac6", - "clusterMembership": "active", - "recoveryType": "none", - "status": "healthy", - "otpNode": "ns_1@node2.", - "hostname": "node2.:8091", - "nodeUUID": "b737df3d566f6c6ccb2bcafec61e85a2", - "clusterCompatibility": 524288, - "version": "8.0.0-1649-enterprise", - "os": "aarch64-unknown-linux-gnu", - "cpuCount": 4, - "ports": { - "direct": 11210, - "httpsMgmt": 18091, - "httpsCAPI": 18092, - "distTCP": 21100, - "distTLS": 21150 - }, - "services": [ - "eventing", - "fts", - "kv", - "n1ql" - ], - "nodeEncryption": false, - "nodeEncryptionClientCertVerification": false, - "addressFamilyOnly": false, - "configuredHostname": "node2.:8091", - "addressFamily": "inet", - "externalListeners": [ - { - "afamily": "inet", - "nodeEncryption": false - } - ], - "serverGroup": "Group 1", - "replication": 1, - "nodeHash": 34469021, - "systemStats": { - "cpu_utilization_rate": 10.23397660196727, - "cpu_stolen_rate": 0, - "swap_total": 2147479552, - "swap_used": 396525568, - "mem_total": 8327258112, - "mem_free": 1855901696, - "mem_limit": 8327258112, - "cpu_cores_available": 4, - "allocstall": 37181 - }, - "interestingStats": { - "cmd_get": 0, - "couch_docs_actual_disk_size": 56100897, - "couch_docs_data_size": 32866921, - "couch_spatial_data_size": 0, - "couch_spatial_disk_size": 0, - "couch_views_actual_disk_size": 0, - "couch_views_data_size": 0, - "curr_items": 21118, - "curr_items_tot": 42167, - "ep_bg_fetched": 0, - "get_hits": 0, - "mem_used": 63213888, - "ops": 0, - "vb_active_num_non_resident": 0, - "vb_replica_curr_items": 21049 - }, - "uptime": "788913", - "memoryTotal": 8327258112, - "memoryFree": 1855901696, - "mcdMemoryReserved": 6353, - "mcdMemoryAllocated": 6353 - }, - { - "couchApiBaseHTTPS": "https://node1.:18092/travel-sample%2B85ff541d1f4cfbc9e67cda3db698cac6", - "couchApiBase": "http://node1.:8092/travel-sample%2B85ff541d1f4cfbc9e67cda3db698cac6", - "clusterMembership": "active", - "recoveryType": "none", - "status": "healthy", - "otpNode": "ns_1@node1.", - "thisNode": true, - "hostname": "node1.:8091", - "nodeUUID": "87a797d06f374f8006cc4a3a683db4e1", - "clusterCompatibility": 524288, - "version": "8.0.0-1649-enterprise", - "os": "aarch64-unknown-linux-gnu", - "cpuCount": 4, - "ports": { - "direct": 11210, - "httpsMgmt": 18091, - "httpsCAPI": 18092, - "distTCP": 21100, - "distTLS": 21150 - }, - "services": [ - "cbas", - "index", - "kv", - "n1ql" - ], - "nodeEncryption": false, - "nodeEncryptionClientCertVerification": false, - "addressFamilyOnly": false, - "configuredHostname": "node1.:8091", - "addressFamily": "inet", - "externalListeners": [ - { - "afamily": "inet", - "nodeEncryption": false - } - ], - "serverGroup": "Group 1", - "replication": 1, - "nodeHash": 72627629, - "systemStats": { - "cpu_utilization_rate": 10.24295140934561, - "cpu_stolen_rate": 0, - "swap_total": 2147479552, - "swap_used": 396525568, - "mem_total": 8327258112, - "mem_free": 1854889984, - "mem_limit": 8327258112, - "cpu_cores_available": 4, - "allocstall": 37181 - }, - "interestingStats": { - "cmd_get": 0, - "couch_docs_actual_disk_size": 44320702, - "couch_docs_data_size": 32823159, - "couch_spatial_data_size": 0, - "couch_spatial_disk_size": 0, - "couch_views_actual_disk_size": 0, - "couch_views_data_size": 0, - "curr_items": 21036, - "curr_items_tot": 42230, - "ep_bg_fetched": 0, - "get_hits": 0, - "index_data_size": 38186104, - "index_disk_size": 23976600, - "mem_used": 62882016, - "ops": 0, - "vb_active_num_non_resident": 0, - "vb_replica_curr_items": 21194 - }, - "uptime": "788913", - "memoryTotal": 8327258112, - "memoryFree": 1854889984, - "mcdMemoryReserved": 6353, - "mcdMemoryAllocated": 6353 - } - ], + "nodes": "", "stats": { "uri": "/pools/default/buckets/travel-sample/stats", "directoryURI": "/pools/default/buckets/travel-sample/stats/Directory", @@ -303,7 +58,6 @@ }, "authType": "sasl", "autoCompactionSettings": false, - "replicaIndex": false, "rank": 0, "enableCrossClusterVersioning": false, "versionPruningWindowHrs": 720, @@ -314,22 +68,48 @@ "rawRAM": 209715200 }, "basicStats": { - "quotaPercentUsed": 30.08984120686849, + "quotaPercentUsed": 21.90842056274414, "opsPerSec": 0, "diskFetches": 0, - "itemCount": 63343, - "diskUsed": 148563968, - "dataUsed": 98633707, - "memUsed": 189308912, + "itemCount": 63321, + "diskUsed": 119897122, + "dataUsed": 119897122, + "memUsed": 137835864, "vbActiveNumNonResident": 0 }, "evictionPolicy": "fullEviction", "durabilityMinLevel": "none", - "pitrEnabled": false, - "pitrGranularity": 600, - "pitrMaxHistoryAge": 86400, + "storageQuotaPercentage": 50, + "historyRetentionSeconds": 0, + "historyRetentionBytes": 0, + "historyRetentionCollectionDefault": true, + "magmaKeyTreeDataBlockSize": 4096, + "magmaSeqTreeDataBlockSize": 4096, + "continuousBackupEnabled": false, + "continuousBackupInterval": 2, + "continuousBackupLocation": "", "conflictResolutionType": "seqno", + "workloadPatternDefault": "undefined", "maxTTL": 0, "compressionMode": "passive", - "accessScannerEnabled": false + "expiryPagerSleepTime": 600, + "memoryLowWatermark": 75, + "memoryHighWatermark": 85, + "durabilityImpossibleFallback": "disabled", + "warmupBehavior": "background", + "invalidHlcStrategy": "error", + "hlcMaxFutureThreshold": 3900, + "dcpConnectionsBetweenNodes": 1, + "dcpBackfillIdleProtectionEnabled": true, + "dcpBackfillIdleLimitSeconds": 720, + "dcpBackfillIdleDiskThreshold": 90, + "accessScannerEnabled": true, + "encryptionAtRestInfo": { + "dataStatus": "unencrypted", + "dekNumber": 0, + "issues": [] + }, + "encryptionAtRestKeyId": -1, + "encryptionAtRestDekRotationInterval": 2592000, + "encryptionAtRestDekLifetime": 31536000 } \ No newline at end of file From 12044b51f1e9c14e0c4583df694b7bbd4372974c Mon Sep 17 00:00:00 2001 From: Gary Gray <137797428+ggray-cb@users.noreply.github.com> Date: Fri, 6 Jun 2025 11:39:02 -0400 Subject: [PATCH 2/5] New feature tweaks and configuring which breanches the preview pulls in. --- .../partials/new-features-80.adoc | 37 ++++++++++++++----- preview/HEAD.yml | 4 +- 2 files changed, 29 insertions(+), 12 deletions(-) diff --git a/modules/introduction/partials/new-features-80.adoc b/modules/introduction/partials/new-features-80.adoc index b5934c8afd..4e79be9e01 100644 --- a/modules/introduction/partials/new-features-80.adoc +++ b/modules/introduction/partials/new-features-80.adoc @@ -63,27 +63,44 @@ curl --get -u \ === Data Service [#mb-62777] -https://jira.issues.couchbase.com/browse/MB-62777[MB-62777] Magma with 128 vBuckets is now the default stoage engine:: -In earlier versions of Couchbase Server, if you did not specify which storage engine to use when creating a new bucket, Couchbase Server used Couchstore. +https://jira.issues.couchbase.com/browse/MB-62777[MB-62777] Magma with 128 vBuckets is now the default storage engine:: +In earlier versions of Couchbase Server, if you did not specify which storage engine to use when creating a new bucket, it would use Couchstore. Once you upgrade your entire cluster to Couchbase Server Enterprise 8.0, the default storage engine for new buckets is Magma with 128 vBuckets. -Using 128 vBuckets with Magma is a new option which provides the advantages of the Magma storage engine while reducing the memory requirement for a Magma bucket. -Before Couchbase Server 8.0, Magma only supported using 1024 vBuckets and had a minimum memory requirements of 1{nbsp}GB. -Buckets that use Magma with 128 vBuckets have a minimum memory requirement of 100{nbsp}MB. + -This change in the default storage engine does not affect existing buckets. -You can still create buckets that use the Couchstore storage engine by explicitly specifying it as the storage backend during bucket creation. +Magma buckets with 128 vBuckets is a new feature that provides the advantages of the Magma storage engine while reducing the minimum memory requirement. +Before Couchbase Server 8.0, Magma only supported using 1024 vBuckets and had a minimum memory requirements of 1{nbsp}GiB. +Buckets that use Magma with 128 vBuckets have a minimum memory requirement of 100{nbsp}MiB which is the same as Couchstore. + -NOTE: This change does not affect Couchbase Server Community Edition, because it does not support the Magma storage engine. +NOTE: These changes do not affect Couchbase Server Community Edition because it does not support the Magma storage engine. + ++ +This change in the default storage engine does not affect existing buckets. +You can still create buckets that use the Couchstore storage engine by explicitly specifying it as the storage backend during bucket creation. + See xref:learn:buckets-memory-and-storage/storage-engines.adoc[] for more information about storage engines. + -IMPORTANT: This change to the default storage engine may affect scripts you have developed to deploy Couchbase Server or create new buckets. -Before upgrading to Couchbase Server 8.0, verify that any scripts you use are not affected by this change. +.default behavior change +[IMPORTANT] +==== +The new default storage backend for buckets is a behavior change that may cause issues if you rely on the previous behavior. + +Before upgrading to Couchbase Server 8.0, consider the following: +* If you have deployment scripts that create buckets without specifying the storage engine, those scripts create Magma buckets with 128 vBuckets instead of Couchstore buckets after the upgrade. +This may affect your deployment if you depend on buckets using the Couchstore storage engine. +* You cannot use XDCR to replicate Magma buckets using 128 vBuckets with pre-8.0 clusters. +XDCR in pre-8.0 clusters only supports replication between buckets that contain the same number of vBuckets. +Pre-8.0 versions of Couchbase Server only support Couchstore and Magma buckets with 1024 vBuckets (or 64 vBuckets on macOS). + ++ +If you're manually deploying a new cluster, be sure to set the number of vBuckets to 1024 for any Magma bucket you need to replicate with a pre-8.0 cluster. +If you have a deployment script that creates Magma buckets for replication with pre-8.0 clusters, have it set the number of vBuckets to 1024 when it creates Magma buckets. +To set this value, use the `numVbuckets` parameter in xref:rest-api:rest-bucket-create.adoc#numvbuckets[the REST API] or `--num-vbuckets` in the xref:cli:cbcli/couchbase-cli-bucket-create.adoc[`couchbase-cli` command line tool]. +==== https://jira.issues.couchbase.com/browse/MB-9418[MB-9418]:: The previous warmup behavior was to load values and not complete warmup until the Bucket reaches one of: diff --git a/preview/HEAD.yml b/preview/HEAD.yml index 0075f29c45..3602f574b3 100644 --- a/preview/HEAD.yml +++ b/preview/HEAD.yml @@ -1,13 +1,13 @@ sources: docs-devex: - branches: DOC-12565_vector_search_concepts + branches: release/8.0 docs-analytics: branches: release/8.0 couchbase-cli: # url: ../../docs-includes/couchbase-cli url: https://github.com/couchbaselabs/couchbase-cli-doc # branches: HEAD - branches: master + branches: morpheus startPaths: docs/ backup: # url: ../../docs-includes/backup From e59715c0fb7a555347803ee307f9e1cb1dbf7584 Mon Sep 17 00:00:00 2001 From: Gary Gray <137797428+ggray-cb@users.noreply.github.com> Date: Fri, 6 Jun 2025 13:45:28 -0400 Subject: [PATCH 3/5] A few tweaks. --- modules/introduction/partials/new-features-80.adoc | 12 ++++++------ .../manage/pages/manage-buckets/create-bucket.adoc | 4 ++-- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/modules/introduction/partials/new-features-80.adoc b/modules/introduction/partials/new-features-80.adoc index 4e79be9e01..577eef77b7 100644 --- a/modules/introduction/partials/new-features-80.adoc +++ b/modules/introduction/partials/new-features-80.adoc @@ -68,16 +68,16 @@ In earlier versions of Couchbase Server, if you did not specify which storage en Once you upgrade your entire cluster to Couchbase Server Enterprise 8.0, the default storage engine for new buckets is Magma with 128 vBuckets. + -Magma buckets with 128 vBuckets is a new feature that provides the advantages of the Magma storage engine while reducing the minimum memory requirement. -Before Couchbase Server 8.0, Magma only supported using 1024 vBuckets and had a minimum memory requirements of 1{nbsp}GiB. -Buckets that use Magma with 128 vBuckets have a minimum memory requirement of 100{nbsp}MiB which is the same as Couchstore. +Magma buckets with 128 vBuckets is a new feature that provides the advantages of the Magma storage engine while reducing the minimum memory quota. +Before Couchbase Server 8.0, Magma only supported using 1024 vBuckets and had a minimum memory quota of 1{nbsp}GiB per node. +Buckets that use Magma with 128 vBuckets have a minimum memory quota of 100{nbsp}MiB per node, which is the same as Couchstore. + NOTE: These changes do not affect Couchbase Server Community Edition because it does not support the Magma storage engine. + This change in the default storage engine does not affect existing buckets. -You can still create buckets that use the Couchstore storage engine by explicitly specifying it as the storage backend during bucket creation. +You can still create buckets that use the Couchstore storage engine or the Magma st5orage engine with 1024 vBuckets by explicitly specifying them when you create the bucket. + See xref:learn:buckets-memory-and-storage/storage-engines.adoc[] for more information about storage engines. @@ -97,8 +97,8 @@ XDCR in pre-8.0 clusters only supports replication between buckets that contain Pre-8.0 versions of Couchbase Server only support Couchstore and Magma buckets with 1024 vBuckets (or 64 vBuckets on macOS). + -If you're manually deploying a new cluster, be sure to set the number of vBuckets to 1024 for any Magma bucket you need to replicate with a pre-8.0 cluster. -If you have a deployment script that creates Magma buckets for replication with pre-8.0 clusters, have it set the number of vBuckets to 1024 when it creates Magma buckets. +If you're manually deploying a new cluster, set the number of vBuckets to 1024 for any Magma bucket you need to replicate with a pre-8.0 cluster. +If you have a deployment script that creates Magma buckets for replication with pre-8.0 clusters, have it set the number of vBuckets to 1024. To set this value, use the `numVbuckets` parameter in xref:rest-api:rest-bucket-create.adoc#numvbuckets[the REST API] or `--num-vbuckets` in the xref:cli:cbcli/couchbase-cli-bucket-create.adoc[`couchbase-cli` command line tool]. ==== diff --git a/modules/manage/pages/manage-buckets/create-bucket.adoc b/modules/manage/pages/manage-buckets/create-bucket.adoc index aa14da55eb..64007792d1 100644 --- a/modules/manage/pages/manage-buckets/create-bucket.adoc +++ b/modules/manage/pages/manage-buckets/create-bucket.adoc @@ -81,8 +81,8 @@ It must also be equal to or greater than the minimum memory quota required by yo + Your setting should also meet or surpass the memory resident requirement of the storage backend for your anticipated dataset size. For example, Magma has a minimum memory-to-data ratio of 1% of the data size. -Suppose you expect the dataset in your Magma bucket to be 5{nbsp}TB. -Then set the memory quota to at least 64{nbsp}GiB. +Suppose you expect the dataset in your Magma bucket to be 5{nbsp}TiB. +Then set the memory quota to at least 51{nbsp}GiB. For more information, see xref:learn:buckets-memory-and-storage/memory.adoc#bucket-memory[Bucket Memory Quotas]. [start="8"] From 5e1b9c82b0b08ac6295ea7d38614e7a892e84e82 Mon Sep 17 00:00:00 2001 From: Gary Gray <137797428+ggray-cb@users.noreply.github.com> Date: Fri, 6 Jun 2025 14:02:34 -0400 Subject: [PATCH 4/5] Fixing 1% of 5TiB description. --- .../pages/buckets-memory-and-storage/storage-engines.adoc | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/modules/learn/pages/buckets-memory-and-storage/storage-engines.adoc b/modules/learn/pages/buckets-memory-and-storage/storage-engines.adoc index 2c248fd2b3..f4f98bdc41 100644 --- a/modules/learn/pages/buckets-memory-and-storage/storage-engines.adoc +++ b/modules/learn/pages/buckets-memory-and-storage/storage-engines.adoc @@ -19,16 +19,16 @@ For example, using NVMe SSDs gives better performance than spinning drives. When you create a bucket using the Magma storage engine, you choose the number of xref:learn:buckets-memory-and-storage/vbuckets.adoc[vBuckets] a bucket uses. Magma supports two vBucket configurations: 128 or 1024. -This choice affects the minimum memory requirements for the bucket. +This choice affects the minimum memory quota for the bucket. The 128 vBucket configuration is the default for new buckets in Couchbase Server Enterprise Edition 8.0 and later. -It has a minimum memory requirement of 100{nbsp}MB per node. +It has a minimum memory quota of 100{nbsp}MiB per node. NOTE: Magma buckets with 128 vBuckets are only available in clusters that have fully migrated to Couchbase Server 8.0 or later. -Magma using 1024 vBuckets requires a minimum of 1{nbsp}GiB of memory per node. +Magma using 1024 vBuckets has a minimum memory quota of 1{nbsp}GiB per node. As your dataset grows, Magma has a minimum memory-to-data ratio of 1%. -For example, a node with 5{nbsp}TB data in a Magma bucket must have 64{nbsp}GiB of RAM allocated to the bucket. +For example, a node with 5{nbsp}TiB data in a Magma bucket must allocate at least 51{nbsp}GiB of RAM for the bucket. === Magma Writer Thread Settings From f83b0042bc6c686bc72dadf5f71c641d3098dc9b Mon Sep 17 00:00:00 2001 From: Gary Gray <137797428+ggray-cb@users.noreply.github.com> Date: Fri, 6 Jun 2025 14:47:56 -0400 Subject: [PATCH 5/5] Clarified some examples. --- modules/manage/pages/manage-buckets/create-bucket.adoc | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/modules/manage/pages/manage-buckets/create-bucket.adoc b/modules/manage/pages/manage-buckets/create-bucket.adoc index 64007792d1..438b04e4eb 100644 --- a/modules/manage/pages/manage-buckets/create-bucket.adoc +++ b/modules/manage/pages/manage-buckets/create-bucket.adoc @@ -288,7 +288,7 @@ image::manage-buckets/addDataBucketDialogExpandedForEphemeral.png[,350,align=cen [#create-bucket-with-the-cli] == Create a Bucket with the CLI -To create a bucket with the Couchbase CLI, use the `bucket-create` command. +To create a bucket with the Couchbase command-line tool, use the `bucket-create` command. For example: @@ -306,7 +306,7 @@ For example: --enable-flush 0 ---- -The preceding example creates a `Couchbase` bucket named `testBucket`, with a RAM size of `1024`. +The preceding example creates a `Couchbase` bucket named `testBucket`, with a RAM size of `1024` with the default storage backed (Magma with 128 vBucket). It sets a Maximum Time-to-Live and disables Flush. It also sets a Minimum Durability Level of `persistToMajority`. @@ -331,5 +331,6 @@ curl -v -X POST http://10.143.201.101:8091/pools/default/buckets \ The preceding example creates a `Couchbase` bucket named `testBucket`, with a RAM size of `512`. It sets a Minimum Durability Level of `majorityAndPersistActive`. +This bucket uses the default storage backend (Magma with 128 vBuckets). For more information about the `/pools/default/buckets` endpoint and its parameters, see xref:rest-api:rest-bucket-create.adoc[Creating and Editing Buckets] in the Buckets API reference.