blob: 80dc02cece1d35b0c72006b4a8e8527129ab3edb [file]
<!doctype html>
<html lang="en-US" data-theme="light">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width,initial-scale=1" />
<meta name="generator" content="VuePress 2.0.0-rc.26" />
<meta name="theme" content="VuePress Theme Hope 2.0.0-rc.99" />
<style>
:root {
--vp-c-bg: #fff;
}
[data-theme="dark"] {
--vp-c-bg: #1b1b1f;
}
html,
body {
background: var(--vp-c-bg);
}
</style>
<script>
const userMode = localStorage.getItem("vuepress-theme-hope-scheme");
const systemDarkMode =
window.matchMedia &&
window.matchMedia("(prefers-color-scheme: dark)").matches;
if (userMode === "dark" || (userMode !== "light" && systemDarkMode)) {
document.documentElement.setAttribute("data-theme", "dark");
}
</script>
<script type="application/ld+json">{"@context":"https://schema.org","@type":"Article","headline":"Cluster Maintenance","image":["https://iotdb.apache.org/img/cluster-extention-1-en.png","https://iotdb.apache.org/img/cluster-extention-2.png","https://iotdb.apache.org/img/cluster-extention-3.png","https://iotdb.apache.org/img/cluster-extention-4-en.png","https://iotdb.apache.org/img/cluster-extention-5-en.png","https://iotdb.apache.org/img/cluster-extention-6-en.png","https://iotdb.apache.org/img/cluster-extention-7-en.png","https://iotdb.apache.org/img/cluster-extention-8-en.png","https://iotdb.apache.org/img/cluster-extention-9-en.png","https://iotdb.apache.org/img/region%E8%BF%81%E7%A7%BB%E7%A4%BA%E6%84%8F%E5%9B%BE20241210.png"],"dateModified":"2026-04-15T10:38:42.000Z","author":[]}</script><meta property="og:url" content="https://iotdb.apache.org/UserGuide/latest-Table/User-Manual/Load-Balance.html"><meta property="og:site_name" content="IoTDB Website"><meta property="og:title" content="Cluster Maintenance"><meta property="og:description" content="Cluster Maintenance 1. Cluster Scaling When an IoTDB cluster encounters resource bottlenecks such as CPU, memory, disk, or network due to a surge in data volume or access pressu..."><meta property="og:type" content="article"><meta property="og:image" content="https://iotdb.apache.org/img/cluster-extention-1-en.png"><meta property="og:locale" content="en-US"><meta property="og:locale:alternate" content="zh-CN"><meta property="og:updated_time" content="2026-04-15T10:38:42.000Z"><meta property="article:modified_time" content="2026-04-15T10:38:42.000Z"><link rel="alternate" hreflang="zh-cn" href="https://iotdb.apache.org/zh/UserGuide/latest-Table/User-Manual/Load-Balance.html"><script async src="https://widget.kapa.ai/kapa-widget.bundle.js" data-website-id="2d37bfdd-8d98-40ba-9223-9d4f81bfb327" data-project-name="Apache IoTDB" data-project-color="#FFFFFF" data-button-z-index="1999" data-button-padding="4px" data-button-border-radius="4px" data-button-image-height="24px" data-button-image-width="20px" data-button-text-color="#9E2878" data-project-logo="https://iotdb.apache.org/img/logo.svg" data-button-position-right="16px" data-button-position-bottom="8px" data-button-height="56px" data-button-width="48px" data-button-text="Ask" data-modal-override-open-selector="#custom-ask-ai-button" data-modal-image-width="150px" data-modal-title="AI Docs" data-modal-title-color="#9E2878" data-deep-thinking-button-active-bg-color="#F6F7F8" data-deep-thinking-button-active-text-color="#9E2878" data-deep-thinking-button-active-hover-text-color="#9E2878" data-modal-disclaimer="This is a custom LLM for Apache IoTDB with access to all [documentation](iotdb.apache.org/docs/), [GitHub Open Issues, PRs and READMEs](github.com/apache/iotdb).&#10;&#10;
If you encounter <Error in verifying browser for feedback submission. Captcha token could not be obtained.> please ensure that you can access Google services." data-user-analytics-fingerprint-enabled="true" data-consent-required="true" data-consent-screen-disclaimer="By clicking <I agree, let's chat>, you consent to the use of the AI assistant in accordance with kapa.ai's [Privacy Policy](https://www.kapa.ai/content/privacy-policy). This service uses reCAPTCHA, which requires your consent to Google's [Privacy Policy](https://policies.google.com/privacy) and [Terms of Service](https://policies.google.com/terms). By proceeding, you explicitly agree to both kapa.ai's and Google's privacy policies."></script><link rel="icon" href="/favicon.ico"><meta name="Description" content="Apache IoTDB: Time Series Database for IoT"><meta name="Keywords" content="TSDB, time series, time series database, IoTDB, IoT database, IoT data management, 时序数据库, 时间序列管理, IoTDB, 物联网数据库, 实时数据库, 物联网数据管理, 物联网数据"><meta name="baidu-site-verification" content="wfKETzB3OT"><meta name="google-site-verification" content="mZWAoRY0yj_HAr-s47zHCGHzx5Ju-RVm5wDbPnwQYFo"><script type="text/javascript">var _paq = window._paq = window._paq || [];
/* tracker methods like "setCustomDimension" should be called before "trackPageView" */
_paq.push(["setDoNotTrack", true]);
_paq.push(["disableCookies"]);
_paq.push(['trackPageView']);
_paq.push(['enableLinkTracking']);
(function() {
var u="https://analytics.apache.org/";
_paq.push(['setTrackerUrl', u+'matomo.php']);
_paq.push(['setSiteId', '56']);
var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
})();
</script><title>Cluster Maintenance | IoTDB Website</title><meta name="description" content="Cluster Maintenance 1. Cluster Scaling When an IoTDB cluster encounters resource bottlenecks such as CPU, memory, disk, or network due to a surge in data volume or access pressu...">
<link rel="preload" href="/assets/style-JraSdRX4.css" as="style"><link rel="stylesheet" href="/assets/style-JraSdRX4.css">
<link rel="modulepreload" href="/assets/app-pmkzp6TS.js"><link rel="modulepreload" href="/assets/Load-Balance.html-C7q8mF9j.js"><link rel="modulepreload" href="/assets/cluster-extention-9-en-vj7OvLL3.js"><link rel="modulepreload" href="/assets/cluster-extention-3-DdoG0zC9.js"><link rel="modulepreload" href="/assets/region迁移示意图20241210-CIcAOR5e.js">
</head>
<body>
<div id="app"><!--[--><!--[--><!--[--><span tabindex="-1"></span><a href="#main-content" class="vp-skip-link sr-only">Skip to main content</a><!--]--><!--[--><div class="theme-container external-link-icon has-toc" vp-container><!--[--><header id="navbar" class="vp-navbar" vp-navbar><div class="vp-navbar-start"><button type="button" class="vp-toggle-sidebar-button" title="Toggle Sidebar"><span class="icon"></span></button><!--[--><a class="route-link vp-brand" href="/" aria-label="Take me home"><img class="vp-nav-logo" src="/logo.png" alt><!----><!----></a><!--]--></div><div class="vp-navbar-center"><!--[--><!--]--></div><div class="vp-navbar-end"><!--[--><!--[--><div id="docsearch-container" style="display:none;"></div><div class="docsearch-placeholder"><button type="button" aria-label="Search" aria-keyshortcuts="Control+k" class="DocSearch DocSearch-Button"><span class="DocSearch-Button-Container"><svg width="20" height="20" viewBox="0 0 24 24" aria-hidden="true" class="DocSearch-Search-Icon"><circle cx="11" cy="11" r="8" stroke="currentColor" fill="none" stroke-width="1.4"></circle><path d="m21 21-4.3-4.3" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"></path></svg><span class="DocSearch-Button-Placeholder">Search</span></span><span class="DocSearch-Button-Keys"><kbd class="DocSearch-Button-Key DocSearch-Button-Key--ctrl">Ctrl</kbd><kbd class="DocSearch-Button-Key">K</kbd></span></button></div><!--]--><div><button id="custom-ask-ai-button"> ✨ Ask AI </button></div><nav class="vp-nav-links"><div class="vp-nav-item hide-in-mobile"><div class="vp-dropdown-wrapper"><button type="button" class="vp-dropdown-title" aria-label="Documentation"><!--[--><!---->Documentation<!--]--><span class="arrow"></span><ul class="vp-dropdown"><li class="vp-dropdown-item"><a class="route-link auto-link" href="/UserGuide/latest/QuickStart/QuickStart_apache.html" aria-label="v2.0.x"><!---->v2.0.x<!----></a></li><li class="vp-dropdown-item"><a class="route-link auto-link" href="/UserGuide/V1.3.x/QuickStart/QuickStart_apache.html" aria-label="v1.3.x"><!---->v1.3.x<!----></a></li><li class="vp-dropdown-item"><a class="route-link auto-link" href="/UserGuide/V1.2.x/QuickStart/QuickStart.html" aria-label="v1.2.x"><!---->v1.2.x<!----></a></li><li class="vp-dropdown-item"><a class="route-link auto-link" href="/UserGuide/V0.13.x/QuickStart/QuickStart.html" aria-label="v0.13.x"><!---->v0.13.x<!----></a></li></ul></button></div></div><div class="vp-nav-item hide-in-mobile"><a class="auto-link external-link" href="https://cwiki.apache.org/confluence/display/IOTDB/System+Design" aria-label="Design" rel="noopener noreferrer" target="_blank"><!---->Design<!----></a></div><div class="vp-nav-item hide-in-mobile"><a class="route-link auto-link" href="/Download/" aria-label="Download"><!---->Download<!----></a></div><div class="vp-nav-item hide-in-mobile"><div class="vp-dropdown-wrapper"><button type="button" class="vp-dropdown-title" aria-label="Community"><!--[--><!---->Community<!--]--><span class="arrow"></span><ul class="vp-dropdown"><li class="vp-dropdown-item"><a class="route-link auto-link" href="/Community/About-the-Community.html" aria-label="About the Community"><!---->About the Community<!----></a></li><li class="vp-dropdown-item"><a class="route-link auto-link" href="/Community/Development-Guide.html" aria-label="Development Guide"><!---->Development Guide<!----></a></li><li class="vp-dropdown-item"><a class="route-link auto-link" href="/Community/Community-Partners.html" aria-label="Community Partners"><!---->Community Partners<!----></a></li><li class="vp-dropdown-item"><a class="route-link auto-link" href="/Community/Communication-Channels.html" aria-label="Communication Channels"><!---->Communication Channels<!----></a></li><li class="vp-dropdown-item"><a class="route-link auto-link" href="/Community/Events-and-Reports.html" aria-label="Events and Reports"><!---->Events and Reports<!----></a></li><li class="vp-dropdown-item"><a class="route-link auto-link" href="/Community/Committers.html" aria-label="Committers"><!---->Committers<!----></a></li></ul></button></div></div><div class="vp-nav-item hide-in-mobile"><div class="vp-dropdown-wrapper"><button type="button" class="vp-dropdown-title" aria-label="ASF"><!--[--><!---->ASF<!--]--><span class="arrow"></span><ul class="vp-dropdown"><li class="vp-dropdown-item"><a class="auto-link external-link" href="https://www.apache.org/" aria-label="Foundation" rel="noopener noreferrer" target="_blank"><!---->Foundation<!----></a></li><li class="vp-dropdown-item"><a class="auto-link external-link" href="https://www.apache.org/licenses/" aria-label="License" rel="noopener noreferrer" target="_blank"><!---->License<!----></a></li><li class="vp-dropdown-item"><a class="auto-link external-link" href="https://www.apache.org/security/" aria-label="Security" rel="noopener noreferrer" target="_blank"><!---->Security<!----></a></li><li class="vp-dropdown-item"><a class="auto-link external-link" href="https://www.apache.org/foundation/sponsorship.html" aria-label="Sponsorship" rel="noopener noreferrer" target="_blank"><!---->Sponsorship<!----></a></li><li class="vp-dropdown-item"><a class="auto-link external-link" href="https://www.apache.org/foundation/thanks.html" aria-label="Thanks" rel="noopener noreferrer" target="_blank"><!---->Thanks<!----></a></li><li class="vp-dropdown-item"><a class="auto-link external-link" href="https://www.apache.org/events/current-event" aria-label="Current Events" rel="noopener noreferrer" target="_blank"><!---->Current Events<!----></a></li><li class="vp-dropdown-item"><a class="auto-link external-link" href="https://privacy.apache.org/policies/privacy-policy-public.html" aria-label="Privacy" rel="noopener noreferrer" target="_blank"><!---->Privacy<!----></a></li></ul></button></div></div></nav><div class="vp-nav-item"><div class="vp-dropdown-wrapper"><button type="button" class="vp-dropdown-title" aria-label="Select language"><!--[--><svg xmlns="http://www.w3.org/2000/svg" class="icon i18n-icon" viewBox="0 0 1024 1024" fill="currentColor" aria-label="i18n icon" name="i18n" style="width:1rem;height:1rem;vertical-align:middle;"><path d="M379.392 460.8 494.08 575.488l-42.496 102.4L307.2 532.48 138.24 701.44l-71.68-72.704L234.496 460.8l-45.056-45.056c-27.136-27.136-51.2-66.56-66.56-108.544h112.64c7.68 14.336 16.896 27.136 26.112 35.84l45.568 46.08 45.056-45.056C382.976 312.32 409.6 247.808 409.6 204.8H0V102.4h256V0h102.4v102.4h256v102.4H512c0 70.144-37.888 161.28-87.04 210.944L378.88 460.8zM576 870.4 512 1024H409.6l256-614.4H768l256 614.4H921.6l-64-153.6H576zM618.496 768h196.608L716.8 532.48 618.496 768z"></path></svg><!--]--><span class="arrow"></span><ul class="vp-dropdown"><li class="vp-dropdown-item"><a class="route-link route-link-active auto-link" href="/UserGuide/latest-Table/User-Manual/Load-Balance.html" aria-label="English"><!---->English<!----></a></li><li class="vp-dropdown-item"><a class="route-link auto-link" href="/zh/UserGuide/latest-Table/User-Manual/Load-Balance.html" aria-label="简体中文"><!---->简体中文<!----></a></li></ul></button></div></div><div class="vp-nav-item hide-in-mobile"><button type="button" class="vp-color-mode-switch" id="color-mode-switch"><svg xmlns="http://www.w3.org/2000/svg" class="icon auto-icon" viewBox="0 0 1024 1024" fill="currentColor" aria-label="auto icon" name="auto" style="display:none;"><path d="M512 992C246.92 992 32 777.08 32 512S246.92 32 512 32s480 214.92 480 480-214.92 480-480 480zm0-840c-198.78 0-360 161.22-360 360 0 198.84 161.22 360 360 360s360-161.16 360-360c0-198.78-161.22-360-360-360zm0 660V212c165.72 0 300 134.34 300 300 0 165.72-134.28 300-300 300z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" class="icon dark-icon" viewBox="0 0 1024 1024" fill="currentColor" aria-label="dark icon" name="dark" style="display:none;"><path d="M524.8 938.667h-4.267a439.893 439.893 0 0 1-313.173-134.4 446.293 446.293 0 0 1-11.093-597.334A432.213 432.213 0 0 1 366.933 90.027a42.667 42.667 0 0 1 45.227 9.386 42.667 42.667 0 0 1 10.24 42.667 358.4 358.4 0 0 0 82.773 375.893 361.387 361.387 0 0 0 376.747 82.774 42.667 42.667 0 0 1 54.187 55.04 433.493 433.493 0 0 1-99.84 154.88 438.613 438.613 0 0 1-311.467 128z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" class="icon light-icon" viewBox="0 0 1024 1024" fill="currentColor" aria-label="light icon" name="light" style="display:block;"><path d="M952 552h-80a40 40 0 0 1 0-80h80a40 40 0 0 1 0 80zM801.88 280.08a41 41 0 0 1-57.96-57.96l57.96-58a41.04 41.04 0 0 1 58 58l-58 57.96zM512 752a240 240 0 1 1 0-480 240 240 0 0 1 0 480zm0-560a40 40 0 0 1-40-40V72a40 40 0 0 1 80 0v80a40 40 0 0 1-40 40zm-289.88 88.08-58-57.96a41.04 41.04 0 0 1 58-58l57.96 58a41 41 0 0 1-57.96 57.96zM192 512a40 40 0 0 1-40 40H72a40 40 0 0 1 0-80h80a40 40 0 0 1 40 40zm30.12 231.92a41 41 0 0 1 57.96 57.96l-57.96 58a41.04 41.04 0 0 1-58-58l58-57.96zM512 832a40 40 0 0 1 40 40v80a40 40 0 0 1-80 0v-80a40 40 0 0 1 40-40zm289.88-88.08 58 57.96a41.04 41.04 0 0 1-58 58l-57.96-58a41 41 0 0 1 57.96-57.96z"></path></svg></button></div><div class="vp-nav-item vp-action"><a class="vp-action-link" href="https://github.com/apache/iotdb" target="_blank" rel="noopener noreferrer" aria-label="GitHub"><svg xmlns="http://www.w3.org/2000/svg" class="icon github-icon" viewBox="0 0 1024 1024" fill="currentColor" aria-label="github icon" name="github" style="width:1.25rem;height:1.25rem;vertical-align:middle;"><path d="M511.957 21.333C241.024 21.333 21.333 240.981 21.333 512c0 216.832 140.544 400.725 335.574 465.664 24.49 4.395 32.256-10.07 32.256-23.083 0-11.69.256-44.245 0-85.205-136.448 29.61-164.736-64.64-164.736-64.64-22.315-56.704-54.4-71.765-54.4-71.765-44.587-30.464 3.285-29.824 3.285-29.824 49.195 3.413 75.179 50.517 75.179 50.517 43.776 75.008 114.816 53.333 142.762 40.79 4.523-31.66 17.152-53.377 31.19-65.537-108.971-12.458-223.488-54.485-223.488-242.602 0-53.547 19.114-97.323 50.517-131.67-5.035-12.33-21.93-62.293 4.779-129.834 0 0 41.258-13.184 134.912 50.346a469.803 469.803 0 0 1 122.88-16.554c41.642.213 83.626 5.632 122.88 16.554 93.653-63.488 134.784-50.346 134.784-50.346 26.752 67.541 9.898 117.504 4.864 129.834 31.402 34.347 50.474 78.123 50.474 131.67 0 188.586-114.73 230.016-224.042 242.09 17.578 15.232 33.578 44.672 33.578 90.454v135.85c0 13.142 7.936 27.606 32.854 22.87C862.25 912.597 1002.667 728.747 1002.667 512c0-271.019-219.648-490.667-490.71-490.667z"></path></svg></a></div><!--]--><button type="button" class="vp-toggle-navbar-button" aria-label="Toggle Navbar" aria-expanded="false" aria-controls="nav-screen"><span><span class="vp-top"></span><span class="vp-middle"></span><span class="vp-bottom"></span></span></button></div></header><!----><!--]--><!----><div class="toggle-sidebar-wrapper"><span class="arrow start"></span></div><aside id="sidebar" class="vp-sidebar" vp-sidebar><!--[--><p class="vp-sidebar-header iotdb-sidebar-header"><span class="vp-sidebar-title">IoTDB User Guide (V2.0.x)</span></p><div class="sidebar-top-wrapper"><ul class="switch-list"><li class="switch-type">Tree</li><li class="switch-type switch-active">Table</li></ul><div class="help-icon-wrapper"><div class="help-icon"><span>Description</span></div></div></div><!--]--><ul class="vp-sidebar-links"><li><section class="vp-sidebar-group"><p class="vp-sidebar-header"><!----><span class="vp-sidebar-title">IoTDB User Guide (V2.0.x)</span><!----></p><ul class="vp-sidebar-links"></ul></section></li><li><section class="vp-sidebar-group"><button class="vp-sidebar-header clickable" type="button"><!----><span class="vp-sidebar-title">About IoTDB</span><span class="vp-arrow end"></span></button><!----></section></li><li><section class="vp-sidebar-group"><button class="vp-sidebar-header clickable" type="button"><!----><span class="vp-sidebar-title">Background knowledge</span><span class="vp-arrow end"></span></button><!----></section></li><li><a class="route-link auto-link vp-sidebar-link" href="/UserGuide/latest-Table/QuickStart/QuickStart_apache.html" aria-label="Quick Start"><!---->Quick Start<!----></a></li><li><section class="vp-sidebar-group"><button class="vp-sidebar-header clickable" type="button"><!----><span class="vp-sidebar-title">Installation and Deployment</span><span class="vp-arrow end"></span></button><!----></section></li><li><section class="vp-sidebar-group"><button class="vp-sidebar-header clickable" type="button"><!----><span class="vp-sidebar-title">Basic Functions</span><span class="vp-arrow end"></span></button><!----></section></li><li><section class="vp-sidebar-group"><button class="vp-sidebar-header clickable active" type="button"><!----><span class="vp-sidebar-title">Advanced Features</span><span class="vp-arrow down"></span></button><ul class="vp-sidebar-links"><li><a class="route-link auto-link vp-sidebar-link" href="/UserGuide/latest-Table/User-Manual/Data-Sync_apache.html" aria-label="Data Sync"><!---->Data Sync<!----></a></li><li><a class="route-link auto-link vp-sidebar-link" href="/UserGuide/latest-Table/User-Manual/User-defined-function.html" aria-label="UDF"><!---->UDF<!----></a></li><li><section class="vp-sidebar-group"><button class="vp-sidebar-header clickable" type="button"><!----><span class="vp-sidebar-title">Security Management</span><span class="vp-arrow end"></span></button><!----></section></li><li><a class="route-link auto-link vp-sidebar-link" href="/UserGuide/latest-Table/User-Manual/Tree-to-Table_apache.html" aria-label="Tree-to-Table Mapping"><!---->Tree-to-Table Mapping<!----></a></li><li><section class="vp-sidebar-group"><button class="vp-sidebar-header clickable active" type="button"><!----><span class="vp-sidebar-title">System Maintenance</span><span class="vp-arrow down"></span></button><ul class="vp-sidebar-links"><li><a class="route-link auto-link vp-sidebar-link" href="/UserGuide/latest-Table/User-Manual/Query-Performance-Analysis.html" aria-label="Query Performance Analysis"><!---->Query Performance Analysis<!----></a></li><li><a class="route-link route-link-active auto-link vp-sidebar-link active" href="/UserGuide/latest-Table/User-Manual/Load-Balance.html" aria-label="Cluster Maintenance"><!---->Cluster Maintenance<!----></a></li><li><a class="route-link auto-link vp-sidebar-link" href="/UserGuide/latest-Table/User-Manual/Maintenance-commands_apache.html" aria-label="Maintenance statement"><!---->Maintenance statement<!----></a></li></ul></section></li></ul></section></li><li><section class="vp-sidebar-group"><button class="vp-sidebar-header clickable" type="button"><!----><span class="vp-sidebar-title">AI capability</span><span class="vp-arrow end"></span></button><!----></section></li><li><section class="vp-sidebar-group"><button class="vp-sidebar-header clickable" type="button"><!----><span class="vp-sidebar-title">Tools System</span><span class="vp-arrow end"></span></button><!----></section></li><li><section class="vp-sidebar-group"><button class="vp-sidebar-header clickable" type="button"><!----><span class="vp-sidebar-title">API</span><span class="vp-arrow end"></span></button><!----></section></li><li><section class="vp-sidebar-group"><button class="vp-sidebar-header clickable" type="button"><!----><span class="vp-sidebar-title">Ecosystem Integration</span><span class="vp-arrow end"></span></button><!----></section></li><li><section class="vp-sidebar-group"><button class="vp-sidebar-header clickable" type="button"><!----><span class="vp-sidebar-title">SQL Manual</span><span class="vp-arrow end"></span></button><!----></section></li><li><section class="vp-sidebar-group"><button class="vp-sidebar-header clickable" type="button"><!----><span class="vp-sidebar-title">Technical Insider</span><span class="vp-arrow end"></span></button><!----></section></li><li><section class="vp-sidebar-group"><button class="vp-sidebar-header clickable" type="button"><!----><span class="vp-sidebar-title">Reference</span><span class="vp-arrow end"></span></button><!----></section></li><li><section class="vp-sidebar-group"><button class="vp-sidebar-header clickable" type="button"><!----><span class="vp-sidebar-title">FAQ</span><span class="vp-arrow end"></span></button><!----></section></li></ul><!----></aside><!--[--><main id="main-content" class="vp-page"><!--[--><!----><!----><nav class="vp-breadcrumb disable"></nav><div class="vp-page-title"><h1><!---->Cluster Maintenance</h1><div class="page-info"><!----><!----><span class="page-date-info" aria-label="Writing Date📅" data-balloon-pos="up"><svg xmlns="http://www.w3.org/2000/svg" class="icon calendar-icon" viewBox="0 0 1024 1024" fill="currentColor" aria-label="calendar icon" name="calendar"><path d="M716.4 110.137c0-18.753-14.72-33.473-33.472-33.473-18.753 0-33.473 14.72-33.473 33.473v33.473h66.993v-33.473zm-334.87 0c0-18.753-14.72-33.473-33.473-33.473s-33.52 14.72-33.52 33.473v33.473h66.993v-33.473zm468.81 33.52H716.4v100.465c0 18.753-14.72 33.473-33.472 33.473a33.145 33.145 0 01-33.473-33.473V143.657H381.53v100.465c0 18.753-14.72 33.473-33.473 33.473a33.145 33.145 0 01-33.473-33.473V143.657H180.6A134.314 134.314 0 0046.66 277.595v535.756A134.314 134.314 0 00180.6 947.289h669.74a134.36 134.36 0 00133.94-133.938V277.595a134.314 134.314 0 00-133.94-133.938zm33.473 267.877H147.126a33.145 33.145 0 01-33.473-33.473c0-18.752 14.72-33.473 33.473-33.473h736.687c18.752 0 33.472 14.72 33.472 33.473a33.145 33.145 0 01-33.472 33.473z"></path></svg><span data-allow-mismatch="text">12/11/25</span><meta property="datePublished" content="2025-12-11T11:58:19.000Z"></span><!----><span class="page-reading-time-info" aria-label="Reading Time⌛" data-balloon-pos="up"><svg xmlns="http://www.w3.org/2000/svg" class="icon timer-icon" viewBox="0 0 1024 1024" fill="currentColor" aria-label="timer icon" name="timer"><path d="M799.387 122.15c4.402-2.978 7.38-7.897 7.38-13.463v-1.165c0-8.933-7.38-16.312-16.312-16.312H256.33c-8.933 0-16.311 7.38-16.311 16.312v1.165c0 5.825 2.977 10.874 7.637 13.592 4.143 194.44 97.22 354.963 220.201 392.763-122.204 37.542-214.893 196.511-220.2 389.397-4.661 5.049-7.638 11.651-7.638 19.03v5.825h566.49v-5.825c0-7.379-2.849-13.981-7.509-18.9-5.049-193.016-97.867-351.985-220.2-389.527 123.24-37.67 216.446-198.453 220.588-392.892zM531.16 450.445v352.632c117.674 1.553 211.787 40.778 211.787 88.676H304.097c0-48.286 95.149-87.382 213.728-88.676V450.445c-93.077-3.107-167.901-81.297-167.901-177.093 0-8.803 6.99-15.793 15.793-15.793 8.803 0 15.794 6.99 15.794 15.793 0 80.261 63.69 145.635 142.01 145.635s142.011-65.374 142.011-145.635c0-8.803 6.99-15.793 15.794-15.793s15.793 6.99 15.793 15.793c0 95.019-73.789 172.82-165.96 177.093z"></path></svg><span>About 12 min</span><meta property="timeRequired" content="PT12M"></span><!----><!----></div><hr></div><!----><div class="" vp-content><!----><div id="markdown-content"><h1 id="cluster-maintenance" tabindex="-1"><a class="header-anchor" href="#cluster-maintenance"><span>Cluster Maintenance</span></a></h1><h2 id="_1-cluster-scaling" tabindex="-1"><a class="header-anchor" href="#_1-cluster-scaling"><span>1. Cluster Scaling</span></a></h2><p>When an IoTDB cluster encounters resource bottlenecks such as CPU, memory, disk, or network due to a surge in data volume or access pressure, this guide can be used for horizontal scaling to enhance the overall performance and capacity of the cluster.</p><h3 id="_1-1-core-concepts" tabindex="-1"><a class="header-anchor" href="#_1-1-core-concepts"><span>1.1 Core Concepts</span></a></h3><p>Before performing scaling operations, it is necessary to understand concepts related to IoTDB cluster architecture, series partitioning, time partitioning, and more.</p><h4 id="_1-1-1-glossary-of-terms" tabindex="-1"><a class="header-anchor" href="#_1-1-1-glossary-of-terms"><span>1.1.1 Glossary of Terms</span></a></h4><table><thead><tr><th><strong>Term</strong></th><th><strong>Type</strong></th><th><strong>Explanation</strong></th></tr></thead><tbody><tr><td><strong>ConfigNode</strong></td><td>Node Role</td><td>Management node, responsible for managing cluster information, including recording partition information, load balancing, operation scheduling, and node management.</td></tr><tr><td><strong>DataNode</strong></td><td>Node Role</td><td>Data node, responsible for providing data read/write services for clients, and comprehensively managing data and metadata. Data nodes form different replica groups.</td></tr><tr><td><strong>Database</strong></td><td>Metadata</td><td>Database, where data in different databases is physically isolated.</td></tr><tr><td><strong>DeviceId</strong></td><td>Device Name</td><td>The full path from the root to the second-to-last level in the metadata tree represents a DeviceId.</td></tr><tr><td><strong>SeriesSlot</strong></td><td>Series Partition Slot</td><td>Each Database corresponds to a fixed number of series slots, containing the metadata of the series within it.</td></tr><tr><td><strong>SeriesTimeSlot</strong></td><td>A Time Partition Slot of a Series Slot</td><td>Corresponds to the data of all series within a SeriesSlot for one time partition.</td></tr><tr><td><strong>SchemaRegion</strong></td><td>A Set of Metadata Partitions</td><td>A collection of multiple SeriesSlots. The metadata management engine on a DataNode, providing read/write operations for metadata.</td></tr><tr><td><strong>DataRegion</strong></td><td>A Set of Data Partitions</td><td>A collection of multiple SeriesTimeSlots. The data management engine on a DataNode, providing data read/write operations.</td></tr><tr><td><strong>ConfigNodeGroup</strong></td><td>Logical Concept (Consensus Group)</td><td>Composed of all ConfigNode nodes in the cluster, maintaining consistent partition table information through a consensus protocol.</td></tr><tr><td><strong>SchemaRegionGroup</strong></td><td>Logical Concept (Consensus Group)</td><td>Metadata replica group, containing the same number of SchemaRegions as the metadata replica count. It manages the same metadata, serving as backups for each other.</td></tr><tr><td><strong>DataRegionGroup</strong></td><td>Logical Concept (Consensus Group)</td><td>Data replica group, containing the same number of DataRegions as the data replica count. It manages the same data, serving as backups for each other. It is the fundamental unit of the IoTDB cluster&#39;s throughput capacity.</td></tr></tbody></table><h4 id="_1-1-2-cluster-architecture" tabindex="-1"><a class="header-anchor" href="#_1-1-2-cluster-architecture"><span>1.1.2 Cluster Architecture</span></a></h4><p>The IoTDB cluster consists of management nodes (ConfigNode) and data nodes (DataNode), employing an MPP architecture to achieve large-scale parallel processing. Its core feature lies in partitioning metadata at the device level and partitioning data in two dimensions (device and time), ensuring comprehensive scalability.</p><figure><img src="/img/cluster-extention-1-en.png" alt="" tabindex="0" loading="lazy"><figcaption></figcaption></figure><h4 id="_1-1-3-partition-management" tabindex="-1"><a class="header-anchor" href="#_1-1-3-partition-management"><span>1.1.3 Partition Management</span></a></h4><h5 id="cluster-consensus-groups" tabindex="-1"><a class="header-anchor" href="#cluster-consensus-groups"><span>Cluster Consensus Groups</span></a></h5><p>In IoTDB, data partition groups (DataRegionGroup) and metadata partition groups (SchemaRegionGroup) are the smallest units for read/write load, ensuring data consistency through the <strong>consensus group</strong>​ mechanism. Therefore, the essence of cluster scaling is to increase data partitions to enhance concurrent processing capability and throughput.</p><figure><img src="/img/cluster-extention-2.png" alt="" tabindex="0" loading="lazy"><figcaption></figcaption></figure><h5 id="slot-mechanism-for-partitioning" tabindex="-1"><a class="header-anchor" href="#slot-mechanism-for-partitioning"><span>Slot Mechanism for Partitioning</span></a></h5><p>To support scaling and efficient distributed management, IoTDB introduces two core slot mechanisms for partitioning and load scheduling.</p><p>The first is the ​<strong>Series Partition Slot</strong>​, a mechanism for vertically managing time series. Each database holds a fixed number of series partition slots (default 1000). Each time series is assigned to a unique series partition slot via a series partitioning algorithm. Using series partition slots avoids directly recording partition information at the device or time series level, significantly reducing ConfigNode memory overhead.</p><figure><img src="/img/cluster-extention-3.png" alt="" tabindex="0" loading="lazy"><figcaption></figcaption></figure><p>The second is the ​<strong>Time Partition Slot</strong>​, used for horizontally splitting time series data. Each data partition consists of the combination of a series partition slot and a time partition slot. When a specific series partition slot has data within a particular time partition slot, the corresponding data partition is generated.</p><figure><img src="/img/cluster-extention-4-en.png" alt="" tabindex="0" loading="lazy"><figcaption></figcaption></figure><p>Through the combination of series partition slots and time partition slots, IoTDB can flexibly increase data partition groups during scaling, achieving balanced data distribution and efficient read/write operations, thereby enhancing the entire cluster&#39;s throughput capacity and scalability.</p><h3 id="_1-2-implementation-principle" tabindex="-1"><a class="header-anchor" href="#_1-2-implementation-principle"><span>1.2 Implementation Principle</span></a></h3><p>The core of IoTDB cluster scaling is adding DataNode nodes, as DataNodes are the primary nodes handling read/write requests. The internal data partitions (DataRegions) are the key units bearing the load. The essence of scaling is to increase the cluster&#39;s concurrent processing capability and throughput by adding data partition groups.</p><p>By default, assuming the cluster&#39;s metadata replica count is three and the data replica count is two, the number of data partitions created upon initial startup is half the total number of cluster cores. For example, in a cluster of three 2-core servers, assuming the processing capacity of each data replica group is 1, the total throughput capacity of this cluster (containing 3 data replica groups) is 3. Therefore, scaling the number of servers from three to six expands the cluster from three to six data replica groups, effectively doubling the total throughput capacity.</p><figure><img src="/img/cluster-extention-5-en.png" alt="" tabindex="0" loading="lazy"><figcaption></figcaption></figure><p>After scaling, the load balancing rule for client read/write requests is that <strong>existing nodes</strong>​ may handle data reads and writes for both <strong>old data</strong>​ (data belonging to DeviceIds already existing in the cluster) and <strong>new data</strong>​ (data belonging to DeviceIds not previously existing in the cluster), while <strong>newly added nodes</strong>​ will only receive requests for the new data. The <strong>existing nodes</strong>​ do not automatically rebalance the original replica groups. Data load balancing typically occurs when a new time partition is created, scheduled by default for 8 AM every Thursday. Its core principle involves the <strong>load balancing algorithm</strong>​ operating on series partition slots and time partition slots to determine which node&#39;s partition handles the data.</p><figure><img src="/img/cluster-extention-6-en.png" alt="" tabindex="0" loading="lazy"><figcaption></figcaption></figure><p>If you wish to rebalance all data (both old and new) after scaling, you need to use the manual data partition migration function (referred to as Region Migration).</p><p>Region Migration syntax reference:</p><div class="language- line-numbers-mode" data-highlighter="shiki" data-ext="" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-"><span class="line"><span>-- Explanation: Migrate the data of which RegionId from which source DataNodeId to which target DataNodeId</span></span>
<span class="line"><span> migrateRegion</span></span>
<span class="line"><span> : MIGRATE REGION regionId=INTEGER_LITERAL FROM fromId=INTEGER_LITERAL TO toId=INTEGER_LITERAL</span></span>
<span class="line"><span> ;</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>During migration, the ConfigNode is responsible for overall scheduling. The source region and source DataNode provide the data to be removed, while the new region and new DataNode handle the added data.</p><figure><img src="/img/cluster-extention-7-en.png" alt="" tabindex="0" loading="lazy"><figcaption></figcaption></figure><p>In the cluster composed of 3 DataNodes shown above, the region 1 replica group is distributed across DataNode 1 and DataNode 2. Assuming you want to migrate the region 1 replica from DataNode 1 to DataNode 3, the operation flow is as follows:</p><ol><li>Execute the following command in the CLI:</li></ol><div class="language- line-numbers-mode" data-highlighter="shiki" data-ext="" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-"><span class="line"><span>migrate region 1 from 1 to 3</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><ol start="2"><li>The Region migration enters the <strong>Region Replication</strong>​ stage. The core task of this stage is to create a new region replica on the target node and synchronize the full data of region 1. The region status at this point is <code>Adding</code>.</li><li>Next, the migration enters the <strong>Region Removal</strong>​ stage. Once the data on the target node is fully synchronized, the data on the old region node can be safely deleted. Therefore, the core task of this step is to remove all data from the old node to free up disk space. The region status at this point is <code>Removing</code>.</li><li>After steps 2 and 3 are completed, the entire <strong>Region migration</strong>​ operation is finished.</li></ol><h3 id="_1-3-operational-steps" tabindex="-1"><a class="header-anchor" href="#_1-3-operational-steps"><span>1.3 Operational Steps</span></a></h3><h4 id="_1-3-1-prerequisites" tabindex="-1"><a class="header-anchor" href="#_1-3-1-prerequisites"><span>1.3.1 Prerequisites</span></a></h4><ol><li><p>Check the server environment. It is recommended that the operating system version matches that of the original cluster.</p></li><li><p>Verify the database version. It is recommended to use the same version as the original cluster.</p></li><li><p>Check the OS environment to ensure required ports are not occupied. DataNode uses ports 6667, 10730, 10740, 10750, 10760, 9090, 9190, 3000. Ensure these ports are free.</p><div class="language- line-numbers-mode" data-highlighter="shiki" data-ext="" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-"><span class="line"><span># If the command has output, the port is occupied.</span></span>
<span class="line"><span>lsof -i:6667 or netstat -tunp | grep 6667</span></span>
<span class="line"><span>lsof -i:10710 or netstat -tunp | grep 10710</span></span>
<span class="line"><span>lsof -i:10720 or netstat -tunp | grep 10720</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></li><li><p>Check the data directory. Ensure the server has mounted a data disk; it is recommended to place the installation package in the data disk directory.</p></li><li><p>Software Dependency: Install Java Runtime Environment (JRE), version &gt;= 1.8. Ensure the JDK/JRE environment variables are set.</p></li><li><p>Domain Configuration: It is recommended to prioritize using hostnames for IP configuration during deployment. This can prevent issues with the database failing to start due to later changes in the host IP. To set the hostname, configure <code>/etc/hosts</code>on the target server. For example, if the local IP is 192.168.1.3 and the hostname is <code>iotdb-1</code>, you can set the server&#39;s hostname using the following command. Then, use the hostname to configure IoTDB&#39;s <code>cn_internal_address</code>, <code>dn_internal_address</code>, and <code>dn_rpc_address</code>.</p></li></ol><div class="language- line-numbers-mode" data-highlighter="shiki" data-ext="" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-"><span class="line"><span># Note: Both the new server and the original cluster nodes need domain configuration.</span></span>
<span class="line"><span>echo &quot;192.168.1.3 iotdb-1&quot; &gt;&gt; /etc/hosts</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div></div></div><h4 id="_1-3-2-scaling-operation" tabindex="-1"><a class="header-anchor" href="#_1-3-2-scaling-operation"><span>1.3.2 Scaling Operation</span></a></h4><ol><li>To ensure the TimechoDB installation package you obtained is complete and correct, it is recommended to perform an SHA512 checksum before installation and deployment.</li><li>Unzip the installation package and enter the installation directory.</li></ol><div class="language- line-numbers-mode" data-highlighter="shiki" data-ext="" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-"><span class="line"><span>unzip timechodb-{version}-bin.zip</span></span>
<span class="line"><span>cd timechodb-{version}-bin</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div></div></div><ol start="3"><li>Modify the relevant configuration.</li></ol><div class="language- line-numbers-mode" data-highlighter="shiki" data-ext="" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-"><span class="line"><span>cd timechodb-{version}-bin/conf</span></span>
<span class="line"><span>vim iotdb-system.properties</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div></div></div><table><thead><tr><th>Configuration Item</th><th>Description</th><th>Default</th><th>Remarks</th></tr></thead><tbody><tr><td><code>dn_seed_config_node</code></td><td>The ConfigNode address (format:<code>cn_internal_address:cn_internal_port</code>) that a node connects to when registering to join the cluster.</td><td>127.0.0.1:10710</td><td>Extremely important. You must modify this item to the address of the primary ConfigNode in the original cluster.</td></tr><tr><td><code>dn_rpc_address</code></td><td>Address for the client RPC service.</td><td>0.0.0.0</td><td>Modify as needed; restart service to take effect.</td></tr><tr><td><code>dn_rpc_port</code></td><td>Port for the client RPC service.</td><td>6667</td><td>Modify as needed; restart service to take effect.</td></tr><tr><td><code>dn_internal_address</code></td><td>Address used by the DataNode for internal cluster communication.</td><td>127.0.0.1</td><td>Modify as needed; cannot be changed after the first startup.</td></tr><tr><td><code>dn_internal_port</code></td><td>Port used by the DataNode for internal cluster communication.</td><td>10730</td><td>Modify as needed; cannot be changed after the first startup.</td></tr><tr><td><code>dn_mpp_data_exchange_port</code></td><td>Port used by the DataNode for receiving data streams.</td><td>10740</td><td>Modify as needed; restart service to take effect.</td></tr><tr><td><code>dn_data_region_consensus_port</code></td><td>Port used by the DataNode for consensus protocol communication of data replicas.</td><td>10750</td><td>Modify as needed; restart service to take effect.</td></tr><tr><td><code>dn_schema_region_consensus_port</code></td><td>Port used by the DataNode for consensus protocol communication of metadata replicas.</td><td>10760</td><td>Modify as needed; restart service to take effect.</td></tr></tbody></table><ol start="4"><li>Start the DataNode.</li></ol><p>Navigate to the <code>sbin</code>directory under IoTDB and start the datanode:</p><div class="language- line-numbers-mode" data-highlighter="shiki" data-ext="" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-"><span class="line"><span>./sbin/start-datanode.sh -d # The &quot;-d&quot; parameter starts the process in the background.</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><ol start="5"><li>Connect to the original cluster via CLI command for post-scaling verification.</li></ol><div class="language- line-numbers-mode" data-highlighter="shiki" data-ext="" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-"><span class="line"><span># Linux or macOS</span></span>
<span class="line"><span> ./timechodb-{version}-bin/sbin/start-cli.sh</span></span>
<span class="line"><span></span></span>
<span class="line"><span> # Windows</span></span>
<span class="line"><span> .\timechodb-{version}-bin\sbin\start-cli.bat</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><ol start="6"><li>Execute commands for verification.</li></ol><p>Execute the <code>show datanodes</code>command for verification. The expected result is that the newly added node appears in the list with a status of <code>Running</code>.</p><div class="language- line-numbers-mode" data-highlighter="shiki" data-ext="" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-"><span class="line"><span>IoTDB&gt; show datanodes</span></span>
<span class="line"><span>+------+-------+----------+-------+-------------+---------------+</span></span>
<span class="line"><span>|NodeID| Status|RpcAddress|RpcPort|DataRegionNum|SchemaRegionNum|</span></span>
<span class="line"><span>+------+-------+----------+-------+-------------+---------------+</span></span>
<span class="line"><span>| 1|Running| 0.0.0.0| 6667| 0| 0|</span></span>
<span class="line"><span>| 2|Running| 0.0.0.0| 6668| 1| 1|</span></span>
<span class="line"><span>| 3|Running| 0.0.0.0| 6669| 1| 0|</span></span>
<span class="line"><span>| 4|Running| 0.0.0.0| 6669| 1| 0| # Newly added node</span></span>
<span class="line"><span>+------+-------+----------+-------+-------------+---------------+</span></span>
<span class="line"><span>Total line number = 4</span></span>
<span class="line"><span>It costs 0.110s</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><ol start="7"><li>Repeat the above steps for other nodes. It is important to note that for a new node to join the original cluster successfully, the original cluster must have sufficient allowance for additional DataNode nodes. Otherwise, you will need to contact the support team to reapply for activation code information.</li></ol><h4 id="_1-3-3-manual-load-balancing-optional" tabindex="-1"><a class="header-anchor" href="#_1-3-3-manual-load-balancing-optional"><span>1.3.3 Manual Load Balancing (Optional)</span></a></h4><p>By default, historical data is not automatically migrated after scaling. If you need to balance the data distribution across nodes, you must manually migrate Regions. The estimated migration time is: Region data volume ÷ actual data transfer rate. As shown in the figure below, assuming 80TB of data load from <strong>existing nodes</strong>​ needs to be balanced to ​<strong>newly added nodes</strong>​, if the data volume of a single Region is 1 TB and the transfer speed is 100 MB/s, the migration will take approximately 3 hours.</p><figure><img src="/img/cluster-extention-8-en.png" alt="" tabindex="0" loading="lazy"><figcaption></figcaption></figure><p>The specific operations are as follows:</p><div class="language- line-numbers-mode" data-highlighter="shiki" data-ext="" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-"><span class="line"><span>-- 1. Migrate the replica data of Region-1 from DataNode-2 to DataNode-4</span></span>
<span class="line"><span>migrate region 1 from 2 to 4</span></span>
<span class="line"><span></span></span>
<span class="line"><span>-- 2. Migrate the replica data of Region-2 from DataNode-3 to DataNode-5</span></span>
<span class="line"><span>migrate region 2 from 3 to 5</span></span>
<span class="line"><span></span></span>
<span class="line"><span>-- 3. Migrate the replica data of Region-3 from DataNode-1 to DataNode-6</span></span>
<span class="line"><span>migrate region 3 from 1 to 6</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>After the migration is complete, the Region data in the system will be redistributed between the <strong>old nodes</strong>​ and the ​<strong>new nodes</strong>​, achieving balanced disk space usage and optimal resource utilization.</p><figure><img src="/img/cluster-extention-9-en.png" alt="" tabindex="0" loading="lazy"><figcaption></figcaption></figure><h2 id="_2-node-management" tabindex="-1"><a class="header-anchor" href="#_2-node-management"><span>2. Node Management</span></a></h2><p>Node management is mainly used to remove and add ConfigNodes and DataNodes in a cluster. It is a basic operation to ensure cluster high availability and achieve load balancing.</p><h3 id="_2-1-confignode-maintenance" tabindex="-1"><a class="header-anchor" href="#_2-1-confignode-maintenance"><span>2.1 ConfigNode Maintenance</span></a></h3><p>ConfigNode maintenance includes two operations: adding and removing ConfigNodes. There are two common usage scenarios:</p><ul><li><strong>Cluster scaling</strong>: When there is only 1 ConfigNode in the cluster and you want to increase the high availability of ConfigNodes, you can add 2 more ConfigNodes so that the cluster has 3 ConfigNodes.</li><li><strong>Cluster fault recovery</strong>: When the machine hosting a ConfigNode fails and the ConfigNode cannot run properly, you can remove the faulty ConfigNode and add a new ConfigNode to the cluster.</li></ul><blockquote><p>❗️ Note: After completing ConfigNode maintenance, ensure the cluster has <strong>1 or 3 normally running ConfigNodes</strong>.<br> 2 ConfigNodes do not provide high availability, and more than 3 ConfigNodes will cause performance degradation.</p></blockquote><h4 id="_2-1-1-adding-a-confignode" tabindex="-1"><a class="header-anchor" href="#_2-1-1-adding-a-confignode"><span>2.1.1 Adding a ConfigNode</span></a></h4><p><strong>Script commands:</strong></p><div class="language-bash line-numbers-mode" data-highlighter="shiki" data-ext="bash" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-bash"><span class="line"><span style="color:#7F848E;font-style:italic;"># Linux / MacOS</span></span>
<span class="line"><span style="color:#7F848E;font-style:italic;"># First switch to the IoTDB root directory</span></span>
<span class="line"><span style="color:#61AFEF;">sbin/start-confignode.sh</span></span>
<span class="line"></span>
<span class="line"><span style="color:#7F848E;font-style:italic;"># Windows</span></span>
<span class="line"><span style="color:#7F848E;font-style:italic;"># First switch to the IoTDB root directory</span></span>
<span class="line"><span style="color:#7F848E;font-style:italic;"># Before V2.0.4.x</span></span>
<span class="line"><span style="color:#61AFEF;">sbin\start-confignode.bat</span></span>
<span class="line"></span>
<span class="line"><span style="color:#7F848E;font-style:italic;"># V2.0.4.x and later</span></span>
<span class="line"><span style="color:#61AFEF;">sbin\windows\start-confignode.bat</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p><strong>Parameter description:</strong></p><table><thead><tr><th>Param</th><th>Description</th><th>Required</th></tr></thead><tbody><tr><td>-v</td><td>Show version information</td><td>No</td></tr><tr><td>-f</td><td>Run the script in the foreground, not in the background</td><td>No</td></tr><tr><td>-d</td><td>Start in daemon mode (run in the background)</td><td>No</td></tr><tr><td>-p</td><td>Specify a file to store the process ID for process management</td><td>No</td></tr><tr><td>-c</td><td>Specify the path of the configuration folder to load configuration files</td><td>No</td></tr><tr><td>-g</td><td>Print detailed garbage collection (GC) information</td><td>No</td></tr><tr><td>-H</td><td>Specify the path for Java heap dump files on JVM out-of-memory</td><td>No</td></tr><tr><td>-E</td><td>Specify the path for JVM error log files</td><td>No</td></tr><tr><td>-D</td><td>Define system properties in the format <code>key=value</code></td><td>No</td></tr><tr><td>-X</td><td>Directly pass <code>-XX</code> parameters to the JVM</td><td>No</td></tr><tr><td>-h</td><td>Show help</td><td>No</td></tr></tbody></table><h4 id="_2-1-2-removing-a-confignode" tabindex="-1"><a class="header-anchor" href="#_2-1-2-removing-a-confignode"><span>2.1.2 Removing a ConfigNode</span></a></h4><p>First connect to the cluster via CLI and use <code>show confignodes</code> to confirm the NodeID of the ConfigNode to be removed:</p><div class="language-sql line-numbers-mode" data-highlighter="shiki" data-ext="sql" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-sql"><span class="line"><span style="color:#ABB2BF;">IoTDB</span><span style="color:#56B6C2;">&gt;</span><span style="color:#ABB2BF;"> show confignodes</span></span>
<span class="line"><span style="color:#ABB2BF;">+</span><span style="color:#7F848E;font-style:italic;">------+-------+---------------+------------+--------+</span></span>
<span class="line"><span style="color:#ABB2BF;">|NodeID| </span><span style="color:#C678DD;">Status</span><span style="color:#ABB2BF;">|InternalAddress|InternalPort| </span><span style="color:#C678DD;">Role</span><span style="color:#ABB2BF;">|</span></span>
<span class="line"><span style="color:#ABB2BF;">+</span><span style="color:#7F848E;font-style:italic;">------+-------+---------------+------------+--------+</span></span>
<span class="line"><span style="color:#ABB2BF;">| </span><span style="color:#D19A66;">0</span><span style="color:#ABB2BF;">|Running| </span><span style="color:#D19A66;">127</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">0</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">0</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">1</span><span style="color:#ABB2BF;">| </span><span style="color:#D19A66;">10710</span><span style="color:#ABB2BF;">| Leader|</span></span>
<span class="line"><span style="color:#ABB2BF;">| </span><span style="color:#D19A66;">1</span><span style="color:#ABB2BF;">|Running| </span><span style="color:#D19A66;">127</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">0</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">0</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">1</span><span style="color:#ABB2BF;">| </span><span style="color:#D19A66;">10711</span><span style="color:#ABB2BF;">|Follower|</span></span>
<span class="line"><span style="color:#ABB2BF;">| </span><span style="color:#D19A66;">2</span><span style="color:#ABB2BF;">|Running| </span><span style="color:#D19A66;">127</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">0</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">0</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">1</span><span style="color:#ABB2BF;">| </span><span style="color:#D19A66;">10712</span><span style="color:#ABB2BF;">|Follower|</span></span>
<span class="line"><span style="color:#ABB2BF;">+</span><span style="color:#7F848E;font-style:italic;">------+-------+---------------+------------+--------+</span></span>
<span class="line"><span style="color:#ABB2BF;">Total </span><span style="color:#C678DD;">line</span><span style="color:#C678DD;"> number</span><span style="color:#56B6C2;"> =</span><span style="color:#D19A66;"> 3</span></span>
<span class="line"><span style="color:#ABB2BF;">It costs </span><span style="color:#D19A66;">0</span><span style="color:#ABB2BF;">.030s</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>Then remove the ConfigNode using the following SQL command:</p><div class="language-sql line-numbers-mode" data-highlighter="shiki" data-ext="sql" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-sql"><span class="line"><span style="color:#C678DD;">REMOVE</span><span style="color:#ABB2BF;"> CONFIGNODE </span><span style="color:#E06C75;">[confignode_id]</span><span style="color:#ABB2BF;">;</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><h3 id="_2-2-datanode-maintenance" tabindex="-1"><a class="header-anchor" href="#_2-2-datanode-maintenance"><span>2.2 DataNode Maintenance</span></a></h3><p>There are two common scenarios for DataNode maintenance:</p><ul><li><strong>Cluster scaling</strong>: Add new DataNodes to the cluster to expand cluster capacity.</li><li><strong>Cluster fault recovery</strong>: When the machine hosting a DataNode fails and the DataNode cannot run properly, remove the faulty DataNode and add a new DataNode to the cluster.</li></ul><blockquote><p>❗️ Note: To ensure normal cluster operation, during and after DataNode maintenance, the number of normally running DataNodes must <strong>not be less than the data replication factor (usually 2) or the metadata replication factor (usually 3)</strong>.</p></blockquote><h4 id="_2-2-1-adding-a-datanode" tabindex="-1"><a class="header-anchor" href="#_2-2-1-adding-a-datanode"><span>2.2.1 Adding a DataNode</span></a></h4><p><strong>Script commands:</strong></p><div class="language-bash line-numbers-mode" data-highlighter="shiki" data-ext="bash" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-bash"><span class="line"><span style="color:#7F848E;font-style:italic;"># Linux / MacOS</span></span>
<span class="line"><span style="color:#7F848E;font-style:italic;"># First switch to the IoTDB root directory</span></span>
<span class="line"><span style="color:#61AFEF;">sbin/start-datanode.sh</span></span>
<span class="line"></span>
<span class="line"><span style="color:#7F848E;font-style:italic;"># Windows</span></span>
<span class="line"><span style="color:#7F848E;font-style:italic;"># First switch to the IoTDB root directory</span></span>
<span class="line"><span style="color:#7F848E;font-style:italic;"># Before V2.0.4.x</span></span>
<span class="line"><span style="color:#61AFEF;">sbin\start-datanode.bat</span></span>
<span class="line"></span>
<span class="line"><span style="color:#7F848E;font-style:italic;"># V2.0.4.x and later</span></span>
<span class="line"><span style="color:#61AFEF;">tools\windows\start-datanode.bat</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p><strong>Parameter description:</strong></p><table><thead><tr><th>Param</th><th>Description</th><th>Required</th></tr></thead><tbody><tr><td>-v</td><td>Show version information</td><td>No</td></tr><tr><td>-f</td><td>Run the script in the foreground, not in the background</td><td>No</td></tr><tr><td>-d</td><td>Start in daemon mode (run in the background)</td><td>No</td></tr><tr><td>-p</td><td>Specify a file to store the process ID for process management</td><td>No</td></tr><tr><td>-c</td><td>Specify the path of the configuration folder to load configuration files</td><td>No</td></tr><tr><td>-g</td><td>Print detailed garbage collection (GC) information</td><td>No</td></tr><tr><td>-H</td><td>Specify the path for Java heap dump files on JVM out-of-memory</td><td>No</td></tr><tr><td>-E</td><td>Specify the path for JVM error log files</td><td>No</td></tr><tr><td>-D</td><td>Define system properties in the format <code>key=value</code></td><td>No</td></tr><tr><td>-X</td><td>Directly pass <code>-XX</code> parameters to the JVM</td><td>No</td></tr><tr><td>-h</td><td>Show help</td><td>No</td></tr></tbody></table><p><strong>Note:</strong> After adding a DataNode, as new writes arrive (and old data expires if TTL is set), the cluster load will gradually balance toward the new DataNode, eventually achieving balanced storage and computing resources across all nodes.</p><h4 id="_2-2-2-removing-a-datanode" tabindex="-1"><a class="header-anchor" href="#_2-2-2-removing-a-datanode"><span>2.2.2 Removing a DataNode</span></a></h4><p>First connect to the cluster via CLI and use <code>show datanodes</code> to confirm the NodeID of the DataNode to be removed:</p><div class="language-sql line-numbers-mode" data-highlighter="shiki" data-ext="sql" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-sql"><span class="line"><span style="color:#ABB2BF;">IoTDB</span><span style="color:#56B6C2;">&gt;</span><span style="color:#ABB2BF;"> show datanodes</span></span>
<span class="line"><span style="color:#ABB2BF;">+</span><span style="color:#7F848E;font-style:italic;">------+-------+----------+-------+-------------+---------------+</span></span>
<span class="line"><span style="color:#ABB2BF;">|NodeID| </span><span style="color:#C678DD;">Status</span><span style="color:#ABB2BF;">|RpcAddress|RpcPort|DataRegionNum|SchemaRegionNum|</span></span>
<span class="line"><span style="color:#ABB2BF;">+</span><span style="color:#7F848E;font-style:italic;">------+-------+----------+-------+-------------+---------------+</span></span>
<span class="line"><span style="color:#ABB2BF;">| </span><span style="color:#D19A66;">1</span><span style="color:#ABB2BF;">|Running| </span><span style="color:#D19A66;">0</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">0</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">0</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">0</span><span style="color:#ABB2BF;">| </span><span style="color:#D19A66;">6667</span><span style="color:#ABB2BF;">| </span><span style="color:#D19A66;">0</span><span style="color:#ABB2BF;">| </span><span style="color:#D19A66;">0</span><span style="color:#ABB2BF;">|</span></span>
<span class="line"><span style="color:#ABB2BF;">| </span><span style="color:#D19A66;">2</span><span style="color:#ABB2BF;">|Running| </span><span style="color:#D19A66;">0</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">0</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">0</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">0</span><span style="color:#ABB2BF;">| </span><span style="color:#D19A66;">6668</span><span style="color:#ABB2BF;">| </span><span style="color:#D19A66;">1</span><span style="color:#ABB2BF;">| </span><span style="color:#D19A66;">1</span><span style="color:#ABB2BF;">|</span></span>
<span class="line"><span style="color:#ABB2BF;">| </span><span style="color:#D19A66;">3</span><span style="color:#ABB2BF;">|Running| </span><span style="color:#D19A66;">0</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">0</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">0</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">0</span><span style="color:#ABB2BF;">| </span><span style="color:#D19A66;">6669</span><span style="color:#ABB2BF;">| </span><span style="color:#D19A66;">1</span><span style="color:#ABB2BF;">| </span><span style="color:#D19A66;">0</span><span style="color:#ABB2BF;">|</span></span>
<span class="line"><span style="color:#ABB2BF;">+</span><span style="color:#7F848E;font-style:italic;">------+-------+----------+-------+-------------+---------------+</span></span>
<span class="line"><span style="color:#ABB2BF;">Total </span><span style="color:#C678DD;">line</span><span style="color:#C678DD;"> number</span><span style="color:#56B6C2;"> =</span><span style="color:#D19A66;"> 3</span></span>
<span class="line"><span style="color:#ABB2BF;">It costs </span><span style="color:#D19A66;">0</span><span style="color:#ABB2BF;">.110s</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>Then remove the DataNode using the following SQL command:</p><div class="language-sql line-numbers-mode" data-highlighter="shiki" data-ext="sql" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-sql"><span class="line"><span style="color:#C678DD;">REMOVE</span><span style="color:#ABB2BF;"> DATANODE </span><span style="color:#E06C75;">[datanode_id]</span><span style="color:#ABB2BF;">;</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><h2 id="_3-load-balance" tabindex="-1"><a class="header-anchor" href="#_3-load-balance"><span>3. Load Balance</span></a></h2><p>Region migration belongs to advanced operations and maintenance functions, which have certain operational costs. It is recommended to read the entire document before using this function. If you have any questions about the solution design, please contact the IoTDB team for technical support.</p><h3 id="_3-1-feature-introduction" tabindex="-1"><a class="header-anchor" href="#_3-1-feature-introduction"><span>3.1 Feature introduction</span></a></h3><p>IoTDB is a distributed database, and the balanced distribution of data plays an important role in load balancing the disk space and write pressure of the cluster. Region is the basic unit for distributed storage of data in IoTDB cluster, and the specific concept can be seen in <a class="route-link" href="/UserGuide/latest-Table/Background-knowledge/Cluster-Concept.html">region</a></p><p>Under normal operation of the cluster, IoTDB will automatically perform load balancing on data. However, in scenarios where a new DataNode node is added to the cluster or where the hard disk of the machine where the DataNode is located is damaged and data needs to be recovered, manual region migration can be used to finely adjust the cluster load and operations.</p><p>Here is a schematic diagram of the region migration process :</p><figure><img src="/img/region%E8%BF%81%E7%A7%BB%E7%A4%BA%E6%84%8F%E5%9B%BE20241210.png" alt="" tabindex="0" loading="lazy"><figcaption></figcaption></figure><h3 id="_3-2-notes" tabindex="-1"><a class="header-anchor" href="#_3-2-notes"><span>3.2 Notes</span></a></h3><ol><li>It is recommended to only use the Region Migration feature on IoTDB 1.3.3 and higher versions.</li><li>Region migration is only supported when the consensus protocol is IoTConsus or Ratis (in iotdb system. properties, the <code>schema_region_consensus_protocol_class</code> and<code>data_region_consensus_protocol_class</code>).</li><li>Region migration consumes system resources such as disk space and network bandwidth. It is recommended to perform the migration during periods of low business load.</li><li>Under ideal circumstances, Region migration does not affect user-side read or write operations. In special cases, Region migration may block writes. For detailed identification and handling of such situations, please refer to the user guide.</li></ol><h3 id="_3-3-instructions-for-use" tabindex="-1"><a class="header-anchor" href="#_3-3-instructions-for-use"><span>3.3 Instructions for use</span></a></h3><ul><li><p><strong>Grammar definition</strong> :</p><p>Submit an asynchronous task to migrate a region from one DataNode to another.</p><div class="language-sql line-numbers-mode" data-highlighter="shiki" data-ext="sql" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-sql"><span class="line"><span style="color:#ABB2BF;"> migrateRegion</span></span>
<span class="line"><span style="color:#ABB2BF;"> : MIGRATE REGION regionId</span><span style="color:#56B6C2;">=</span><span style="color:#ABB2BF;">INTEGER_LITERAL </span><span style="color:#C678DD;">FROM</span><span style="color:#ABB2BF;"> fromId</span><span style="color:#56B6C2;">=</span><span style="color:#ABB2BF;">INTEGER_LITERAL </span><span style="color:#C678DD;">TO</span><span style="color:#ABB2BF;"> toId</span><span style="color:#56B6C2;">=</span><span style="color:#ABB2BF;">INTEGER_LITERAL</span></span>
<span class="line"><span style="color:#ABB2BF;"> ;</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></li><li><p><strong>Example</strong> :</p><p>Migrating region 1 from DataNode 2 to DataNode 3:</p><div class="language-sql line-numbers-mode" data-highlighter="shiki" data-ext="sql" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-sql"><span class="line"><span style="color:#ABB2BF;"> IoTDB</span><span style="color:#56B6C2;">&gt;</span><span style="color:#ABB2BF;"> migrate region </span><span style="color:#D19A66;">1</span><span style="color:#C678DD;"> from</span><span style="color:#D19A66;"> 2</span><span style="color:#C678DD;"> to</span><span style="color:#D19A66;"> 3</span></span>
<span class="line"><span style="color:#ABB2BF;"> Msg: The </span><span style="color:#C678DD;">statement</span><span style="color:#C678DD;"> is</span><span style="color:#ABB2BF;"> executed successfully.</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div></div></div><p>&quot;The statement is executed successfully&quot; only represents the successful submission of the region migration task, not the completion of execution. The execution status of the task can be viewed through the CLI command <code>show regions </code>.</p></li><li><p><strong>Related configuration</strong> :</p><ul><li>Migration speed control : modify <code>iotdb-system.properties </code>parameters <code>region_migration_speed_limit_bytes_per_second </code>control region migration speed.</li></ul></li><li><p><strong>Time cost estimation</strong> :</p><ul><li>If there are no concurrent writes during the migration process, the time consumption can be simply estimated by dividing the region data volume by the data transfer speed. For example, for a 1TB region, the hard disk internet bandwidth and speed limit parameters jointly determine that the data transfer speed is 100MB/s, so it takes about 3 hours to complete the migration.</li><li>If there are concurrent writes in the migration process, the time consumption will increase, and the specific time consumption depends on various factors such as write pressure and system resources. It can be simply estimated as <code>no concurrent write time × 1.5 </code>.</li></ul></li><li><p><strong>Migration progress observation</strong> : During the migration process, the state changes can be observed through the CLI command <code>show regions </code>. Taking the 2 replicas as an example, the state of the consensus group where the region is located will go through the following process:</p><ul><li>Before migration starts: <code>Running </code>, <code>Running </code>.</li><li>Expansion phase: <code>Running </code>, <code>Running </code>, <code>Adding </code>. Due to the large number of file transfers involved, it may take a long time. If using IoTConsensus, the specific file transfer progress can be searched in the DataNode log <code>[SNAPSHOT TRANSMISSION] </code>.</li><li>Stages: <code>Removing </code>, <code>Running </code>, <code>Running </code>.</li><li>Migration complete: <code>Running </code>, <code>Running </code>.</li></ul><p>Taking the expansion phase as an example, the result of <code>show regions</code> may be:</p><div class="language-plain line-numbers-mode" data-highlighter="shiki" data-ext="plain" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-plain"><span class="line"><span>IoTDB&gt; show regions</span></span>
<span class="line"><span>+--------+------------+-------+--------+-------------+-----------+----------+----------+-------+---------------+--------+-----------------------+</span></span>
<span class="line"><span>|RegionId| Type| Status|Database|SeriesSlotNum|TimeSlotNum|DataNodeId|RpcAddress|RpcPort|InternalAddress| Role| CreateTime|</span></span>
<span class="line"><span>+--------+------------+-------+--------+-------------+-----------+----------+----------+-------+---------------+--------+-----------------------+</span></span>
<span class="line"><span>| 0|SchemaRegion|Running| root.ln| 1| 0| 1| 0.0.0.0| 6668| 127.0.0.1| Leader|2024-04-15T18:55:17.691|</span></span>
<span class="line"><span>| 0|SchemaRegion|Running| root.ln| 1| 0| 2| 0.0.0.0| 6668| 127.0.0.1| Leader|2024-04-15T18:55:17.691|</span></span>
<span class="line"><span>| 0|SchemaRegion|Running| root.ln| 1| 0| 3| 0.0.0.0| 6668| 127.0.0.1| Leader|2024-04-15T18:55:17.691|</span></span>
<span class="line"><span>| 1| DataRegion|Running| root.ln| 1| 1| 1| 0.0.0.0| 6667| 127.0.0.1| Leader|2024-04-15T18:55:19.457|</span></span>
<span class="line"><span>| 1| DataRegion|Running| root.ln| 1| 1| 2| 0.0.0.0| 6668| 127.0.0.1|Follower|2024-04-15T18:55:19.457|</span></span>
<span class="line"><span>| 1| DataRegion| Adding| root.ln| 1| 1| 3| 0.0.0.0| 6668| 127.0.0.1|Follower|2024-04-15T18:55:19.457|</span></span>
<span class="line"><span>+--------+------------+-------+--------+-------------+-----------+----------+----------+-------+---------------+--------+-----------------------+</span></span>
<span class="line"><span>Total line number = 3</span></span>
<span class="line"><span>It costs 0.003s</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></li><li><p><strong>Block Write</strong>:<br> The region migration in IoTConsensus does not directly block writes. However, since the process requires suspending the cleanup of WAL files, if the accumulated WAL files exceed the threshold defined by wal_throttle_threshold_in_byte, the current DataNode will pause writing until the WAL files fall below the threshold.</p><p>If a write error occurs during the migration due to the WAL exceeding the threshold (e.g., an error message like “The write is rejected because the wal directory size has reached the threshold”), you can increase the wal_throttle_threshold_in_byte value to 500GB or more to allow continued writing. Use the following SQL statement:</p><div class="language-plain line-numbers-mode" data-highlighter="shiki" data-ext="plain" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-plain"><span class="line"><span> IoTDB&gt; set configuration &quot;wal_throttle_threshold_in_byte&quot;=&quot;536870912000&quot; </span></span>
<span class="line"><span> Msg: The statement is executed successfully.</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div></div></div></li></ul></div><!----><!----><!----></div><footer class="vp-page-meta"><div class="vp-meta-item edit-link"><a class="auto-link external-link vp-meta-label" href="https://github.com/apache/iotdb-docs/edit/main/src/UserGuide/latest-Table/User-Manual/Load-Balance.md" aria-label="Found Error? Edit this page on GitHub" rel="noopener noreferrer" target="_blank"><!--[--><svg xmlns="http://www.w3.org/2000/svg" class="icon edit-icon" viewBox="0 0 1024 1024" fill="currentColor" aria-label="edit icon" name="edit"><path d="M430.818 653.65a60.46 60.46 0 0 1-50.96-93.281l71.69-114.012 7.773-10.365L816.038 80.138A60.46 60.46 0 0 1 859.225 62a60.46 60.46 0 0 1 43.186 18.138l43.186 43.186a60.46 60.46 0 0 1 0 86.373L588.879 565.55l-8.637 8.637-117.466 68.234a60.46 60.46 0 0 1-31.958 11.229z"></path><path d="M728.802 962H252.891A190.883 190.883 0 0 1 62.008 771.98V296.934a190.883 190.883 0 0 1 190.883-192.61h267.754a60.46 60.46 0 0 1 0 120.92H252.891a69.962 69.962 0 0 0-69.098 69.099V771.98a69.962 69.962 0 0 0 69.098 69.098h475.911A69.962 69.962 0 0 0 797.9 771.98V503.363a60.46 60.46 0 1 1 120.922 0V771.98A190.883 190.883 0 0 1 728.802 962z"></path></svg><!--]-->Found Error? Edit this page on GitHub<!----></a></div><div class="vp-meta-item git-info"><div class="update-time"><span class="vp-meta-label">Last Updated: </span><time class="vp-meta-info" datetime="2026-04-15T10:38:42.000Z" data-allow-mismatch>4/15/26, 10:38 AM</time></div><!----></div></footer><nav class="vp-page-nav"><a class="route-link auto-link prev" href="/UserGuide/latest-Table/User-Manual/Query-Performance-Analysis.html" aria-label="Query Performance Analysis"><div class="hint"><span class="arrow start"></span>Prev</div><div class="link"><!---->Query Performance Analysis</div></a><a class="route-link auto-link next" href="/UserGuide/latest-Table/User-Manual/Maintenance-commands_apache.html" aria-label="Maintenance statement"><div class="hint">Next<span class="arrow end"></span></div><div class="link">Maintenance statement<!----></div></a></nav><!----><!----><!--]--></main><!--]--><footer class="site-footer"><span id="doc-version" style="display:none;">latest-Table</span><p class="copyright-text">Copyright © 2026 The Apache Software Foundation.
Apache IoTDB, IoTDB, Apache, the Apache feather logo, and the Apache IoTDB project logo are either registered trademarks or trademarks of The Apache Software Foundation in all countries</p><p style="text-align:center;margin-top:10px;color:#909399;font-size:12px;margin:0 30px;"><strong>Having questions?</strong> Connect with us on QQ, WeChat, or Slack. <a href="https://github.com/apache/iotdb/issues/1995">Join the community</a></p></footer></div><!--]--><!--]--><!--[--><!----><!--]--><!--]--></div>
<script type="module" src="/assets/app-pmkzp6TS.js" defer></script>
</body>
</html>