This feature is in preview and subject to change. To share feedback and/or issues, contact Support.
New in v23.2: This page gives an overview of cluster virtualization in CockroachDB v23.2. Cluster virtualization allows you to separate a cluster’s control plane from its data plane. The cluster’s control plane manages cluster nodes and node-to-node traffic, while its data plane reads data from and writes data to the cluster’s storage.Cluster virtualization is only necessary if you want to use physical cluster replication (PCR). For details on how PCR works, refer to the Technical Overview.When cluster virtualization is disabled, the control plane and data plane are unified, and the cockroach process on a node handles all system and user activity, and manages the cluster’s control plane and data plane. When cluster virtualization is enabled, the cockroach process on a node runs both a system virtual cluster and one or more virtual clusters.
The system virtual cluster manages the cluster’s control plane and virtual clusters. Administrative access to the system virtual cluster can be restricted. Certain low-level cluster settings can be modified only on the system virtual cluster.
A virtual cluster manages its own data plane. Administrative access on a virtual cluster does not grant any access to the system virtual cluster. Some settings are scoped to a virtual cluster rather than the system virtual cluster.
Cluster virtualization is enabled automatically when you configure PCR.
Differences when cluster virtualization is enabled
When cluster virtualization is enabled, CockroachDB’s behavior changes in several key areas, as described in the following sections. For details about working with a cluster with cluster virtualization enabled, refer to Work with virtual clusters.
When cluster virtualization is enabled, when you connect using cockroach sql or the DB Console, you are connected to the default virtual cluster. To connect to the system virtual cluster, you set -ccluster=system in the connection string (for SQL clients) or the DB Console URL. For details, refer to Work with virtual clusters.
If a SQL user has been added to the system virtual cluster and one or more virtual clusters with the same username and password, that user can select which to connect to from the top of the DB Console.
By default, when connecting to a cluster using a SQL client or the DB Console, if a user does not specify whether to connect to a virtual cluster or the system virtual cluster, they are connected to the default virtual cluster.To grant access to the system virtual cluster, you must connect to the system virtual cluster as a user with the admin role, then grant the admin role to the SQL user. For details, refer to Work with virtual clusters.
To upgrade to a new major version when cluster virtualization is enabled, you must first replace the binary on each node and restart the node, finalize the upgrade on the system virtual cluster to upgrade it, then finalize the upgrade on a virtual cluster to upgrade it. This allows you to roll back an upgrade of the system virtual cluster without impacting schemas or data in virtual clusters. The system virtual cluster can be at most one major version ahead of virtual clusters. For example, a system virtual cluster on CockroachDB v24.1 can have virtual clusters on CockroachDB v23.2.For details, refer to Work with virtual clusters.
When cluster virtualization is enabled, cluster log messages and metrics are scoped to a virtual cluster or to the system virtual cluster, and are labeled with the name of the virtual cluster they relate to.For details and examples, refer to:
When connected to a virtual cluster from the DB Console:
Most pages and views are scoped to a virtual cluster.
By default, the DB Console displays only metrics about that virtual cluster, and excludes metrics for other virtual clusters and the system virtual cluster. DB Console pages related to SQL activity and jobs are visible only from a virtual cluster and not from the system virtual cluster.
By default, some pages and views are by default viewable only from the system virtual cluster, including those pertaining to overall cluster health.
For more details, including how to adjust the DB Console’s behavior, refer to Work with virtual clusters.
In CockroachDB v23.2, cluster virtualization has the following limitations:
A single physical cluster can have a maximum of one system virtual cluster and one virtual cluster.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"CockroachDB","colors":{"primary":"#9059FF","light":"#9059FF","dark":"#9059FF"},"logo":{"light":"https://mintcdn.com/cockroachlabs/4WvUnbVuGZfqM4kW/images/CockroachLabs_Wordmark_Black.png?fit=max\u0026auto=format\u0026n=4WvUnbVuGZfqM4kW\u0026q=85\u0026s=54ccae625c9986bf1df8ddc7b2c571f0","dark":"https://mintcdn.com/cockroachlabs/4WvUnbVuGZfqM4kW/images/CockroachLabs_Wordmark_White.png?fit=max\u0026auto=format\u0026n=4WvUnbVuGZfqM4kW\u0026q=85\u0026s=0dd9b66973a1c7d3dd72aa67b6094efe","href":"https://www.cockroachlabs.com/"},"favicon":{"light":"https://mintcdn.com/cockroachlabs/2yihO7vMXnL0G_07/images/favicon.svg?fit=max\u0026auto=format\u0026n=2yihO7vMXnL0G_07\u0026q=85\u0026s=01f9aa59c9f275e1f35cd424a27d2551","dark":"https://mintcdn.com/cockroachlabs/2yihO7vMXnL0G_07/images/favicon.svg?fit=max\u0026auto=format\u0026n=2yihO7vMXnL0G_07\u0026q=85\u0026s=01f9aa59c9f275e1f35cd424a27d2551"},"api":{"examples":{"defaults":"required","languages":["curl"]}},"appearance":{"default":"light"},"navbar":{"primary":{"type":"button","label":"Get started free","href":"https://cockroachlabs.cloud/signup?referralId=cc_nav_global\u0026_ga=2.242886210.1147139380.1759903632-41552699.1759903632"}},"footer":{"socials":{"youtube":"https://www.youtube.com/@cockroachdb","x":"https://x.com/CockroachDB","linkedin":"https://www.linkedin.com/company/cockroach-labs/mycompany/verification","instagram":"https://www.instagram.com/cockroachdb"},"links":[{"header":"Product","items":[{"label":"CockroachDB","href":"https://www.cockroachlabs.com/product"},{"label":"CockroachDB Cloud","href":"https://www.cockroachlabs.com/product/cockroachcloud"},{"label":"Compare","href":"https://www.cockroachlabs.com/compare"},{"label":"Pricing","href":"https://www.cockroachlabs.com/pricing"},{"label":"Get CockroachDB","href":"https://www.cockroachlabs.com/get-started-cockroachdb"},{"label":"Sign In","href":"https://cockroachlabs.cloud/"}]},{"header":"Resources","items":[{"label":"Guides","href":"https://resources.cockroachlabs.com/guides"},{"label":"Webinars","href":"https://www.cockroachlabs.com/community/webinars"},{"label":"Videos","href":"https://www.cockroachlabs.com/resources/video"},{"label":"Architecture Overview","href":"https://www.cockroachlabs.com/docs/stable/architecture/overview"},{"label":"FAQ","href":"https://www.cockroachlabs.com/docs/stable/frequently-asked-questions"},{"label":"Security","href":"https://www.cockroachlabs.com/security"}]},{"header":"Learn \u0026 Support","items":[{"label":"Docs","href":"https://www.cockroachlabs.com/docs"},{"label":"University","href":"https://learn.cockroachlabs.com/"},{"label":"Developers","href":"https://www.cockroachlabs.com/developers"},{"label":"Forum","href":"https://forum.cockroachlabs.com/"},{"label":"Slack","href":"https://cockroa.ch/slack"},{"label":"Support Portal","href":"https://support.cockroachlabs.com/hc/en-us"},{"label":"Contact Us","href":"https://www.cockroachlabs.com/contact"}]},{"header":"Company","items":[{"label":"About","href":"https://www.cockroachlabs.com/about"},{"label":"Blog","href":"https://www.cockroachlabs.com/blog"},{"label":"Careers","href":"https://www.cockroachlabs.com/careers"},{"label":"Customers","href":"https://www.cockroachlabs.com/customers"},{"label":"News","href":"https://www.cockroachlabs.com/press"},{"label":"Privacy","href":"https://www.cockroachlabs.com/privacy"},{"label":"Terms of Use","href":"https://www.cockroachlabs.com/website-terms-of-use"}]}]},"fonts":{"heading":{"family":"Poppins"},"body":{"family":"Open Sans"}},"styling":{"eyebrows":"breadcrumbs","codeblocks":{"theme":{"light":"catppuccin-mocha","dark":"catppuccin-mocha"}},"latex":true},"integrations":{"gtm":{"tagId":"GTM-NR8LC4"}},"errors":{"404":{"redirect":false,"title":"Page not found","description":"The page you're looking for doesn't exist. [Return to docs home](/index.html)."}},"contextual":{"options":["copy","view","chatgpt","claude","perplexity","mcp","cursor","vscode"],"display":"header"},"interaction":{"drilldown":false},"navigation":{"global":{"anchors":[{"anchor":"University","icon":"graduation-cap","href":"https://learn.cockroachlabs.com/"}]},"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"cockroachlabs","hasAudioNarration":false,"actualSubdomain":"cockroachlabs","customDomains":["docs.cockroachlabs.com"],"gitSource":{"type":"github","owner":"cockroachlabs","repo":"docs","deployBranch":"main","contentDirectory":"cockroachlabs-preview-main","isPrivate":true,"mountPath":"","label":""},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"REMOVE_BRANDING":{"status":"ENABLED"},"CONTEXTUAL_FEEDBACK":{"status":"ENABLED"},"CODE_SNIPPET_FEEDBACK":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6af4bb21d7a808c67a4ac795","clientVersion":"0.0.4111","searchFilterCounts":[{"language":"default","tag":"CockroachDB","count":6951},{"language":"default","tag":"Docs","count":3217},{"language":"default","tag":"SQL","count":2566},{"language":"default","tag":"Statements","count":1714},{"language":"default","tag":"Self-Hosted Deployments","count":1457},{"language":"default","tag":"Reference","count":774},{"language":"default","tag":"Cloud Deployments","count":616},{"language":"default","tag":"Endpoints","count":528},{"language":"default","tag":"Cloud API Reference","count":518},{"language":"default","tag":"Get Started","count":441}],"searchSettings":{"isFiltersEnabled":true,"showContentSnippets":true,"fullPageSearch":true}},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-rbac-roles","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-metadata","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":true},"customCss":[{"filePath":"styles.css","content":":root{--inline-code-bg-light: rgb(var(--gray-200) / 0.92);--inline-code-bg-dark: rgb(255 255 255 / 0.08)}.prose :not(pre)>code{background-color:var(--inline-code-bg-light)!important}.dark .prose :not(pre)>code{background-color:var(--inline-code-bg-dark)!important}@media (min-width: 1536px){#navbar>.max-w-8xl,[class*=\"peer-[.is-not-custom]:peer-[.is-not-center]:max-w-8xl\"]{width:100%!important;max-width:none!important}}#navigation-items{display:flex;flex-direction:column}#navigation-items>ul:not(.sidebar-group){order:1;margin-top:1.5rem}.crdb-metrics-table table{table-layout:fixed!important;width:100%!important;min-width:0!important;max-width:100%!important;border-collapse:collapse}.crdb-metrics-table table td,.crdb-metrics-table table th{min-width:0!important;overflow-wrap:anywhere;word-break:break-word}.crdb-fixed-table table{table-layout:fixed!important;width:100%!important;min-width:0!important;max-width:100%!important;border-collapse:collapse}.crdb-fixed-table table td,.crdb-fixed-table table th{min-width:0!important;overflow-wrap:anywhere;word-break:break-word}.bg-cover{background-size:cover;background-repeat:no-repeat;background-position:center center}.bg-cover__bg-3-1{background-image:url(\"https://cockroach-labs-docs.imgix.net/bg-3-1.png?auto=format,compress\u0026w=1200\u0026q=40\")}.home-header{border-radius:0.5rem;margin-bottom:2rem!important;padding:2rem}.card{border:1px solid #e5e7eb;border-radius:0.75rem;background-color:white}.dark .card{background-color:#0d1117;border-color:rgba(255, 255, 255, 0.1)}.card-link{text-decoration:none!important;overflow:hidden}.card-link:hover{outline:1px solid rgba(105, 51, 255, 0.55);outline-offset:-1px}.card-link,.card-link:hover{transform:none!important;box-shadow:none!important}.card-link a,.card-link a:hover,.card-link h3,.card-link h3:hover,.card-link p,.card-link p:hover{border:0!important;text-decoration:none!important;transform:none!important}.card-link a{display:block;width:100%}.card-link h3{font-size:1rem!important;font-weight:600!important}.card-body{padding:1.5rem}.landing-column-title{margin-bottom:1rem}.overline{text-transform:uppercase;letter-spacing:0.05em}.btn-redirect{display:inline-flex;align-items:center;gap:0.5rem;padding:0.75rem 1.5rem;border:2px solid #e5e7eb;border-radius:0.5rem;text-decoration:none;transition:border-color 0.2s}.btn-redirect:hover{border-color:#6933ff}.btn-block{display:flex;width:100%;justify-content:center}.dark .btn-redirect{border-color:rgba(255, 255, 255, 0.1)}.article-section-title{font-size:1.25rem!important}.article-lists h3{font-size:0.875rem!important;font-weight:600!important;text-transform:uppercase;letter-spacing:0.05em;color:#6b7280!important}.dark .article-lists h3{color:#9ca3af!important}.article-lists ul{font-size:0.875rem}.shadow{box-shadow:0 0.5rem 1rem rgba(0, 0, 0, 0.15)}.bg-dark-wing{background-color:#152849;border-radius:0.5rem}.text-ice-temple{color:#1bf8ec!important;display:inline-flex;align-items:center;gap:0.375rem}.text-ice-temple img{display:inline-block;margin:0}.bg-dark-wing h2{font-size:clamp(1.25rem, 1rem + 1.5vw, 1.75rem)!important}@media (max-width: 576px){.card-body.bg-dark-wing{padding:1.25rem!important}}.text-decoration-none{text-decoration:none!important}.text-muted{color:#6b7280!important}.card-link .card-desc{font-size:0.9375rem!important;font-weight:400!important;line-height:1.5!important;text-align:left!important;color:#4b5563!important;width:100%;margin-top:0.5rem}.dark .card-link .card-desc{color:#9ca3af!important}.report-tag{display:inline-block;padding:0.25rem 0.75rem;border-radius:0.25rem;background-color:rgba(84, 42, 189, 0.08);color:#542abd}.dark .report-tag{background-color:rgba(84, 42, 189, 0.3);color:#b39dff}.resilience-report-img{background-image:url(\"/images/state-resilience.png\");background-size:cover;background-position:center;min-height:150px;border-radius:0.5rem}.row{display:flex!important;flex-wrap:wrap;margin-left:-0.75rem;margin-right:-0.75rem}.display-flex{display:flex!important}.col-lg-4{flex:0 0 auto;width:100%;padding-left:0.75rem;padding-right:0.75rem}@media (min-width: 992px){.col-lg-4{width:33.333333%!important}}.col-lg-3,.col-sm-6,.col-xs-12{flex:0 0 auto;width:100%!important;padding-left:0.75rem;padding-right:0.75rem}@media (min-width: 992px){.col-lg-3{width:25%!important}}@media (min-width: 576px){.col-sm-6{width:50%!important}}.col-12{width:100%!important}.col-lg-12{width:100%;padding-left:0.75rem;padding-right:0.75rem}@media (min-width: 992px){.col-lg-12{width:100%!important}}.col-md-4,.col-md-8{flex:0 0 auto;width:100%;padding-left:0.75rem;padding-right:0.75rem}@media (min-width: 768px){.col-md-4{width:33.333333%!important}.col-md-8{width:66.666667%!important}}.h-100{height:100%}.d-flex{display:flex}.flex-column{flex-direction:column}.mb-3{margin-bottom:1rem!important}.mb-5{margin-bottom:3rem!important}.pb-5{padding-bottom:3rem!important}.mb-xl-5{margin-bottom:3rem!important}.mt-auto{margin-top:auto!important}.mt-0{margin-top:0!important}.mt-2{margin-top:0.5rem!important}.mt-3{margin-top:1rem!important}.mt-5:not(.code-block){margin-top:3rem!important}.code-block.mb-8{margin-bottom:calc(var(--spacing) * 5)}.pt-5{padding-top:3rem!important}.m-0{margin:0!important}.ml-2{margin-left:0.5rem!important}.mb-0{margin-bottom:0!important}.mb-2{margin-bottom:0.5rem!important}.mb-4{margin-bottom:1.5rem!important}.p-2{padding:0.5rem!important}.p-3{padding:1rem!important}.p-4{padding:1.5rem!important}.pb-3{padding-bottom:1rem!important}.pb-4{padding-bottom:1.5rem!important}.ml-1{margin-left:0.25rem!important}.mr-auto{margin-right:auto!important}.justify-content-center{justify-content:center!important}.align-items-center{align-items:center!important}@media (min-width: 1200px){.p-xl-5{padding:3rem!important}}.mx-0{margin-left:0!important;margin-right:0!important}.text-center{text-align:center}.text-white{color:white!important}.text-black{color:black!important}.dark .text-black{color:white!important}.container{width:100%;max-width:1200px;margin-left:auto;margin-right:auto;padding-left:1rem;padding-right:1rem}.card-header-overlap-text{position:relative}@media (min-width: 768px){.p-md-5{padding:3rem!important}}@media (min-width: 992px){.d-lg-flex{display:flex!important}.mb-lg-0{margin-bottom:0!important}}.prose table{border-collapse:collapse!important}.prose table th,.prose table td{border:1px solid rgb(var(--gray-200))!important}.dark .prose table th,.dark .prose table td{border-color:rgb(var(--gray-700) / 0.5)!important}.prose table th{padding:0.571429em;font-weight:600;vertical-align:bottom;color:var(--tw-prose-headings);text-align:left}.prose table th.center-align{text-align:center}.prose table td{padding:0.571429em;vertical-align:baseline}[data-component-part=\"accordion-description\"]{font-size:0.875rem!important}.accordion.mb-3{margin-bottom:0.25rem!important}@media (max-width: 991.98px){[id^=\"kapa-widget-container\"] button{width:36px!important;height:36px!important;min-width:36px!important;padding:0!important;font-size:0!important}[id^=\"kapa-widget-container\"] button svg{width:18px!important;height:18px!important}[id^=\"kapa-widget-container\"] button span{display:none!important}}table.crdb-fixed-table{table-layout:fixed!important;min-width:0!important;width:100%}table.crdb-fixed-table td,table.crdb-fixed-table th{min-width:0!important;overflow-wrap:break-word;word-break:normal}.sql-grammar svg .line{fill:none;stroke:#262626}.sql-grammar svg .bold-line{stroke:#0A0A0A;shape-rendering:crispEdges;stroke-width:2}.sql-grammar svg .thin-line{stroke:#0F0F0F;shape-rendering:crispEdges}.sql-grammar svg .filled{fill:#262626;stroke:none}.sql-grammar svg text.terminal{font-family:Verdana, Sans-serif;font-size:12px;fill:#0A0A0A;font-weight:bold}.sql-grammar svg text.nonterminal{font-family:Verdana, Sans-serif;font-size:12px;fill:#0055FF}.sql-grammar svg text.regexp{font-family:Verdana, Sans-serif;font-size:12px;fill:#0F0F0F}.sql-grammar svg rect,.sql-grammar svg circle,.sql-grammar svg polygon{fill:#262626;stroke:#262626}.sql-grammar svg rect.terminal{fill:#ffffff;stroke:#262626}.sql-grammar svg rect.nonterminal{fill:#FFFFFF;stroke:#262626}.sql-grammar svg rect.text{fill:none;stroke:none}.sql-grammar svg polygon.regexp{fill:#FFFFFF;stroke:#262626}.sql-grammar svg{background-color:#ffffff}.sql-grammar a[name]::before{content:'';display:block;height:80px;margin:-80px 0 0}.sql-grammar a[name]:focus{outline:0}pre[language=\"sql\"][data-crdb-prompt-stripped] code::before{content:\"> \";color:#94e2d5;user-select:none}.mark-yes{color:#008a5e;font-weight:600}.dark .mark-yes{color:#3ddc97}"},{"filePath":"collapse-nav.css","content":"html:not(.crl-nav-off) [data-layout-item=\"sidebar\"] li[data-title]:not([data-active]):not([data-crl-keep])>button+ul,html:not(.crl-nav-off) [data-layout-item=\"mobile-nav\"] li[data-title]:not([data-active]):not([data-crl-keep])>button+ul{display:none}html:not(.crl-nav-off) [data-layout-item=\"sidebar\"] li[data-title]:not([data-active]):not([data-crl-keep])>button svg,html:not(.crl-nav-off) [data-layout-item=\"mobile-nav\"] li[data-title]:not([data-active]):not([data-crl-keep])>button svg{rotate:none!important;transform:none!important}"}],"page":{"pagePath":"docs/v23.2/cluster-virtualization-overview","slug":"/docs/v23.2/cluster-virtualization-overview","pageMetadata":{"title":"Cluster Virtualization Overview","sidebarTitle":"Overview","old_description":"Learn more about cluster virtualization and how it facilitates physical cluster replication.","canonical":"https://docs.cockroachlabs.com/docs/stable/cluster-virtualization-overview","description":null,"href":"/docs/v23.2/cluster-virtualization-overview"},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];const InlineImage=({src,alt=``,height=`1.6em`})=>{return _jsx(`img`,{noZoom:true,src,alt,style:{display:`inline`,verticalAlign:`start`,height,margin:`0`}})};const version=`v23.2`;function _createMdxContent(props){const _components={a:`a`,code:`code`,em:`em`,li:`li`,p:`p`,strong:`strong`,ul:`ul`,..._provideComponents(),...props.components},{Heading,Note,Tip,_MdxComponentBoundary}=_components;if(!Heading)_missingMdxReference(`Heading`,true);if(!Note)_missingMdxReference(`Note`,true);if(!Tip)_missingMdxReference(`Tip`,true);if(!_MdxComponentBoundary)_missingMdxReference(`_MdxComponentBoundary`,true);return _jsxs(_Fragment,{children:[_jsx(Note,{children:_jsxs(_components.p,{children:[_jsxs(_components.strong,{children:[`This feature is in `,_jsx(_components.a,{href:`/docs/releases/cockroachdb-feature-availability`,children:`preview`})]}),` and subject to change. To share feedback and/or issues, contact `,_jsx(_components.a,{href:`https://support.cockroachlabs.com`,children:`Support`}),`.`]})}),`\n`,_jsxs(_components.p,{children:[_jsx(_MdxComponentBoundary,{name:`InlineImage`,children:_jsx(InlineImage,{alt:`Megaphone`,src:`/images/common/icon-megaphone.png`})}),` New in v23.2: This page gives an overview of `,_jsx(_components.em,{children:`cluster virtualization`}),` in CockroachDB v23.2. Cluster virtualization allows you to separate a cluster’s `,_jsx(_components.em,{children:`control plane`}),` from its `,_jsx(_components.em,{children:`data plane`}),`. The cluster’s control plane manages cluster nodes and node-to-node traffic, while its data plane reads data from and writes data to the cluster’s storage.`]}),`\n`,_jsxs(_components.p,{children:[`Cluster virtualization is only necessary if you want to use `,_jsx(_components.a,{href:`/docs/v23.2/physical-cluster-replication-overview`,children:`physical cluster replication (PCR)`}),`. For details on how PCR works, refer to the `,_jsx(_components.a,{href:`/docs/v23.2/physical-cluster-replication-technical-overview`,children:`Technical Overview`}),`.`]}),`\n`,_jsxs(_components.p,{children:[`When cluster virtualization is disabled, the control plane and data plane are unified, and the `,_jsx(_components.code,{children:`cockroach`}),` process on a node handles all system and user activity, and manages the cluster’s control plane and data plane. When cluster virtualization is enabled, the `,_jsx(_components.code,{children:`cockroach`}),` process on a node runs both a `,_jsx(_components.em,{children:`system virtual cluster`}),` and one or more `,_jsx(_components.em,{children:`virtual clusters`}),`.`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`The system virtual cluster manages the cluster’s control plane and virtual clusters. Administrative access to the system virtual cluster can be restricted. Certain low-level cluster settings can be modified only on the system virtual cluster.`}),`\n`,_jsx(_components.li,{children:`A virtual cluster manages its own data plane. Administrative access on a virtual cluster does not grant any access to the system virtual cluster. Some settings are scoped to a virtual cluster rather than the system virtual cluster.`}),`\n`]}),`\n`,_jsx(Tip,{children:_jsxs(_components.p,{children:[`Cluster virtualization is enabled automatically when you configure `,_jsx(_components.a,{href:`/docs/v23.2/physical-cluster-replication-overview`,children:`PCR`}),`.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`differences-when-cluster-virtualization-is-enabled`,children:`Differences when cluster virtualization is enabled`}),`\n`,_jsxs(_components.p,{children:[`When cluster virtualization is enabled, CockroachDB’s behavior changes in several key areas, as described in the following sections. For details about working with a cluster with cluster virtualization enabled, refer to `,_jsx(_components.a,{href:`/docs/v23.2/work-with-virtual-clusters`,children:`Work with virtual clusters`}),`.`]}),`\n`,_jsx(Heading,{level:`3`,id:`connecting-to-a-cluster`,children:`Connecting to a cluster`}),`\n`,_jsxs(_components.p,{children:[`When cluster virtualization is enabled, when you connect using `,_jsx(_components.code,{children:`cockroach sql`}),` or the `,_jsx(_components.a,{href:`/docs/v23.2/ui-overview`,children:`DB Console`}),`, you are connected to the default virtual cluster. To connect to the system virtual cluster, you set `,_jsx(_components.code,{children:`-ccluster=system`}),` in the connection string (for SQL clients) or the DB Console URL. For details, refer to `,_jsx(_components.a,{href:`/docs/v23.2/work-with-virtual-clusters#connect-to-a-virtual-cluster`,children:`Work with virtual clusters`}),`.`]}),`\n`,_jsx(Tip,{children:_jsx(_components.p,{children:`If a SQL user has been added to the system virtual cluster and one or more virtual clusters with the same username and password, that user can select which to connect to from the top of the DB Console.`})}),`\n`,_jsx(Heading,{level:`3`,id:`cluster-settings`,children:`Cluster settings`}),`\n`,_jsxs(_components.p,{children:[`When `,_jsx(_components.a,{href:`/docs/v23.2/cluster-virtualization-overview`,children:`cluster virtualization`}),` is enabled, each `,_jsx(_components.a,{href:`/docs/v23.2/cluster-settings`,children:`cluster setting`}),` is scoped to a virtual cluster or the system virtual cluster.`]}),`\n`,_jsxs(_components.p,{children:[`For more details, including the scope of each cluster setting, refer to `,_jsx(_components.a,{href:`/docs/v23.2/cluster-virtualization-setting-scopes`,children:`Cluster Setting Scopes with Cluster Virtualization enabled`}),`.`]}),`\n`,_jsx(Heading,{level:`3`,id:`security`,children:`Security`}),`\n`,_jsx(_components.p,{children:`By default, when connecting to a cluster using a SQL client or the DB Console, if a user does not specify whether to connect to a virtual cluster or the system virtual cluster, they are connected to the default virtual cluster.`}),`\n`,_jsxs(_components.p,{children:[`To grant access to the system virtual cluster, you must connect to the system virtual cluster as a user with the `,_jsx(_components.code,{children:`admin`}),` role, then grant the `,_jsx(_components.code,{children:`admin`}),` role to the SQL user. For details, refer to `,_jsx(_components.a,{href:`/docs/v23.2/work-with-virtual-clusters#grant-access-to-the-system-virtual-cluster`,children:`Work with virtual clusters`}),`.`]}),`\n`,_jsx(Heading,{level:`3`,id:`upgrades`,children:`Upgrades`}),`\n`,_jsxs(_components.p,{children:[`To upgrade to a new major version when cluster virtualization is enabled, you must first replace the binary on each node and restart the node, `,_jsx(_components.a,{href:`/docs/v23.2/upgrade-cockroach-version#step-6-finish-the-upgrade`,children:`finalize`}),` the upgrade on the system virtual cluster to upgrade it, then finalize the upgrade on a virtual cluster to upgrade it. This allows you to roll back an upgrade of the system virtual cluster without impacting schemas or data in virtual clusters. The system virtual cluster can be at most one major version ahead of virtual clusters. For example, a system virtual cluster on CockroachDB v24.1 can have virtual clusters on CockroachDB v23.2.`]}),`\n`,_jsxs(_components.p,{children:[`For details, refer to `,_jsx(_components.a,{href:`/docs/v23.2/work-with-virtual-clusters#upgrade-a-cluster`,children:`Work with virtual clusters`}),`.`]}),`\n`,_jsx(Heading,{level:`3`,id:`observability`,children:`Observability`}),`\n`,_jsx(_components.p,{children:`When cluster virtualization is enabled, cluster log messages and metrics are scoped to a virtual cluster or to the system virtual cluster, and are labeled with the name of the virtual cluster they relate to.`}),`\n`,_jsx(_components.p,{children:`For details and examples, refer to:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:_jsx(_components.a,{href:`/docs/v23.2/work-with-virtual-clusters#observability`,children:`Work with virtual clusters`})}),`\n`,_jsx(_components.li,{children:_jsx(_components.a,{href:`/docs/v23.2/cluster-virtualization-setting-scopes`,children:`Cluster setting scopes with Cluster Virtualization enabled`})}),`\n`,_jsx(_components.li,{children:_jsx(_components.a,{href:`/docs/v23.2/cluster-virtualization-metric-scopes`,children:`Cluster metric scopes with Cluster Virtualization enabled`})}),`\n`]}),`\n`,_jsx(_components.p,{children:`When connected to a virtual cluster from the DB Console:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Most pages and views are scoped to a virtual cluster.`}),`\n`,_jsx(_components.li,{children:`By default, the DB Console displays only metrics about that virtual cluster, and excludes metrics for other virtual clusters and the system virtual cluster. DB Console pages related to SQL activity and jobs are visible only from a virtual cluster and not from the system virtual cluster.`}),`\n`,_jsx(_components.li,{children:`By default, some pages and views are by default viewable only from the system virtual cluster, including those pertaining to overall cluster health.`}),`\n`]}),`\n`,_jsxs(_components.p,{children:[`For more details, including how to adjust the DB Console’s behavior, refer to `,_jsx(_components.a,{href:`/docs/v23.2/work-with-virtual-clusters#observability`,children:`Work with virtual clusters`}),`.`]}),`\n`,_jsx(Heading,{level:`3`,id:`replication`,children:`Replication`}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.a,{href:`/docs/v23.2/configure-replication-zones`,children:`Replication zones`}),` can be configured only in a virtual cluster, and are not applicable to the `,_jsx(_components.code,{children:`system`}),` virtual cluster.`]}),`\n`,_jsx(Heading,{level:`3`,id:`node-draining`,children:`Node draining`}),`\n`,_jsxs(_components.p,{children:[`When cluster virtualization is enabled, `,_jsx(_components.a,{href:`/docs/v23.2/node-shutdown#drain-a-node-manually`,children:`draining a node`}),` can cause a temporary SQL latency spike.`]}),`\n`,_jsx(Heading,{level:`2`,id:`see-also`,children:`See also`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:_jsx(_components.a,{href:`/docs/v23.2/work-with-virtual-clusters`,children:`Work with virtual clusters`})}),`\n`,_jsx(_components.li,{children:_jsx(_components.a,{href:`/docs/v23.2/cluster-virtualization-setting-scopes`,children:`Cluster Setting Scopes`})}),`\n`,_jsx(_components.li,{children:_jsx(_components.a,{href:`/docs/v23.2/cluster-virtualization-metric-scopes`,children:`Cluster Metric Scopes`})}),`\n`,_jsx(_components.li,{children:_jsx(_components.a,{href:`/docs/v23.2/physical-cluster-replication-overview`,children:`Physical Cluster Replication`})}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`known-limitations`,children:`Known limitations`}),`\n`,_jsx(_components.p,{children:`In CockroachDB v23.2, cluster virtualization has the following limitations:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`A single physical cluster can have a maximum of one system virtual cluster and one virtual cluster.`}),`\n`]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{InlineImage,version,default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"codeStyling":{"theme":{"light":"catppuccin-mocha","dark":"catppuccin-mocha"}},"config":{},"pageMetadata":{"title":"Cluster Virtualization Overview","sidebarTitle":"Overview","old_description":"Learn more about cluster virtualization and how it facilitates physical cluster replication.","canonical":"https://docs.cockroachlabs.com/docs/stable/cluster-virtualization-overview","description":null,"href":"/docs/v23.2/cluster-virtualization-overview"}}},"mdxSourceWithNoJs":null,"noJsSplices":[[147,297,")=>null;const versio"]]},"mdxExtracts":{"tableOfContents":[{"title":"Differences when cluster virtualization is enabled","slug":"differences-when-cluster-virtualization-is-enabled","depth":2,"children":[{"title":"Connecting to a cluster","slug":"connecting-to-a-cluster","depth":3,"children":[]},{"title":"Cluster settings","slug":"cluster-settings","depth":3,"children":[]},{"title":"Security","slug":"security","depth":3,"children":[]},{"title":"Upgrades","slug":"upgrades","depth":3,"children":[]},{"title":"Observability","slug":"observability","depth":3,"children":[]},{"title":"Replication","slug":"replication","depth":3,"children":[]},{"title":"Node draining","slug":"node-draining","depth":3,"children":[]}]},{"title":"See also","slug":"see-also","depth":2,"children":[]},{"title":"Known limitations","slug":"known-limitations","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":["/_mintlify/custom/cockroachlabs/4695317e415d4eba/kapa.js","/_mintlify/custom/cockroachlabs/40fb45a3cfe42c92/copy-code-prompt.js","/_mintlify/custom/cockroachlabs/3f343c9e8c40397a/collapse-nav.js"],"subdomain":"cockroachlabs","siteName":"CockroachDB","title":"Cluster Virtualization Overview - CockroachDB","navMaps":{"firstHrefInVersion":{"v26.4":{"href":"/docs/stable/cluster-virtualization-overview","matchLevel":1},"v26.3":{"href":"/docs/v26.3/cluster-virtualization-overview","matchLevel":1,"canonicalOverride":true},"v26.2":{"href":"/docs/v26.2/cluster-virtualization-overview","matchLevel":1,"canonicalOverride":true},"v26.1":{"href":"/docs/v26.1/cluster-virtualization-overview","matchLevel":1,"canonicalOverride":true},"v25.4":{"href":"/docs/v25.4/cluster-virtualization-overview","matchLevel":1,"canonicalOverride":true},"v25.3":{"href":"/docs/v25.3/cluster-virtualization-overview","matchLevel":1,"canonicalOverride":true},"v25.2":{"href":"/docs/v25.2/cluster-virtualization-overview","matchLevel":1,"canonicalOverride":true},"v25.1":{"href":"/docs/v25.1/cluster-virtualization-overview","matchLevel":1,"canonicalOverride":true},"v24.3":{"href":"/docs/v24.3/cluster-virtualization-overview","matchLevel":1,"canonicalOverride":true},"v24.1":{"href":"/docs/v24.1/cluster-virtualization-overview","matchLevel":1,"canonicalOverride":true},"v23.2":{"href":"/docs/v23.2/cluster-virtualization-overview","matchLevel":0},"v23.1":{"href":"/docs/v23.1","matchLevel":4}},"firstHrefInLanguage":{}},"lastModified":"2026-11-11T19:17:03.219Z","originalFileLocation":"docs/v23.2/cluster-virtualization-overview.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"light\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"application-name\" content=\"CockroachDB\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/cockroachlabs/c9BlkJ0WBi2Ma7w-/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/cockroachlabs/c9BlkJ0WBi2Ma7w-/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/cockroachlabs/c9BlkJ0WBi2Ma7w-/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/cockroachlabs/c9BlkJ0WBi2Ma7w-/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/cockroachlabs/c9BlkJ0WBi2Ma7w-/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/cockroachlabs/c9BlkJ0WBi2Ma7w-/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/cockroachlabs/c9BlkJ0WBi2Ma7w-/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/cockroachlabs/c9BlkJ0WBi2Ma7w-/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/cockroachlabs/c9BlkJ0WBi2Ma7w-/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Cluster Virtualization Overview - CockroachDB\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"CockroachDB\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.cockroachlabs.com/docs/stable/cluster-virtualization-overview\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://cockroachlabs.mintlify.site/_mintlify/api/og/v2?division=Cluster+Virtualization\u0026amp;title=Cluster+Virtualization+Overview\u0026amp;theme=4aeed7318cb28bd50868adb3\u0026amp;signature=4138bcdcc2709734327c6e437f6d186cc5197fe2f1f2ea595120050c2f24b1c4\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Cluster Virtualization Overview - CockroachDB\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://cockroachlabs.mintlify.site/_mintlify/api/og/v2?division=Cluster+Virtualization\u0026amp;title=Cluster+Virtualization+Overview\u0026amp;theme=4aeed7318cb28bd50868adb3\u0026amp;signature=4138bcdcc2709734327c6e437f6d186cc5197fe2f1f2ea595120050c2f24b1c4\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/cockroachlabs/c9BlkJ0WBi2Ma7w-/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"CockroachDB\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#9059FF\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.cockroachlabs.com/docs/stable/cluster-virtualization-overview\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/docs/v23.2/cluster-virtualization-overview.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.cockroachlabs.com/#organization\",\"name\":\"CockroachDB\",\"url\":\"https://docs.cockroachlabs.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/cockroachlabs/4WvUnbVuGZfqM4kW/images/CockroachLabs_Wordmark_Black.png?fit=max\u0026auto=format\u0026n=4WvUnbVuGZfqM4kW\u0026q=85\u0026s=54ccae625c9986bf1df8ddc7b2c571f0\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.cockroachlabs.com#website\",\"name\":\"CockroachDB\",\"url\":\"https://docs.cockroachlabs.com\",\"publisher\":{\"@id\":\"https://docs.cockroachlabs.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.cockroachlabs.com/docs/stable/cluster-virtualization-overview#webpage\",\"url\":\"https://docs.cockroachlabs.com/docs/stable/cluster-virtualization-overview\",\"name\":\"Cluster Virtualization Overview\",\"dateModified\":\"2026-11-11T19:17:03.219Z\",\"isPartOf\":{\"@id\":\"https://docs.cockroachlabs.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.cockroachlabs.com/docs/stable/cluster-virtualization-overview#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.cockroachlabs.com/docs/stable/cluster-virtualization-overview#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Cross-Cluster Replication\",\"item\":\"https://docs.cockroachlabs.com/docs/v23.2/physical-cluster-replication-overview\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Physical Cluster Replication\",\"item\":\"https://docs.cockroachlabs.com/docs/v23.2/physical-cluster-replication-overview\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Cluster Virtualization\",\"item\":\"https://docs.cockroachlabs.com/docs/v23.2/cluster-virtualization-overview\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"Cluster Virtualization Overview\",\"item\":\"https://docs.cockroachlabs.com/docs/stable/cluster-virtualization-overview\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.cockroachlabs.com/docs/stable/cluster-virtualization-overview#article\",\"headline\":\"Cluster Virtualization Overview\",\"name\":\"Cluster Virtualization Overview\",\"url\":\"https://docs.cockroachlabs.com/docs/stable/cluster-virtualization-overview\",\"mainEntityOfPage\":{\"@id\":\"https://docs.cockroachlabs.com/docs/stable/cluster-virtualization-overview#webpage\"},\"dateModified\":\"2026-11-11T19:17:03.219Z\",\"publisher\":{\"@id\":\"https://docs.cockroachlabs.com/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.cockroachlabs.com#website\"}}]}\u003c/script>","agentPointerHref":"/docs/v23.2/cluster-virtualization-overview.md","siteName":"CockroachDB","nav":{"global":{"anchors":[{"anchor":"University","icon":"graduation-cap","href":"https://learn.cockroachlabs.com/"}]},"products":[{"product":"Cockroach Continuum Cloud","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cockroachlabs/images/continuum/cockroachlabs-symbol.svg","description":"The agentic database cloud","pages":[{"title":"Cockroach Continuum Cloud","href":"/docs/continuum"}]},{"product":"CockroachDB","icon":"database","description":"Distributed SQL database","versions":[{"version":"v26.4","default":true,"tag":"Stable","pages":[{"title":"v26.4","href":"/docs/stable/cluster-virtualization-overview"}]},{"version":"v26.3","pages":[{"title":"v26.3","href":"/docs/v26.3/cluster-virtualization-overview"}]},{"version":"v26.2","pages":[{"title":"v26.2","href":"/docs/v26.2/cluster-virtualization-overview"}]},{"version":"v26.1","pages":[{"title":"v26.1","href":"/docs/v26.1/cluster-virtualization-overview"}]},{"version":"v25.4","tag":"LTS","pages":[{"title":"v25.4","href":"/docs/v25.4/cluster-virtualization-overview"}]},{"version":"v25.3","tag":"Unsupported","pages":[{"title":"v25.3","href":"/docs/v25.3/cluster-virtualization-overview"}]},{"version":"v25.2","tag":"LTS","pages":[{"title":"v25.2","href":"/docs/v25.2/cluster-virtualization-overview"}]},{"version":"v25.1","tag":"Unsupported","pages":[{"title":"v25.1","href":"/docs/v25.1/cluster-virtualization-overview"}]},{"version":"v24.3","tag":"LTS","pages":[{"title":"v24.3","href":"/docs/v24.3/cluster-virtualization-overview"}]},{"version":"v24.1","tag":"LTS","pages":[{"title":"v24.1","href":"/docs/v24.1/cluster-virtualization-overview"}]},{"version":"v23.2","tag":"LTS","tabs":[{"tab":"Docs","icon":"book-open","pages":[{"title":"CockroachDB Docs","sidebarTitle":"Docs Home","href":"/docs/v23.2"},{"group":"Get Started","pages":[{"group":"Install CockroachDB","pages":[{"title":"Install CockroachDB on Mac","href":"/docs/v23.2/install-cockroachdb-mac"},{"title":"Install CockroachDB on Linux","href":"/docs/v23.2/install-cockroachdb-linux"},{"title":"Install a FIPS-ready CockroachDB Runtime","href":"/docs/v23.2/fips"},{"title":"Install CockroachDB on Windows","href":"/docs/v23.2/install-cockroachdb-windows"}]},{"group":"Develop with CockroachDB","pages":[{"title":"Developer Basics","href":"/docs/v23.2/developer-basics"},{"group":"JavaScript/TypeScript","pages":[{"title":"Build a Simple CRUD Node.js App with CockroachDB and the node-postgres Driver","href":"/docs/v23.2/build-a-nodejs-app-with-cockroachdb"},{"title":"Build a Node.js App with CockroachDB and Sequelize","href":"/docs/v23.2/build-a-nodejs-app-with-cockroachdb-sequelize"},{"title":"Build a Simple CRUD Node.js App with CockroachDB and Knex.js","href":"/docs/v23.2/build-a-nodejs-app-with-cockroachdb-knexjs"},{"title":"Build a Simple CRUD Node.js App with CockroachDB and Prisma","href":"/docs/v23.2/build-a-nodejs-app-with-cockroachdb-prisma"},{"title":"Build a TypeScript App with CockroachDB and TypeORM","href":"/docs/v23.2/build-a-typescript-app-with-cockroachdb"}]},{"group":"Python","pages":[{"title":"Build a Python App with CockroachDB and Psycopg 3","href":"/docs/v23.2/build-a-python-app-with-cockroachdb-psycopg3"},{"title":"Build a Python App with CockroachDB and psycopg2","href":"/docs/v23.2/build-a-python-app-with-cockroachdb"},{"title":"Build a Simple CRUD Python App with CockroachDB and SQLAlchemy","href":"/docs/v23.2/build-a-python-app-with-cockroachdb-sqlalchemy"},{"title":"Build a Python App with CockroachDB and Django","href":"/docs/v23.2/build-a-python-app-with-cockroachdb-django"},{"title":"Build a Python App with CockroachDB and asyncpg","href":"/docs/v23.2/build-a-python-app-with-cockroachdb-asyncpg"}]},{"group":"Golang","pages":[{"title":"Build a Simple CRUD Go App with CockroachDB and the Go pgx Driver","href":"/docs/v23.2/build-a-go-app-with-cockroachdb"},{"title":"Build a Go App with CockroachDB and GORM","href":"/docs/v23.2/build-a-go-app-with-cockroachdb-gorm"},{"title":"Build a Go App with CockroachDB the Go pq Driver","href":"/docs/v23.2/build-a-go-app-with-cockroachdb-pq"},{"title":"Build a Go App with CockroachDB and upper/db","href":"/docs/v23.2/build-a-go-app-with-cockroachdb-upperdb"}]},{"group":"Java","pages":[{"title":"Build a Simple CRUD Java App with CockroachDB and JDBC","href":"/docs/v23.2/build-a-java-app-with-cockroachdb"},{"title":"Build a Java App with CockroachDB and Hibernate","href":"/docs/v23.2/build-a-java-app-with-cockroachdb-hibernate"},{"title":"Build a Java App with CockroachDB and jOOQ","href":"/docs/v23.2/build-a-java-app-with-cockroachdb-jooq"},{"title":"Build a Spring App with CockroachDB and MyBatis","href":"/docs/v23.2/build-a-spring-app-with-cockroachdb-mybatis"},{"title":"Build a Spring App with CockroachDB and JDBC","href":"/docs/v23.2/build-a-spring-app-with-cockroachdb-jdbc"},{"title":"Build a Spring App with CockroachDB and JPA","href":"/docs/v23.2/build-a-spring-app-with-cockroachdb-jpa"}]},{"group":"Ruby","pages":[{"title":"Build a Ruby App with CockroachDB and the Ruby pg Driver","href":"/docs/v23.2/build-a-ruby-app-with-cockroachdb"},{"title":"Build a Ruby App with CockroachDB and Active Record","href":"/docs/v23.2/build-a-ruby-app-with-cockroachdb-activerecord"}]},{"title":"Build a C# App with CockroachDB and the .NET Npgsql Driver","sidebarTitle":"C# (.NET)","href":"/docs/v23.2/build-a-csharp-app-with-cockroachdb"},{"title":"Build a Rust App with CockroachDB and the Rust-Postgres Driver","sidebarTitle":"Rust","href":"/docs/v23.2/build-a-rust-app-with-cockroachdb"},{"title":"Build a GraphQL Application Using Hasura","sidebarTitle":"Hasura (GraphQL)","href":"/docs/v23.2/hasura-getting-started"}]},{"group":"Standard Examples","pages":[{"title":"Create and Deploy an AWS Lambda Function Built on CockroachDB","sidebarTitle":"AWS Lambda","href":"/docs/v23.2/deploy-lambda-function"},{"title":"Deploy a CockroachDB Cloud Application with Google Cloud Run","sidebarTitle":"Google Cloud Run","href":"/docs/v23.2/deploy-app-gcr"},{"title":"Deploy a Netlify App Built on CockroachDB","sidebarTitle":"Netlify","href":"/docs/v23.2/deploy-app-netlify"},{"title":"Deploy a Web App Built on CockroachDB with Vercel","sidebarTitle":"Vercel","href":"/docs/v23.2/deploy-app-vercel"},{"title":"Serverless Function Best Practices","href":"/docs/v23.2/serverless-function-best-practices"}]},{"title":"MovR","href":"/docs/v23.2/movr"}]},{"group":"CockroachDB and AI","pages":[{"title":"CockroachDB Docs MCP Server","sidebarTitle":"Docs MCP Server","href":"/docs/v23.2/docs-mcp-integration"}]},{"group":"Feature Overview","pages":[{"group":"CockroachDB Basics","pages":[{"title":"Why CockroachDB?","href":"/docs/v23.2/why-cockroachdb"},{"title":"Replication and Rebalancing","sidebarTitle":"Replication \u0026 Rebalancing","href":"/docs/v23.2/demo-replication-and-rebalancing"},{"title":"Fault Tolerance \u0026 Recovery","href":"/docs/v23.2/demo-fault-tolerance-and-recovery"},{"title":"Serializable Transactions","href":"/docs/v23.2/demo-serializable"},{"title":"Multi-Active Availability","href":"/docs/v23.2/multi-active-availability"}]},{"group":"CockroachDB SQL","pages":[{"title":"PostgreSQL Compatibility","href":"/docs/v23.2/postgresql-compatibility"},{"title":"SQL Feature Support in CockroachDB v23.2","sidebarTitle":"SQL Features","href":"/docs/v23.2/sql-feature-support"},{"title":"SQL FAQs","href":"/docs/v23.2/sql-faqs"}]}]},{"group":"Connect to an Application","pages":[{"title":"Install a Driver or ORM Framework","href":"/docs/v23.2/install-client-drivers"},{"title":"Connect to a CockroachDB Cluster","sidebarTitle":"Connect to a Cluster","href":"/docs/v23.2/connect-to-the-database"},{"title":"Client Connection Parameters","href":"/docs/v23.2/connection-parameters"},{"title":"Connection Pooling","href":"/docs/v23.2/connection-pooling"}]},{"group":"Self-Hosted Deployments","pages":[{"title":"Production Checklist","href":"/docs/v23.2/recommended-production-settings"},{"title":"Deployment \u0026 Operations Skills Taxonomy","sidebarTitle":"Deployment and Operations Skills Taxonomy","href":"/docs/v23.2/deployment-operations-skills-taxonomy"},{"group":"Deploy Locally","pages":[{"group":"Deploy from Binary","pages":[{"title":"Deploy a Local Cluster from Binary (Secure)","href":"/docs/v23.2/secure-a-cluster"},{"title":"Deploy a Local Cluster from Binary (Insecure)","href":"/docs/v23.2/start-a-local-cluster"}]},{"title":"Deploy a Local Cluster in Docker (Insecure)","href":"/docs/v23.2/start-a-local-cluster-in-docker"},{"group":"Deploy in Kubernetes","pages":[{"title":"Deploy a Local Cluster in Kubernetes","href":"/docs/v23.2/orchestrate-a-local-cluster-with-kubernetes"},{"title":"Orchestration with Kubernetes (Insecure)","href":"/docs/v23.2/orchestrate-a-local-cluster-with-kubernetes-insecure"}]},{"title":"Simulate a Multi-Region Cluster on localhost (Insecure)","sidebarTitle":"Simulate a Multi-Region Cluster Locally","href":"/docs/v23.2/simulate-a-multi-region-cluster-on-localhost"}]},{"group":"Deploy Manually","pages":[{"title":"Manual Deployment","sidebarTitle":"Overview","href":"/docs/v23.2/manual-deployment"},{"title":"Deploy CockroachDB On-Premises","sidebarTitle":"Deploy On-Premises","href":"/docs/v23.2/deploy-cockroachdb-on-premises"},{"title":"Deploy CockroachDB On-Premises (Insecure)","href":"/docs/v23.2/deploy-cockroachdb-on-premises-insecure"},{"title":"Deploy CockroachDB on AWS EC2","sidebarTitle":"Deploy on AWS","href":"/docs/v23.2/deploy-cockroachdb-on-aws"},{"title":"Deploy CockroachDB on AWS EC2 (Insecure)","href":"/docs/v23.2/deploy-cockroachdb-on-aws-insecure"},{"title":"Deploy CockroachDB on Microsoft Azure","sidebarTitle":"Deploy on Azure","href":"/docs/v23.2/deploy-cockroachdb-on-microsoft-azure"},{"title":"Deploy CockroachDB on Microsoft Azure (Insecure)","href":"/docs/v23.2/deploy-cockroachdb-on-microsoft-azure-insecure"},{"title":"Deploy CockroachDB on Google Cloud Platform GCE","sidebarTitle":"Deploy on Google Cloud Platform GCE","href":"/docs/v23.2/deploy-cockroachdb-on-google-cloud-platform"},{"title":"Deploy CockroachDB on Google Cloud Platform GCE (Insecure)","href":"/docs/v23.2/deploy-cockroachdb-on-google-cloud-platform-insecure"},{"title":"Deploy CockroachDB on Digital Ocean","sidebarTitle":"Deploy on Digital Ocean","href":"/docs/v23.2/deploy-cockroachdb-on-digital-ocean"},{"title":"Deploy CockroachDB on Digital Ocean (Insecure)","href":"/docs/v23.2/deploy-cockroachdb-on-digital-ocean-insecure"}]},{"group":"Deploy on Kubernetes with Legacy Technologies","pages":[{"title":"Kubernetes Overview","sidebarTitle":"Overview","href":"/docs/v23.2/kubernetes-overview"},{"title":"Deploy CockroachDB in a Single Kubernetes Cluster","href":"/docs/v23.2/deploy-cockroachdb-with-kubernetes"},{"title":"Deploy CockroachDB in a Single Kubernetes Cluster (Insecure)","href":"/docs/v23.2/deploy-cockroachdb-with-kubernetes-insecure"},{"title":"Deploy CockroachDB on Red Hat OpenShift","sidebarTitle":"OpenShift Deployment","href":"/docs/v23.2/deploy-cockroachdb-with-kubernetes-openshift"},{"title":"Orchestrate CockroachDB Across Multiple Kubernetes Clusters","sidebarTitle":"Multi-Cluster Deployment","href":"/docs/v23.2/orchestrate-cockroachdb-with-kubernetes-multi-cluster"},{"group":"Operate on Kubernetes","pages":[{"title":"Pod Scheduling","href":"/docs/v23.2/schedule-cockroachdb-kubernetes"},{"title":"Resource Management","href":"/docs/v23.2/configure-cockroachdb-kubernetes"},{"title":"Certificate Management","href":"/docs/v23.2/secure-cockroachdb-kubernetes"},{"title":"Cluster Scaling","href":"/docs/v23.2/scale-cockroachdb-kubernetes"},{"title":"Cluster Monitoring","href":"/docs/v23.2/monitor-cockroachdb-kubernetes"},{"title":"Cluster Upgrades","href":"/docs/v23.2/upgrade-cockroachdb-kubernetes"},{"title":"CockroachDB Performance on Kubernetes","sidebarTitle":"Kubernetes Performance","href":"/docs/v23.2/kubernetes-performance"}]}]},{"group":"Multi-Region for Self-Hosted Deployments","pages":[{"title":"Topology Patterns Overview","href":"/docs/v23.2/topology-patterns"},{"title":"Basic Production Topology","href":"/docs/v23.2/topology-basic-production"},{"title":"Follower Reads Topology","href":"/docs/v23.2/topology-follower-reads"},{"title":"Follow-the-Workload Topology","href":"/docs/v23.2/topology-follow-the-workload"},{"title":"Regional Tables","href":"/docs/v23.2/regional-tables"},{"title":"Global Tables","href":"/docs/v23.2/global-tables"}]},{"group":"Security","pages":[{"group":"Certificates","pages":[{"title":"Use the CockroachDB CLI to provision a development cluster","href":"/docs/v23.2/manage-certs-cli"},{"title":"Manage PKI certificates with HashiCorp Vault","href":"/docs/v23.2/manage-certs-vault"},{"title":"Create Security Certificates using OpenSSL","href":"/docs/v23.2/create-security-certificates-openssl"},{"title":"Advanced Public Key Infrastructure (PKI) Certificate Scenarios","href":"/docs/v23.2/create-security-certificates-custom-ca"},{"title":"Using Online Certificate Status Protocol (OCSP) with CockroachDB","sidebarTitle":"Use Online Certificate Status Protocol (OCSP)","href":"/docs/v23.2/manage-certs-revoke-ocsp"}]},{"title":"Authenticate to CockroachDB Self-Hosted Clusters","sidebarTitle":"Authentication","href":"/docs/v23.2/authentication"},{"title":"Manage Encryption for CockroachDB Self-Hosted","sidebarTitle":"Encryption","href":"/docs/v23.2/encryption"},{"title":"Manage Cluster User Authorization","sidebarTitle":"Authorization","href":"/docs/v23.2/authorization"},{"title":"Table-based SQL Audit Logging","href":"/docs/v23.2/sql-audit-logging"},{"title":"Role-based SQL Audit Logging","href":"/docs/v23.2/role-based-audit-logging"},{"title":"GSSAPI Authentication (Enterprise)","sidebarTitle":"GSSAPI Authentication","href":"/docs/v23.2/gssapi_authentication"},{"title":"Cluster Single Sign-on (SSO) using JSON web tokens (JWTs)","sidebarTitle":"Cluster SSO using JWT","href":"/docs/v23.2/sso-sql"},{"title":"Single Sign-on (SSO) for DB Console","sidebarTitle":"DB Console SSO","href":"/docs/v23.2/sso-db-console"},{"title":"Rotate Security Certificates","href":"/docs/v23.2/rotate-certificates"},{"title":"Use HashiCorp Vault's Dynamic Secrets","sidebarTitle":"Use Hashicorp Vault's Dynamic Secrets","href":"/docs/v23.2/vault-db-secrets-tutorial"}]},{"group":"Monitoring and Alerting","pages":[{"title":"Monitoring and Alerting","sidebarTitle":"Overview","href":"/docs/v23.2/monitoring-and-alerting"},{"title":"Common Issues to Monitor","href":"/docs/v23.2/common-issues-to-monitor"},{"title":"Enable the Node Map","href":"/docs/v23.2/enable-node-map"},{"title":"Monitor CockroachDB with Prometheus","sidebarTitle":"Use Prometheus and Alertmanager","href":"/docs/v23.2/monitor-cockroachdb-with-prometheus"},{"title":"Essential Metrics for CockroachDB Self-Hosted Deployments","sidebarTitle":"Essential Metrics for CockroachDB self-hosted Deployments","href":"/docs/v23.2/essential-metrics-self-hosted"}]},{"group":"Administration","pages":[{"title":"DB Console Overview","href":"/docs/v23.2/ui-overview"},{"title":"Cluster Overview Page","href":"/docs/v23.2/ui-cluster-overview-page"},{"group":"Metrics Dashboards","pages":[{"title":"Overview Dashboard","sidebarTitle":"Overview","href":"/docs/v23.2/ui-overview-dashboard"},{"title":"Hardware Dashboard","sidebarTitle":"Hardware","href":"/docs/v23.2/ui-hardware-dashboard"},{"title":"Runtime Dashboard","sidebarTitle":"Runtime","href":"/docs/v23.2/ui-runtime-dashboard"},{"title":"Networking Dashboard","sidebarTitle":"Networking","href":"/docs/v23.2/ui-networking-dashboard"},{"title":"SQL Dashboard","sidebarTitle":"SQL","href":"/docs/v23.2/ui-sql-dashboard"},{"title":"Storage Dashboard","sidebarTitle":"Storage","href":"/docs/v23.2/ui-storage-dashboard"},{"title":"Replication Dashboard","sidebarTitle":"Replication","href":"/docs/v23.2/ui-replication-dashboard"},{"title":"Distributed Dashboard","sidebarTitle":"Distributed","href":"/docs/v23.2/ui-distributed-dashboard"},{"title":"Queues Dashboard","sidebarTitle":"Queues","href":"/docs/v23.2/ui-queues-dashboard"},{"title":"Slow Requests Dashboard","sidebarTitle":"Slow Requests","href":"/docs/v23.2/ui-slow-requests-dashboard"},{"title":"Changefeeds Dashboard","sidebarTitle":"Changefeeds","href":"/docs/v23.2/ui-cdc-dashboard"},{"title":"Overload Dashboard","sidebarTitle":"Overload","href":"/docs/v23.2/ui-overload-dashboard"},{"title":"TTL Dashboard","sidebarTitle":"TTL","href":"/docs/v23.2/ui-ttl-dashboard"},{"title":"Custom Chart Debug Page","href":"/docs/v23.2/ui-custom-chart-debug-page"}]},{"title":"Databases Page","href":"/docs/v23.2/ui-databases-page"},{"title":"Sessions Page","href":"/docs/v23.2/ui-sessions-page"},{"title":"Statements Page","href":"/docs/v23.2/ui-statements-page"},{"title":"Transactions Page","href":"/docs/v23.2/ui-transactions-page"},{"title":"Insights Page","href":"/docs/v23.2/ui-insights-page"},{"title":"Network Page","href":"/docs/v23.2/ui-network-latency-page"},{"title":"Jobs Page","href":"/docs/v23.2/ui-jobs-page"},{"title":"Schedules Page","href":"/docs/v23.2/ui-schedules-page"},{"title":"Advanced Debug Page","href":"/docs/v23.2/ui-debug-pages"},{"title":"Key Visualizer","href":"/docs/v23.2/ui-key-visualizer"}]},{"group":"Backups and Restores","pages":[{"title":"Backup and Restore Overview","sidebarTitle":"Overview","href":"/docs/v23.2/backup-and-restore-overview"},{"title":"Take Full and Incremental Backups","sidebarTitle":"Full and Incremental Backups","href":"/docs/v23.2/take-full-and-incremental-backups"},{"title":"Take Backups with Revision History and Restore from a Point-in-time","sidebarTitle":"Backups with Revision History and Point-in-time Restore","href":"/docs/v23.2/take-backups-with-revision-history-and-restore-from-a-point-in-time"},{"title":"Take and Restore Encrypted Backups","sidebarTitle":"Encrypted Backup and Restore","href":"/docs/v23.2/take-and-restore-encrypted-backups"},{"title":"Take Locality-restricted Backups","sidebarTitle":"Locality-restricted Backup Execution","href":"/docs/v23.2/take-locality-restricted-backups"},{"title":"Take and Restore Locality-aware Backups","sidebarTitle":"Locality-aware Backup and Restore","href":"/docs/v23.2/take-and-restore-locality-aware-backups"},{"title":"Manage a Backup Schedule","sidebarTitle":"Scheduled Backups","href":"/docs/v23.2/manage-a-backup-schedule"},{"title":"Backup Validation","href":"/docs/v23.2/backup-validation"},{"title":"Expire Past Backups","href":"/docs/v23.2/expire-past-backups"},{"title":"Backup and Restore Monitoring","href":"/docs/v23.2/backup-and-restore-monitoring"}]},{"group":"File Storage","pages":[{"title":"Use Cloud Storage","sidebarTitle":"Cloud Storage","href":"/docs/v23.2/use-cloud-storage"},{"title":"Cloud Storage Authentication","href":"/docs/v23.2/cloud-storage-authentication"},{"title":"Use Userfile Storage","sidebarTitle":"Userfile Storage","href":"/docs/v23.2/use-userfile-storage"},{"title":"Use a Local File Server","sidebarTitle":"Local File Server","href":"/docs/v23.2/use-a-local-file-server"}]},{"group":"Cluster Maintenance","pages":[{"title":"Upgrade to CockroachDB v23.2","sidebarTitle":"Upgrade CockroachDB","href":"/docs/v23.2/upgrade-cockroach-version"},{"title":"Disaster Recovery Planning","href":"/docs/v23.2/disaster-recovery-planning"},{"title":"Restoring Backups Across Versions","href":"/docs/v23.2/restoring-backups-across-versions"},{"title":"Manage Long-Running Queries","href":"/docs/v23.2/manage-long-running-queries"},{"title":"Node Shutdown","href":"/docs/v23.2/node-shutdown"}]},{"group":"Logs","pages":[{"title":"Logging Overview","sidebarTitle":"Overview","href":"/docs/v23.2/logging-overview"},{"title":"Configure Logs","href":"/docs/v23.2/configure-logs"},{"title":"Logging Use Cases","href":"/docs/v23.2/logging-use-cases"},{"title":"Log SQL Activity to Datadog","href":"/docs/v23.2/log-sql-activity-to-datadog"}]},{"title":"Cluster API v2.0","sidebarTitle":"Cluster API","href":"/docs/v23.2/cluster-api"}]},{"group":"Schema Design","pages":[{"title":"Database Schemas","href":"/docs/v23.2/schema-design-overview"},{"title":"Computed Columns","href":"/docs/v23.2/computed-columns"},{"title":"Column Families","href":"/docs/v23.2/column-families"},{"title":"Scale to Multiple Regions","href":"/docs/v23.2/multiregion-scale-application"},{"group":"Indexes","pages":[{"title":"Secondary Indexes","href":"/docs/v23.2/schema-design-indexes"},{"title":"Index a Subset of Rows with Partial Indexes","sidebarTitle":"Partial Indexes","href":"/docs/v23.2/partial-indexes"},{"title":"Index Sequential Keys with Hash-sharded Indexes","sidebarTitle":"Hash-sharded Indexes","href":"/docs/v23.2/hash-sharded-indexes"},{"title":"Generalized Inverted Indexes","href":"/docs/v23.2/inverted-indexes"},{"title":"Full-Text Search","href":"/docs/v23.2/full-text-search"},{"title":"Trigram Indexes","href":"/docs/v23.2/trigram-indexes"},{"title":"Expression Indexes","href":"/docs/v23.2/expression-indexes"},{"title":"Spatial Indexes","href":"/docs/v23.2/spatial-indexes"}]},{"group":"Update a Database Schema","pages":[{"title":"Online Schema Changes","href":"/docs/v23.2/online-schema-changes"},{"title":"Migrate CockroachDB Schemas with Alembic","sidebarTitle":"Use Alembic","href":"/docs/v23.2/alembic"},{"title":"Migrate CockroachDB Schemas with Flyway","sidebarTitle":"Use Flyway","href":"/docs/v23.2/flyway"},{"title":"Migrate CockroachDB Schemas with Liquibase","sidebarTitle":"Use Liquibase","href":"/docs/v23.2/liquibase"}]}]},{"group":"Reads and Writes","pages":[{"title":"Reads and Writes in CockroachDB","sidebarTitle":"Overview","href":"/docs/v23.2/architecture/reads-and-writes-overview"},{"group":"Read Data","pages":[{"title":"Query Data","href":"/docs/v23.2/query-data"},{"title":"Reusable Views","href":"/docs/v23.2/views"},{"title":"Subqueries","href":"/docs/v23.2/subqueries"},{"title":"Temporary Tables","href":"/docs/v23.2/temporary-tables"},{"title":"Paginate Results","href":"/docs/v23.2/pagination"},{"title":"Follower Reads","href":"/docs/v23.2/follower-reads"},{"title":"AS OF SYSTEM TIME","sidebarTitle":"AS OF SYSTEM TIME","href":"/docs/v23.2/as-of-system-time"},{"title":"Query Spatial Data","href":"/docs/v23.2/query-spatial-data"}]},{"group":"Write Data","pages":[{"title":"Insert Data","href":"/docs/v23.2/insert-data"},{"title":"Update Data","href":"/docs/v23.2/update-data"},{"title":"Bulk-update Data","href":"/docs/v23.2/bulk-update-data"},{"title":"Delete Data","href":"/docs/v23.2/delete-data"},{"title":"Bulk-delete Data","href":"/docs/v23.2/bulk-delete-data"},{"title":"Batch Delete Expired Data with Row-Level TTL","href":"/docs/v23.2/row-level-ttl"}]},{"group":"Transactions","pages":[{"title":"Transactions","sidebarTitle":"Overview","href":"/docs/v23.2/transactions"},{"title":"Advanced Client-side Transaction Retries","href":"/docs/v23.2/advanced-client-side-transaction-retries"},{"title":"Life of a Distributed Transaction","href":"/docs/v23.2/architecture/life-of-a-distributed-transaction"},{"title":"Read Committed Transactions","href":"/docs/v23.2/read-committed"}]},{"title":"Test Your Application Locally","href":"/docs/v23.2/local-testing"},{"url":"https://www.cockroachlabs.com/docs/tutorials/sql-playground","title":"SQL Playground","href":"/links/tutorials/sql-playground"},{"group":"Database Management Tools","pages":[{"title":"Visualize CockroachDB Schemas with DBeaver","sidebarTitle":"DBeaver GUI","href":"/docs/v23.2/dbeaver"},{"title":"Use IntelliJ IDEA with CockroachDB","sidebarTitle":"IntelliJ IDEA","href":"/docs/v23.2/intellij-idea"}]},{"title":"JSON Support","href":"/docs/v23.2/demo-json-support"}]},{"group":"Stream Data","pages":[{"title":"Change Data Capture Overview","href":"/docs/v23.2/change-data-capture-overview"},{"group":"Get Started with Changefeeds","pages":[{"title":"Create and Configure Changefeeds","href":"/docs/v23.2/create-and-configure-changefeeds"},{"group":"Changefeed Messages","pages":[{"title":"Changefeed Messages","sidebarTitle":"Overview","href":"/docs/v23.2/changefeed-messages"}]},{"title":"Changefeed Sinks","href":"/docs/v23.2/changefeed-sinks"},{"title":"Changefeed Examples","href":"/docs/v23.2/changefeed-examples"}]},{"group":"Monitor Changefeeds","pages":[{"title":"Monitor and Debug Changefeeds","sidebarTitle":"Overview","href":"/docs/v23.2/monitor-and-debug-changefeeds"},{"title":"Protect Changefeed Data from Garbage Collection","sidebarTitle":"Protect Changefeed Data","href":"/docs/v23.2/protect-changefeed-data"}]},{"group":"Optimize Changefeeds","pages":[{"title":"Change Data Capture Queries","href":"/docs/v23.2/cdc-queries"},{"title":"Changefeeds on Tables with Column Families","href":"/docs/v23.2/changefeeds-on-tables-with-column-families"},{"title":"Export Data with Changefeeds","href":"/docs/v23.2/export-data-with-changefeeds"},{"title":"Changefeeds in Multi-Region Deployments","href":"/docs/v23.2/changefeeds-in-multi-region-deployments"}]},{"group":"Changefeed Tutorials","pages":[{"title":"Connect to a Changefeed Kafka Sink with OAuth Using Okta","href":"/docs/v23.2/connect-to-a-changefeed-kafka-sink-with-oauth-using-okta"},{"title":"Stream a Changefeed to a Confluent Cloud Kafka Cluster","href":"/docs/v23.2/stream-a-changefeed-to-a-confluent-cloud-kafka-cluster"}]},{"title":"Advanced Changefeed Configuration","href":"/docs/v23.2/advanced-changefeed-configuration"}]},{"group":"Cross-Cluster Replication","pages":[{"group":"Physical Cluster Replication","pages":[{"title":"Physical Cluster Replication","sidebarTitle":"Overview","href":"/docs/v23.2/physical-cluster-replication-overview"},{"title":"Set Up Physical Cluster Replication","href":"/docs/v23.2/set-up-physical-cluster-replication"},{"title":"Physical Cluster Replication Monitoring","sidebarTitle":"Monitor a Replication Stream","href":"/docs/v23.2/physical-cluster-replication-monitoring"},{"title":"Physical Cluster Replication Technical Overview","sidebarTitle":"Technical Overview","description":null,"href":"/docs/v23.2/physical-cluster-replication-technical-overview"},{"group":"Cluster Virtualization","pages":[{"title":"Cluster Virtualization Overview","sidebarTitle":"Overview","href":"/docs/v23.2/cluster-virtualization-overview"},{"title":"Work with virtual clusters","sidebarTitle":"Work with Virtual Clusters","description":null,"href":"/docs/v23.2/work-with-virtual-clusters"},{"title":"Cluster Setting Scopes with Cluster Virtualization enabled","sidebarTitle":"Setting Scopes","href":"/docs/v23.2/cluster-virtualization-setting-scopes"},{"title":"Cluster Metric Scopes with Cluster Virtualization enabled","sidebarTitle":"Metric Scopes","href":"/docs/v23.2/cluster-virtualization-metric-scopes"}]}]}]},{"group":"Multi-Region Capabilities","pages":[{"title":"Multi-Region Capabilities Overview","sidebarTitle":"Overview","href":"/docs/v23.2/multiregion-overview"},{"title":"Multi-Region Survival Goals","sidebarTitle":"Survival Goals","href":"/docs/v23.2/multiregion-survival-goals"},{"group":"Data Domiciling and Performance","pages":[{"title":"Table Localities","href":"/docs/v23.2/table-localities"},{"title":"Table Partitioning","href":"/docs/v23.2/partitioning"},{"title":"Data Domiciling with CockroachDB","sidebarTitle":"Data Domiciling with CockroachDB Tutorial","href":"/docs/v23.2/data-domiciling"}]},{"title":"How to Choose a Multi-Region Configuration","href":"/docs/v23.2/choosing-a-multi-region-configuration"},{"title":"Multi-Region Zone Config Extensions","href":"/docs/v23.2/zone-config-extensions"},{"group":"Multi-Region Tutorials","pages":[{"title":"Low Latency Reads and Writes in a Multi-Region Cluster","sidebarTitle":"Low Latency Reads and Writes","href":"/docs/v23.2/demo-low-latency-multi-region-deployment"},{"title":"Migrate to Multi-Region SQL","sidebarTitle":"Migrate to Multi-Region SQL with Replication Zones","href":"/docs/v23.2/migrate-to-multiregion-sql"}]}]},{"group":"Optimize Performance","pages":[{"title":"Optimize Statement Performance Overview","sidebarTitle":"Overview","href":"/docs/v23.2/make-queries-fast"},{"title":"SQL Performance Best Practices","href":"/docs/v23.2/performance-best-practices-overview"},{"title":"Indexes","href":"/docs/v23.2/indexes"},{"title":"Map SQL Activity using an Application Name","href":"/docs/v23.2/map-sql-activity-to-app"},{"title":"Cost-Based Optimizer","href":"/docs/v23.2/cost-based-optimizer"},{"title":"Vectorized Query Execution","sidebarTitle":"Vectorized Execution Engine","href":"/docs/v23.2/vectorized-execution"},{"title":"Load-Based Splitting","href":"/docs/v23.2/load-based-splitting"},{"title":"Replication Controls","href":"/docs/v23.2/configure-replication-zones"},{"title":"Admission Control","href":"/docs/v23.2/admission-control"},{"title":"Performance Tuning Recipes","href":"/docs/v23.2/performance-recipes"},{"group":"Performance Tuning Tutorials","pages":[{"title":"Statement Tuning with EXPLAIN","sidebarTitle":"Statement Tuning with EXPLAIN","href":"/docs/v23.2/sql-tuning-with-explain"},{"title":"Apply SQL Statement Performance Rules","href":"/docs/v23.2/apply-statement-performance-rules"}]}]},{"group":"Integrate","pages":[{"title":"Integrate CockroachDB with Satori","sidebarTitle":"Integrate with Satori","href":"/docs/v23.2/satori-integration"}]}]},{"tab":"Migrate","icon":"arrow-right-arrow-left","pages":[{"title":"Migrate","href":"/docs/molt/migration-overview"}]},{"tab":"SQL","icon":"code","pages":[{"title":"SQL","href":"/docs/v23.2/sql-statements"}]},{"tab":"Reference","icon":"book","pages":[{"title":"Reference","href":"/docs/v23.2/architecture/glossary"}]},{"tab":"Cluster API","icon":"rocket","pages":[{"title":"Cluster API","href":"/docs/api/cluster"}]},{"tab":"Troubleshoot","icon":"bug","pages":[{"title":"Troubleshoot","href":"/docs/v23.2/troubleshooting-overview"}]}]},{"version":"v23.1","tag":"Unsupported","pages":[{"title":"v23.1","href":"/docs/v23.1"}]}]},{"product":"Cloud Deployments","icon":"cloud","description":"Fully managed CockroachDB","pages":[{"title":"Cloud Deployments","href":"/docs/cockroachcloud"}]},{"product":"Releases","icon":"list","description":"Version history, support policy \u0026 advisories","pages":[{"title":"Releases","href":"/docs/releases"}]}]},"basePath":"","title":"Cluster Virtualization Overview - CockroachDB","buildId":"dpl_DqYu5MPb49gWBBbUGgpHQUmCHY3P","deploymentId":"dpl_DqYu5MPb49gWBBbUGgpHQUmCHY3P","dynamics":[],"chunks":[]}