blob: d5cec6d4640340945406405863080284f4411c6f [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":"Data Synchronisation","image":["https://iotdb.apache.org/img/sync_en_01.png","https://iotdb.apache.org/img/Data-Sync02.png","https://iotdb.apache.org/img/pipe1.jpg","https://iotdb.apache.org/img/pipe2.jpg","https://iotdb.apache.org/img/sync_en_03.png","https://iotdb.apache.org/img/sync_en_04.png"],"dateModified":"2026-01-05T02:38:40.000Z","author":[]}</script><meta property="og:url" content="https://iotdb.apache.org/UserGuide/dev-1.3/User-Manual/Data-Sync_apache.html"><meta property="og:site_name" content="IoTDB Website"><meta property="og:title" content="Data Synchronisation"><meta property="og:description" content="Data Synchronisation Data synchronization is a typical requirement in industrial Internet of Things (IoT). Through data synchronization mechanisms, it is possible to achieve dat..."><meta property="og:type" content="article"><meta property="og:image" content="https://iotdb.apache.org/img/sync_en_01.png"><meta property="og:locale" content="en-US"><meta property="og:locale:alternate" content="zh-CN"><meta property="og:updated_time" content="2026-01-05T02:38:40.000Z"><meta property="article:modified_time" content="2026-01-05T02:38:40.000Z"><link rel="alternate" hreflang="zh-cn" href="https://iotdb.apache.org/zh/UserGuide/dev-1.3/User-Manual/Data-Sync_apache.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>Data Synchronisation | IoTDB Website</title><meta name="description" content="Data Synchronisation Data synchronization is a typical requirement in industrial Internet of Things (IoT). Through data synchronization mechanisms, it is possible to achieve dat...">
<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/Data-Sync_apache.html-v3y9WYat.js"><link rel="modulepreload" href="/assets/sync_en_01-XfbIDPcW.js"><link rel="modulepreload" href="/assets/sync_en_04-D3QXD4YV.js"><link rel="modulepreload" href="/assets/pipe2-DfTEE2Cv.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/dev-1.3/User-Manual/Data-Sync_apache.html" aria-label="English"><!---->English<!----></a></li><li class="vp-dropdown-item"><a class="route-link auto-link" href="/zh/UserGuide/dev-1.3/User-Manual/Data-Sync_apache.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"></span></p><!----><!--]--><ul class="vp-sidebar-links"></ul><!----></aside><!--[--><main id="main-content" class="vp-page"><!--[--><!----><!----><nav class="vp-breadcrumb disable"></nav><div class="vp-page-title"><h1><!---->Data Synchronisation</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">4/8/24</span><meta property="datePublished" content="2024-04-08T07:45:44.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 14 min</span><meta property="timeRequired" content="PT14M"></span><!----><!----></div><hr></div><!----><div class="" vp-content><!----><div id="markdown-content"><h1 id="data-synchronisation" tabindex="-1"><a class="header-anchor" href="#data-synchronisation"><span>Data Synchronisation</span></a></h1><p>Data synchronization is a typical requirement in industrial Internet of Things (IoT). Through data synchronization mechanisms, it is possible to achieve data sharing between IoTDB, and to establish a complete data link to meet the needs for internal and external network data interconnectivity, edge-cloud synchronization, data migration, and data backup.</p><h2 id="function-overview" tabindex="-1"><a class="header-anchor" href="#function-overview"><span>Function Overview</span></a></h2><h3 id="data-synchronization" tabindex="-1"><a class="header-anchor" href="#data-synchronization"><span>Data Synchronization</span></a></h3><p>A data synchronization task consists of three stages:</p><figure><img src="/img/sync_en_01.png" alt="" tabindex="0" loading="lazy"><figcaption></figcaption></figure><ul><li>Source Stage:This part is used to extract data from the source IoTDB, defined in the source section of the SQL statement.</li><li>Process Stage:This part is used to process the data extracted from the source IoTDB, defined in the processor section of the SQL statement.</li><li>Sink Stage:This part is used to send data to the target IoTDB, defined in the sink section of the SQL statement.</li></ul><p>By declaratively configuring the specific content of the three parts through SQL statements, flexible data synchronization capabilities can be achieved. Currently, data synchronization supports the synchronization of the following information, and you can select the synchronization scope when creating a synchronization task (the default is data.insert, which means synchronizing newly written data):</p><table style="text-align:left;"><tbody><tr><th>Synchronization Scope</th><th>Synchronization Content </th><th>Description</th></tr><tr><td colspan="2">all</td><td>All scopes</td></tr><tr><td rowspan="2">data(Data)</td><td>insert</td><td>Synchronize newly written data</td></tr><tr><td>delete</td><td>Synchronize deleted data</td></tr><tr><td rowspan="3">schema</td><td>database</td><td>Synchronize database creation, modification or deletion operations</td></tr><tr><td>timeseries</td><td>Synchronize the definition and attributes of time series</td></tr><tr><td>TTL</td><td>Synchronize the data retention time</td></tr><tr><td>auth</td><td>-</td><td>Synchronize user permissions and access control</td></tr></tbody></table><h3 id="functional-limitations-and-instructions" tabindex="-1"><a class="header-anchor" href="#functional-limitations-and-instructions"><span>Functional limitations and instructions</span></a></h3><p>The schema and auth synchronization functions have the following limitations:</p><ul><li><p>When using schema synchronization, it is required that the consensus protocol for <code>Schema region</code> and <code>ConfigNode</code> must be the default ratis protocol. This means that the <code>iotdb-system.properties</code> configuration file should contain the settings <code>config_node_consensus_protocol_class=org.apache.iotdb.consensus.ratis.RatisConsensus</code> and <code>schema_region_consensus_protocol_class=org.apache.iotdb.consensus.ratis.RatisConsensus</code>. If these are not specified, the default ratis protocol is used.</p></li><li><p>To prevent potential conflicts, please disable the automatic creation of schema on the receiving end when enabling schema synchronization. This can be done by setting the <code>enable_auto_create_schema</code> configuration in the <code>iotdb-system.properties</code> file to false.</p></li><li><p>When schema synchronization is enabled, the use of custom plugins is not supported.</p></li><li><p>During data synchronization tasks, please avoid performing any deletion operations to prevent inconsistent states between the two ends.</p></li></ul><h2 id="usage-instructions" tabindex="-1"><a class="header-anchor" href="#usage-instructions"><span>Usage Instructions</span></a></h2><p>Data synchronization tasks have three states: RUNNING, STOPPED, and DROPPED. The task state transitions are shown in the following diagram:</p><figure><img src="/img/Data-Sync02.png" alt="" tabindex="0" loading="lazy"><figcaption></figcaption></figure><p>After creation, the task will start directly, and when the task stops abnormally, the system will automatically attempt to restart the task.</p><p>Provide the following SQL statements for state management of synchronization tasks.</p><h3 id="create-task" tabindex="-1"><a class="header-anchor" href="#create-task"><span>Create Task</span></a></h3><p>Use the <code>CREATE PIPE</code> statement to create a data synchronization task. The <code>PipeId</code> and <code>sink</code> attributes are required, while <code>source</code> and <code>processor</code> are optional. When entering the SQL, note that the order of the <code>SOURCE</code> and <code>SINK</code> plugins cannot be swapped.</p><p>The SQL example is as follows:</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;">CREATE</span><span style="color:#ABB2BF;"> PIPE </span><span style="color:#E06C75;">[IF NOT EXISTS]</span><span style="color:#56B6C2;"> &lt;</span><span style="color:#ABB2BF;">PipeId</span><span style="color:#56B6C2;">&gt;</span><span style="color:#7F848E;font-style:italic;"> -- PipeId is the name that uniquely identifies the task. </span></span>
<span class="line"><span style="color:#7F848E;font-style:italic;">-- Data extraction plugin, optional plugin</span></span>
<span class="line"><span style="color:#C678DD;">WITH</span><span style="color:#ABB2BF;"> SOURCE (</span></span>
<span class="line"><span style="color:#E06C75;"> [&lt;parameter&gt; = &lt;value&gt;,]</span><span style="color:#ABB2BF;">,</span></span>
<span class="line"><span style="color:#ABB2BF;">)</span></span>
<span class="line"><span style="color:#7F848E;font-style:italic;">-- Data processing plugin, optional plugin</span></span>
<span class="line"><span style="color:#C678DD;">WITH</span><span style="color:#ABB2BF;"> PROCESSOR (</span></span>
<span class="line"><span style="color:#E06C75;"> [&lt;parameter&gt; = &lt;value&gt;,]</span><span style="color:#ABB2BF;">,</span></span>
<span class="line"><span style="color:#ABB2BF;">)</span></span>
<span class="line"><span style="color:#7F848E;font-style:italic;">-- Data connection plugin, required plugin</span></span>
<span class="line"><span style="color:#C678DD;">WITH</span><span style="color:#ABB2BF;"> SINK (</span></span>
<span class="line"><span style="color:#E06C75;"> [&lt;parameter&gt; = &lt;value&gt;,]</span><span style="color:#ABB2BF;">,</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 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>IF NOT EXISTS semantics</strong>: Used in creation operations to ensure that the create command is executed when the specified Pipe does not exist, preventing errors caused by attempting to create an existing Pipe.</p><p><strong>Note</strong>:</p><p>Starting from V1.3.6, when creating a full data synchronization Pipe (e.g. Pipeid: <code>alldatapipe</code>), the system will automatically split it into two independent Pipes:</p><ul><li>History Pipe: The PipeId is the original name plus the suffix <code>_history</code> (e.g. <code>alldatapipe_history</code>). The source parameter carries the default configurations: <code>&#39;realtime.enable&#39;=&#39;false&#39;, &#39;inclusion&#39;=&#39;data.insert&#39;, &#39;inclusion.exclusion&#39;=&#39;&#39;</code></li><li>Realtime Pipe: The PipeId is the original name plus the suffix <code>_realtime</code> (e.g. <code>alldatapipe_realtime</code>). The source parameter carries the default configuration: <code>&#39;history.enable&#39;=&#39;false&#39;</code>. If metadata synchronization is configured, the Realtime Pipe will be responsible for sending the data.</li></ul><p>After successful creation, the original PipeId (e.g. <code>alldatapipe</code>) will no longer be a valid identifier. When performing task operations such as starting, stopping, deleting, or viewing, you must use the split independent PipeId (i.e. <code>*_history</code> or <code>*_realtime</code>). For operation examples, see the <a class="route-link" href="/UserGuide/dev-1.3/User-Manual/Data-Sync_apache.html#view-task">View Task</a> section</p><h3 id="start-task" tabindex="-1"><a class="header-anchor" href="#start-task"><span>Start Task</span></a></h3><p>Start processing data:</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;">START</span><span style="color:#ABB2BF;"> PIPE</span><span style="color:#56B6C2;">&lt;</span><span style="color:#ABB2BF;">PipeId</span><span style="color:#56B6C2;">&gt;</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="stop-task" tabindex="-1"><a class="header-anchor" href="#stop-task"><span>Stop Task</span></a></h3><p>Stop processing data:</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;">STOP</span><span style="color:#ABB2BF;"> PIPE </span><span style="color:#56B6C2;">&lt;</span><span style="color:#ABB2BF;">PipeId</span><span style="color:#56B6C2;">&gt;</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="delete-task" tabindex="-1"><a class="header-anchor" href="#delete-task"><span>Delete Task</span></a></h3><p>Deletes the specified task:</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;">DROP</span><span style="color:#ABB2BF;"> PIPE </span><span style="color:#E06C75;">[IF EXISTS]</span><span style="color:#56B6C2;"> &lt;</span><span style="color:#ABB2BF;">PipeId</span><span style="color:#56B6C2;">&gt;</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><p><strong>IF EXISTS semantics</strong>: Used in deletion operations to ensure that when a specified Pipe exists, the delete command is executed to prevent errors caused by attempting to delete non-existent Pipes.</p><p>Deleting a task does not require stopping the synchronization task first.</p><h3 id="view-task" tabindex="-1"><a class="header-anchor" href="#view-task"><span>View Task</span></a></h3><p>View all tasks:</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;">SHOW PIPES</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><p>To view a specified task:</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;">SHOW PIPE </span><span style="color:#56B6C2;">&lt;</span><span style="color:#ABB2BF;">PipeId</span><span style="color:#56B6C2;">&gt;</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><p>Example of the show pipes result for a pipe:</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;">+</span><span style="color:#7F848E;font-style:italic;">--------------------------------+-----------------------+-------+----------+-------------+-----------------------------------------------------------+----------------+-------------------+-------------------------+</span></span>
<span class="line"><span style="color:#ABB2BF;">| ID| CreationTime| </span><span style="color:#C678DD;">State</span><span style="color:#ABB2BF;">|PipeSource|PipeProcessor| PipeSink|ExceptionMessage|RemainingEventCount|EstimatedRemainingSeconds|</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;">|59abf95db892428b9d01c5fa318014ea|</span><span style="color:#D19A66;">2024</span><span style="color:#ABB2BF;">-</span><span style="color:#D19A66;">06</span><span style="color:#ABB2BF;">-17T14:</span><span style="color:#D19A66;">03</span><span style="color:#ABB2BF;">:</span><span style="color:#D19A66;">44</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">189</span><span style="color:#ABB2BF;">|RUNNING| {}| {}|{sink</span><span style="color:#56B6C2;">=</span><span style="color:#ABB2BF;">iotdb-thrift-sink, </span><span style="color:#D19A66;">sink</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">ip</span><span style="color:#56B6C2;">=</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;">sink</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">port</span><span style="color:#56B6C2;">=</span><span style="color:#D19A66;">6668</span><span style="color:#ABB2BF;">}| | </span><span style="color:#D19A66;">128</span><span style="color:#ABB2BF;">| </span><span style="color:#D19A66;">1</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">03</span><span style="color:#ABB2BF;">|</span></span>
<span class="line"><span style="color:#ABB2BF;">+</span><span style="color:#7F848E;font-style:italic;">--------------------------------+-----------------------+-------+----------+-------------+-----------------------------------------------------------+----------------+-------------------+-------------------------+</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><p>The meanings of each column are as follows:</p><ul><li><strong>ID</strong>:The unique identifier for the synchronization task</li><li><strong>CreationTime</strong>:The time when the synchronization task was created</li><li><strong>State</strong>:The state of the synchronization task</li><li><strong>PipeSource</strong>:The source of the synchronized data stream</li><li><strong>PipeProcessor</strong>:The processing logic of the synchronized data stream during transmission</li><li><strong>PipeSink</strong>:The destination of the synchronized data stream</li><li><strong>ExceptionMessage</strong>:Displays the exception information of the synchronization task</li><li><strong>RemainingEventCount (Statistics with Delay)</strong>: The number of remaining events, which is the total count of all events in the current data synchronization task, including data and schema synchronization events, as well as system and user-defined events.</li><li><strong>EstimatedRemainingSeconds (Statistics with Delay)</strong>: The estimated remaining time, based on the current number of events and the rate at the pipe, to complete the transfer.</li></ul><p>Example:</p><p>In V1.3.6 and later versions, create a full data synchronization task and view the task details.</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:#C678DD;"> create</span><span style="color:#ABB2BF;"> pipe alldatapipe </span><span style="color:#C678DD;">with</span><span style="color:#ABB2BF;"> source(</span><span style="color:#98C379;">&#39;inclusion&#39;</span><span style="color:#56B6C2;">=</span><span style="color:#98C379;">&#39;all&#39;</span><span style="color:#ABB2BF;">,</span><span style="color:#98C379;">&#39;exclusion&#39;</span><span style="color:#56B6C2;">=</span><span style="color:#98C379;">&#39;auth&#39;</span><span style="color:#ABB2BF;">) </span><span style="color:#C678DD;">with</span><span style="color:#ABB2BF;"> sink(</span><span style="color:#98C379;">&#39;node-urls&#39;</span><span style="color:#56B6C2;">=</span><span style="color:#98C379;">&#39;127.0.0.1:6668&#39;</span><span style="color:#ABB2BF;">)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#ABB2BF;">IoTDB</span><span style="color:#56B6C2;">&gt;</span><span style="color:#ABB2BF;"> show pipe alldatapipe_history</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;">| ID| CreationTime| </span><span style="color:#C678DD;">State</span><span style="color:#ABB2BF;">| PipeSource|PipeProcessor| PipeSink|ExceptionMessage|RemainingEventCount|EstimatedRemainingSeconds|</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;">|alldatapipe_history|</span><span style="color:#D19A66;">2025</span><span style="color:#ABB2BF;">-</span><span style="color:#D19A66;">12</span><span style="color:#ABB2BF;">-18T15:</span><span style="color:#D19A66;">06</span><span style="color:#ABB2BF;">:</span><span style="color:#D19A66;">16</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">697</span><span style="color:#ABB2BF;">|RUNNING|{exclusion</span><span style="color:#56B6C2;">=</span><span style="color:#ABB2BF;">auth, </span><span style="color:#D19A66;">history</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">enable</span><span style="color:#56B6C2;">=</span><span style="color:#ABB2BF;">true, inclusion</span><span style="color:#56B6C2;">=</span><span style="color:#D19A66;">data</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">insert</span><span style="color:#ABB2BF;">, </span><span style="color:#D19A66;">inclusion</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">exclusion</span><span style="color:#56B6C2;">=</span><span style="color:#ABB2BF;">, </span><span style="color:#D19A66;">realtime</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">enable</span><span style="color:#56B6C2;">=</span><span style="color:#ABB2BF;">false}| {}|{node-urls</span><span style="color:#56B6C2;">=</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;">6668</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;">00</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>
<span class="line"><span style="color:#ABB2BF;">IoTDB</span><span style="color:#56B6C2;">&gt;</span><span style="color:#ABB2BF;"> show pipe alldatapipe_realtime</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;">| ID| CreationTime| </span><span style="color:#C678DD;">State</span><span style="color:#ABB2BF;">| PipeSource|PipeProcessor| PipeSink|ExceptionMessage|RemainingEventCount|EstimatedRemainingSeconds|</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;">|alldatapipe_realtime|</span><span style="color:#D19A66;">2025</span><span style="color:#ABB2BF;">-</span><span style="color:#D19A66;">12</span><span style="color:#ABB2BF;">-18T15:</span><span style="color:#D19A66;">06</span><span style="color:#ABB2BF;">:</span><span style="color:#D19A66;">16</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">312</span><span style="color:#ABB2BF;">|RUNNING|{exclusion</span><span style="color:#56B6C2;">=</span><span style="color:#ABB2BF;">auth, </span><span style="color:#D19A66;">history</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">enable</span><span style="color:#56B6C2;">=</span><span style="color:#ABB2BF;">false, inclusion</span><span style="color:#56B6C2;">=</span><span style="color:#ABB2BF;">all, </span><span style="color:#D19A66;">realtime</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">enable</span><span style="color:#56B6C2;">=</span><span style="color:#ABB2BF;">true}| {}|{node-urls</span><span style="color:#56B6C2;">=</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;">6668</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;">00</span><span style="color:#ABB2BF;">|</span></span>
<span class="line"><span style="color:#ABB2BF;">+</span><span style="color:#7F848E;font-style:italic;">--------------------+-----------------------+-------+---------------------------------------------------------------------------+-------------+--------------------------+----------------+-------------------+-------------------------+</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 class="line-number"></div><div class="line-number"></div></div></div><h3 id="synchronization-plugins" tabindex="-1"><a class="header-anchor" href="#synchronization-plugins"><span>Synchronization Plugins</span></a></h3><p>To make the overall architecture more flexible to match different synchronization scenario requirements, we support plugin assembly within the synchronization task framework. The system comes with some pre-installed common plugins that you can use directly. At the same time, you can also customize processor plugins and Sink plugins, and load them into the IoTDB system for use. You can view the plugins in the system (including custom and built-in plugins) with the following statement:</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;">SHOW PIPEPLUGINS</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><p>The return result is as follows (version 1.3.2):</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 PIPEPLUGINS</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;">| PluginName|PluginType| ClassName| PluginJar|</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;">| DO-NOTHING-PROCESSOR| Builtin| </span><span style="color:#D19A66;">org</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">apache</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">iotdb</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">commons</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">pipe</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">plugin</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">builtin</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">processor</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">donothing</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">DoNothingProcessor</span><span style="color:#ABB2BF;">| |</span></span>
<span class="line"><span style="color:#ABB2BF;">| DO-NOTHING-SINK| Builtin| </span><span style="color:#D19A66;">org</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">apache</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">iotdb</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">commons</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">pipe</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">plugin</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">builtin</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">connector</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">donothing</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">DoNothingConnector</span><span style="color:#ABB2BF;">| |</span></span>
<span class="line"><span style="color:#ABB2BF;">| IOTDB-SOURCE| Builtin| </span><span style="color:#D19A66;">org</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">apache</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">iotdb</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">commons</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">pipe</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">plugin</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">builtin</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">extractor</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">iotdb</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">IoTDBExtractor</span><span style="color:#ABB2BF;">| |</span></span>
<span class="line"><span style="color:#ABB2BF;">| IOTDB-THRIFT-SINK| Builtin| </span><span style="color:#D19A66;">org</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">apache</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">iotdb</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">commons</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">pipe</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">plugin</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">builtin</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">connector</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">iotdb</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">thrift</span><span style="color:#ABB2BF;">.IoTDBThriftConnector| |</span></span>
<span class="line"><span style="color:#ABB2BF;">| IOTDB-THRIFT-</span><span style="color:#C678DD;">SSL</span><span style="color:#ABB2BF;">-SINK| Builtin| </span><span style="color:#D19A66;">org</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">apache</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">iotdb</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">commons</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">pipe</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">plugin</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">builtin</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">connector</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">iotdb</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">thrift</span><span style="color:#ABB2BF;">.IoTDBThriftSslConnector| |</span></span>
<span class="line"><span style="color:#ABB2BF;">+</span><span style="color:#7F848E;font-style:italic;">------------------------------+----------+--------------------------------------------------------------------------------------------------+----------------------------------------------------+</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>Detailed introduction of pre-installed plugins is as follows (for detailed parameters of each plugin, please refer to the <a href="#reference-parameter-description">Parameter Description</a> section):</p><table style="text-align:left;"><tbody><tr><th>Type</th><th>Custom Plugin</th><th>Plugin Name</th><th>Description</th><th>Applicable Version</th></tr><tr><td>source plugin</td><td>Not Supported</td><td>iotdb-source</td><td>The default extractor plugin, used to extract historical or real-time data from IoTDB</td><td>1.2.x</td></tr><tr><td>processor plugin</td><td>Supported</td><td>do-nothing-processor</td><td>The default processor plugin, which does not process the incoming data</td><td>1.2.x</td></tr><tr><td rowspan="3">sink plugin</td><td rowspan="3">Supported</td><td>do-nothing-sink</td><td>Does not process the data that is sent out</td><td>1.2.x</td></tr><tr><td>iotdb-thrift-sink</td><td>The default sink plugin ( V1.3.1+ ), used for data transfer between IoTDB ( V1.2.0+ ) and IoTDB( V1.2.0+ ) . It uses the Thrift RPC framework to transfer data, with a multi-threaded async non-blocking IO model, high transfer performance, especially suitable for scenarios where the target end is distributed</td><td>1.2.x</td></tr><tr><td>iotdb-thrift-ssl-sink</td><td>Used for data transfer between IoTDB ( V1.3.1+ ) and IoTDB ( V1.2.0+ ). It uses the Thrift RPC framework to transfer data, with a single-threaded sync blocking IO model, suitable for scenarios with higher security requirements</td><td>1.3.1+</td></tr></tbody></table><p>For importing custom plugins, please refer to the <a class="route-link" href="/UserGuide/dev-1.3/User-Manual/Streaming_apache.html#custom-stream-processing-plugin-management">Stream Processing</a> section.</p><h2 id="use-examples" tabindex="-1"><a class="header-anchor" href="#use-examples"><span>Use examples</span></a></h2><h3 id="full-data-synchronisation" tabindex="-1"><a class="header-anchor" href="#full-data-synchronisation"><span>Full data synchronisation</span></a></h3><p>This example is used to demonstrate the synchronisation of all data from one IoTDB to another IoTDB with the data link as shown below:</p><figure><img src="/img/pipe1.jpg" alt="" tabindex="0" loading="lazy"><figcaption></figcaption></figure><p>In this example, we can create a synchronization task named A2B to synchronize the full data from A IoTDB to B IoTDB. The iotdb-thrift-sink plugin (built-in plugin) for the sink is required. The URL of the data service port of the DataNode node on the target IoTDB needs to be configured through node-urls, as shown in the following example statement:</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;">create</span><span style="color:#ABB2BF;"> pipe A2B</span></span>
<span class="line"><span style="color:#C678DD;">with</span><span style="color:#ABB2BF;"> sink (</span></span>
<span class="line"><span style="color:#98C379;"> &#39;sink&#39;</span><span style="color:#56B6C2;">=</span><span style="color:#98C379;">&#39;iotdb-thrift-sink&#39;</span><span style="color:#ABB2BF;">,</span></span>
<span class="line"><span style="color:#98C379;"> &#39;node-urls&#39;</span><span style="color:#56B6C2;"> =</span><span style="color:#98C379;"> &#39;127.0.0.1:6668&#39;</span><span style="color:#ABB2BF;">, </span><span style="color:#7F848E;font-style:italic;">-- The URL of the data service port of the DataNode node on the target IoTDB</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><h3 id="partial-data-synchronization" tabindex="-1"><a class="header-anchor" href="#partial-data-synchronization"><span>Partial data synchronization</span></a></h3><p>This example is used to demonstrate the synchronisation of data from a certain historical time range (8:00pm 23 August 2023 to 8:00pm 23 October 2023) to another IoTDB, the data link is shown below:</p><figure><img src="/img/pipe2.jpg" alt="" tabindex="0" loading="lazy"><figcaption></figcaption></figure><p>In this example, we can create a synchronization task named A2B. First, we need to define the range of data to be transferred in the source. Since the data being transferred is historical data (historical data refers to data that existed before the creation of the synchronization task), we need to configure the start-time and end-time of the data and the transfer mode mode. The URL of the data service port of the DataNode node on the target IoTDB needs to be configured through node-urls.</p><p>The detailed statements are as follows:</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;">create</span><span style="color:#ABB2BF;"> pipe A2B</span></span>
<span class="line"><span style="color:#C678DD;">WITH</span><span style="color:#ABB2BF;"> SOURCE (</span></span>
<span class="line"><span style="color:#98C379;"> &#39;source&#39;</span><span style="color:#56B6C2;">=</span><span style="color:#98C379;"> &#39;iotdb-source&#39;</span><span style="color:#ABB2BF;">,</span></span>
<span class="line"><span style="color:#98C379;"> &#39;realtime.mode&#39;</span><span style="color:#56B6C2;"> =</span><span style="color:#98C379;"> &#39;stream&#39;</span><span style="color:#7F848E;font-style:italic;"> -- The extraction mode for newly inserted data (after pipe creation)</span></span>
<span class="line"><span style="color:#98C379;"> &#39;path&#39;</span><span style="color:#56B6C2;"> =</span><span style="color:#98C379;"> &#39;root.vehicle.**&#39;</span><span style="color:#ABB2BF;">, </span><span style="color:#7F848E;font-style:italic;">-- Scope of Data Synchronization</span></span>
<span class="line"><span style="color:#98C379;"> &#39;start-time&#39;</span><span style="color:#56B6C2;"> =</span><span style="color:#98C379;"> &#39;2023.08.23T08:00:00+00:00&#39;</span><span style="color:#ABB2BF;">, </span><span style="color:#7F848E;font-style:italic;">-- The start event time for synchronizing all data, including start-time</span></span>
<span class="line"><span style="color:#98C379;"> &#39;end-time&#39;</span><span style="color:#56B6C2;"> =</span><span style="color:#98C379;"> &#39;2023.10.23T08:00:00+00:00&#39;</span><span style="color:#7F848E;font-style:italic;"> -- The end event time for synchronizing all data, including end-time</span></span>
<span class="line"><span style="color:#ABB2BF;">) </span></span>
<span class="line"><span style="color:#C678DD;">with</span><span style="color:#ABB2BF;"> SINK (</span></span>
<span class="line"><span style="color:#98C379;"> &#39;sink&#39;</span><span style="color:#56B6C2;">=</span><span style="color:#98C379;">&#39;iotdb-thrift-async-sink&#39;</span><span style="color:#ABB2BF;">,</span></span>
<span class="line"><span style="color:#98C379;"> &#39;node-urls&#39;</span><span style="color:#56B6C2;"> =</span><span style="color:#98C379;"> &#39;127.0.0.1:6668&#39;</span><span style="color:#ABB2BF;">, </span><span style="color:#7F848E;font-style:italic;">-- The URL of the data service port of the DataNode node on the target IoTDB</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 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><h3 id="edge-cloud-data-transfer" tabindex="-1"><a class="header-anchor" href="#edge-cloud-data-transfer"><span>Edge-cloud data transfer</span></a></h3><p>This example is used to demonstrate the scenario where data from multiple IoTDB is transferred to the cloud, with data from clusters B, C, and D all synchronized to cluster A, as shown in the figure below:</p><figure><img src="/img/sync_en_03.png" alt="" tabindex="0" loading="lazy"><figcaption></figcaption></figure><p>In this example, to synchronize the data from clusters B, C, and D to A, the pipe between BA, CA, and DA needs to configure the <code>path</code> to limit the range, and to keep the edge and cloud data consistent, the pipe needs to be configured with <code>inclusion=all</code> to synchronize full data and metadata. The detailed statement is as follows:</p><p>On B IoTDB, execute the following statement to synchronize data from B to A:</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;">create</span><span style="color:#ABB2BF;"> pipe BA</span></span>
<span class="line"><span style="color:#C678DD;">with</span><span style="color:#ABB2BF;"> source (</span></span>
<span class="line"><span style="color:#98C379;"> &#39;inclusion&#39;</span><span style="color:#56B6C2;">=</span><span style="color:#98C379;">&#39;all&#39;</span><span style="color:#ABB2BF;">, </span><span style="color:#7F848E;font-style:italic;">-- Indicates synchronization of full data, schema , and auth</span></span>
<span class="line"><span style="color:#98C379;"> &#39;path&#39;</span><span style="color:#56B6C2;">=</span><span style="color:#98C379;">&#39;root.db.**&#39;</span><span style="color:#ABB2BF;">, </span><span style="color:#7F848E;font-style:italic;">-- Limit the range</span></span>
<span class="line"><span style="color:#ABB2BF;">)</span></span>
<span class="line"><span style="color:#C678DD;">with</span><span style="color:#ABB2BF;"> sink (</span></span>
<span class="line"><span style="color:#98C379;"> &#39;sink&#39;</span><span style="color:#56B6C2;">=</span><span style="color:#98C379;">&#39;iotdb-thrift-sink&#39;</span><span style="color:#ABB2BF;">,</span></span>
<span class="line"><span style="color:#98C379;"> &#39;node-urls&#39;</span><span style="color:#56B6C2;"> =</span><span style="color:#98C379;"> &#39;127.0.0.1:6668&#39;</span><span style="color:#ABB2BF;">, </span><span style="color:#7F848E;font-style:italic;">-- The URL of the data service port of the DataNode node on the target IoTDB</span></span>
<span class="line"><span style="color:#ABB2BF;">)</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 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>On C IoTDB, execute the following statement to synchronize data from C to A:</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;">create</span><span style="color:#ABB2BF;"> pipe CA</span></span>
<span class="line"><span style="color:#C678DD;">with</span><span style="color:#ABB2BF;"> source (</span></span>
<span class="line"><span style="color:#98C379;"> &#39;inclusion&#39;</span><span style="color:#56B6C2;">=</span><span style="color:#98C379;">&#39;all&#39;</span><span style="color:#ABB2BF;">, </span><span style="color:#7F848E;font-style:italic;">-- Indicates synchronization of full data, schema , and auth</span></span>
<span class="line"><span style="color:#98C379;"> &#39;path&#39;</span><span style="color:#56B6C2;">=</span><span style="color:#98C379;">&#39;root.db.**&#39;</span><span style="color:#ABB2BF;">, </span><span style="color:#7F848E;font-style:italic;">-- Limit the range</span></span>
<span class="line"><span style="color:#C678DD;">with</span><span style="color:#ABB2BF;"> sink (</span></span>
<span class="line"><span style="color:#98C379;"> &#39;sink&#39;</span><span style="color:#56B6C2;">=</span><span style="color:#98C379;">&#39;iotdb-thrift-sink&#39;</span><span style="color:#ABB2BF;">,</span></span>
<span class="line"><span style="color:#98C379;"> &#39;node-urls&#39;</span><span style="color:#56B6C2;"> =</span><span style="color:#98C379;"> &#39;127.0.0.1:6668&#39;</span><span style="color:#ABB2BF;">, </span><span style="color:#7F848E;font-style:italic;">-- The URL of the data service port of the DataNode node on the target IoTDB</span></span>
<span class="line"><span style="color:#ABB2BF;">)</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 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>On D IoTDB, execute the following statement to synchronize data from D to A:</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;">create</span><span style="color:#ABB2BF;"> pipe DA</span></span>
<span class="line"><span style="color:#C678DD;">with</span><span style="color:#ABB2BF;"> source (</span></span>
<span class="line"><span style="color:#98C379;"> &#39;inclusion&#39;</span><span style="color:#56B6C2;">=</span><span style="color:#98C379;">&#39;all&#39;</span><span style="color:#ABB2BF;">, </span><span style="color:#7F848E;font-style:italic;">-- Indicates synchronization of full data, schema , and auth</span></span>
<span class="line"><span style="color:#98C379;"> &#39;path&#39;</span><span style="color:#56B6C2;">=</span><span style="color:#98C379;">&#39;root.db.**&#39;</span><span style="color:#ABB2BF;">, </span><span style="color:#7F848E;font-style:italic;">-- Limit the range</span></span>
<span class="line"><span style="color:#ABB2BF;">)</span></span>
<span class="line"><span style="color:#C678DD;">with</span><span style="color:#ABB2BF;"> sink (</span></span>
<span class="line"><span style="color:#98C379;"> &#39;sink&#39;</span><span style="color:#56B6C2;">=</span><span style="color:#98C379;">&#39;iotdb-thrift-sink&#39;</span><span style="color:#ABB2BF;">,</span></span>
<span class="line"><span style="color:#98C379;"> &#39;node-urls&#39;</span><span style="color:#56B6C2;"> =</span><span style="color:#98C379;"> &#39;127.0.0.1:6668&#39;</span><span style="color:#ABB2BF;">, </span><span style="color:#7F848E;font-style:italic;">-- The URL of the data service port of the DataNode node on the target IoTDB</span></span>
<span class="line"><span style="color:#ABB2BF;">)</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 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><h3 id="cascading-data-transfer" tabindex="-1"><a class="header-anchor" href="#cascading-data-transfer"><span>Cascading data transfer</span></a></h3><p>This example is used to demonstrate the scenario where data is transferred in a cascading manner between multiple IoTDB, with data from cluster A synchronized to cluster B, and then to cluster C, as shown in the figure below:</p><figure><img src="/img/sync_en_04.png" alt="" tabindex="0" loading="lazy"><figcaption></figcaption></figure><p>In this example, to synchronize the data from cluster A to C, the <code>forwarding-pipe-requests</code> needs to be set to <code>true</code> between BC. The detailed statement is as follows:</p><p>On A IoTDB, execute the following statement to synchronize data from A to B:</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;">create</span><span style="color:#ABB2BF;"> pipe AB</span></span>
<span class="line"><span style="color:#C678DD;">with</span><span style="color:#ABB2BF;"> sink (</span></span>
<span class="line"><span style="color:#98C379;"> &#39;sink&#39;</span><span style="color:#56B6C2;">=</span><span style="color:#98C379;">&#39;iotdb-thrift-sink&#39;</span><span style="color:#ABB2BF;">,</span></span>
<span class="line"><span style="color:#98C379;"> &#39;node-urls&#39;</span><span style="color:#56B6C2;"> =</span><span style="color:#98C379;"> &#39;127.0.0.1:6668&#39;</span><span style="color:#ABB2BF;">, </span><span style="color:#7F848E;font-style:italic;">-- The URL of the data service port of the DataNode node on the target IoTDB</span></span>
<span class="line"><span style="color:#ABB2BF;">)</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 class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>On B IoTDB, execute the following statement to synchronize data from B to C:</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;">create</span><span style="color:#ABB2BF;"> pipe BC</span></span>
<span class="line"><span style="color:#C678DD;">with</span><span style="color:#ABB2BF;"> source (</span></span>
<span class="line"><span style="color:#98C379;"> &#39;forwarding-pipe-requests&#39;</span><span style="color:#56B6C2;"> =</span><span style="color:#98C379;"> &#39;true&#39;</span><span style="color:#7F848E;font-style:italic;"> -- Whether to forward data written by other Pipes</span></span>
<span class="line"><span style="color:#ABB2BF;">)</span></span>
<span class="line"><span style="color:#C678DD;">with</span><span style="color:#ABB2BF;"> sink (</span></span>
<span class="line"><span style="color:#98C379;"> &#39;sink&#39;</span><span style="color:#56B6C2;">=</span><span style="color:#98C379;">&#39;iotdb-thrift-sink&#39;</span><span style="color:#ABB2BF;">,</span></span>
<span class="line"><span style="color:#98C379;"> &#39;node-urls&#39;</span><span style="color:#56B6C2;"> =</span><span style="color:#98C379;"> &#39;127.0.0.1:6669&#39;</span><span style="color:#ABB2BF;">, </span><span style="color:#7F848E;font-style:italic;">-- The URL of the data service port of the DataNode node on the target IoTDB</span></span>
<span class="line"><span style="color:#ABB2BF;">)</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 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><h3 id="compression-synchronization-v1-3-3" tabindex="-1"><a class="header-anchor" href="#compression-synchronization-v1-3-3"><span>Compression Synchronization (V1.3.3+)</span></a></h3><p>IoTDB supports specifying data compression methods during synchronization. Real time compression and transmission of data can be achieved by configuring the <code>compressor</code> parameter. <code>Compressor</code> currently supports 5 optional algorithms: snappy/gzip/lz4/zstd/lzma2, and can choose multiple compression algorithm combinations to compress in the order of configuration <code>rate-limit-bytes-per-second</code>(supported in V1.3.3 and later versions) is the maximum number of bytes allowed to be transmitted per second, calculated as compressed bytes. If it is less than 0, there is no limit.</p><p>For example, to create a synchronization task named A2B:</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;">create</span><span style="color:#ABB2BF;"> pipe A2B </span></span>
<span class="line"><span style="color:#C678DD;">with</span><span style="color:#ABB2BF;"> sink (</span></span>
<span class="line"><span style="color:#98C379;"> &#39;node-urls&#39;</span><span style="color:#56B6C2;"> =</span><span style="color:#98C379;"> &#39;127.0.0.1:6668&#39;</span><span style="color:#ABB2BF;">, </span><span style="color:#7F848E;font-style:italic;">-- The URL of the data service port of the DataNode node on the target IoTDB</span></span>
<span class="line"><span style="color:#98C379;"> &#39;compressor&#39;</span><span style="color:#56B6C2;"> =</span><span style="color:#98C379;"> &#39;snappy,lz4&#39;</span><span style="color:#7F848E;font-style:italic;"> -- Compression algorithms</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 class="line-number"></div><div class="line-number"></div></div></div><h3 id="encrypted-synchronization-v1-3-1" tabindex="-1"><a class="header-anchor" href="#encrypted-synchronization-v1-3-1"><span>Encrypted Synchronization (V1.3.1+)</span></a></h3><p>IoTDB supports the use of SSL encryption during the synchronization process, ensuring the secure transfer of data between different IoTDB instances. By configuring SSL-related parameters, such as the certificate address and password (<code>ssl.trust-store-path</code>)、(<code>ssl.trust-store-pwd</code>), data can be protected by SSL encryption during the synchronization process.</p><p>For example, to create a synchronization task named A2B:</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;">create</span><span style="color:#ABB2BF;"> pipe A2B</span></span>
<span class="line"><span style="color:#C678DD;">with</span><span style="color:#ABB2BF;"> sink (</span></span>
<span class="line"><span style="color:#98C379;"> &#39;sink&#39;</span><span style="color:#56B6C2;">=</span><span style="color:#98C379;">&#39;iotdb-thrift-ssl-sink&#39;</span><span style="color:#ABB2BF;">,</span></span>
<span class="line"><span style="color:#98C379;"> &#39;node-urls&#39;</span><span style="color:#56B6C2;">=</span><span style="color:#98C379;">&#39;127.0.0.1:6667&#39;</span><span style="color:#ABB2BF;">, </span><span style="color:#7F848E;font-style:italic;">-- The URL of the data service port of the DataNode node on the target IoTDB</span></span>
<span class="line"><span style="color:#98C379;"> &#39;ssl.trust-store-path&#39;</span><span style="color:#56B6C2;">=</span><span style="color:#98C379;">&#39;pki/trusted&#39;</span><span style="color:#ABB2BF;">, </span><span style="color:#7F848E;font-style:italic;">-- The trust store certificate path required to connect to the target DataNode</span></span>
<span class="line"><span style="color:#98C379;"> &#39;ssl.trust-store-pwd&#39;</span><span style="color:#56B6C2;">=</span><span style="color:#98C379;">&#39;root&#39;</span><span style="color:#7F848E;font-style:italic;"> -- The trust store certificate password required to connect to the target DataNode</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 class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h2 id="reference-notes" tabindex="-1"><a class="header-anchor" href="#reference-notes"><span>Reference: Notes</span></a></h2><p>You can adjust the parameters for data synchronization by modifying the IoTDB configuration file (<code>iotdb-system.properties</code>), such as the directory for storing synchronized data. The complete configuration is as follows:</p><p>V1.3.3+:</p><div class="language-properties line-numbers-mode" data-highlighter="shiki" data-ext="properties" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-properties"><span class="line"><span style="color:#7F848E;font-style:italic;"># pipe_receiver_file_dir</span></span>
<span class="line"><span style="color:#7F848E;font-style:italic;"># If this property is unset, system will save the data in the default relative path directory under the IoTDB folder(i.e., %IOTDB_HOME%/${cn_system_dir}/pipe/receiver).</span></span>
<span class="line"><span style="color:#7F848E;font-style:italic;"># If it is absolute, system will save the data in the exact location it points to.</span></span>
<span class="line"><span style="color:#7F848E;font-style:italic;"># If it is relative, system will save the data in the relative path directory it indicates under the IoTDB folder.</span></span>
<span class="line"><span style="color:#7F848E;font-style:italic;"># Note: If pipe_receiver_file_dir is assigned an empty string(i.e.,zero-size), it will be handled as a relative path.</span></span>
<span class="line"><span style="color:#7F848E;font-style:italic;"># effectiveMode: restart</span></span>
<span class="line"><span style="color:#7F848E;font-style:italic;"># For windows platform</span></span>
<span class="line"><span style="color:#7F848E;font-style:italic;"># If its prefix is a drive specifier followed by &quot;\\&quot;, or if its prefix is &quot;\\\\&quot;, then the path is absolute. Otherwise, it is relative.</span></span>
<span class="line"><span style="color:#7F848E;font-style:italic;"># pipe_receiver_file_dir=data\\confignode\\system\\pipe\\receiver</span></span>
<span class="line"><span style="color:#7F848E;font-style:italic;"># For Linux platform</span></span>
<span class="line"><span style="color:#7F848E;font-style:italic;"># If its prefix is &quot;/&quot;, then the path is absolute. Otherwise, it is relative.</span></span>
<span class="line"><span style="color:#C678DD;">pipe_receiver_file_dir</span><span style="color:#ABB2BF;">=</span><span style="color:#98C379;">data/confignode/system/pipe/receiver</span></span>
<span class="line"></span>
<span class="line"><span style="color:#7F848E;font-style:italic;">####################</span></span>
<span class="line"><span style="color:#7F848E;font-style:italic;">### Pipe Configuration</span></span>
<span class="line"><span style="color:#7F848E;font-style:italic;">####################</span></span>
<span class="line"></span>
<span class="line"><span style="color:#7F848E;font-style:italic;"># Uncomment the following field to configure the pipe lib directory.</span></span>
<span class="line"><span style="color:#7F848E;font-style:italic;"># effectiveMode: first_start</span></span>
<span class="line"><span style="color:#7F848E;font-style:italic;"># For Windows platform</span></span>
<span class="line"><span style="color:#7F848E;font-style:italic;"># If its prefix is a drive specifier followed by &quot;\\&quot;, or if its prefix is &quot;\\\\&quot;, then the path is</span></span>
<span class="line"><span style="color:#7F848E;font-style:italic;"># absolute. Otherwise, it is relative.</span></span>
<span class="line"><span style="color:#7F848E;font-style:italic;"># pipe_lib_dir=ext\\pipe</span></span>
<span class="line"><span style="color:#7F848E;font-style:italic;"># For Linux platform</span></span>
<span class="line"><span style="color:#7F848E;font-style:italic;"># If its prefix is &quot;/&quot;, then the path is absolute. Otherwise, it is relative.</span></span>
<span class="line"><span style="color:#C678DD;">pipe_lib_dir</span><span style="color:#ABB2BF;">=</span><span style="color:#98C379;">ext/pipe</span></span>
<span class="line"></span>
<span class="line"><span style="color:#7F848E;font-style:italic;"># The maximum number of threads that can be used to execute the pipe subtasks in PipeSubtaskExecutor.</span></span>
<span class="line"><span style="color:#7F848E;font-style:italic;"># The actual value will be min(pipe_subtask_executor_max_thread_num, max(1, CPU core number / 2)).</span></span>
<span class="line"><span style="color:#7F848E;font-style:italic;"># effectiveMode: restart</span></span>
<span class="line"><span style="color:#7F848E;font-style:italic;"># Datatype: int</span></span>
<span class="line"><span style="color:#C678DD;">pipe_subtask_executor_max_thread_num</span><span style="color:#ABB2BF;">=</span><span style="color:#98C379;">5</span></span>
<span class="line"></span>
<span class="line"><span style="color:#7F848E;font-style:italic;"># The connection timeout (in milliseconds) for the thrift client.</span></span>
<span class="line"><span style="color:#7F848E;font-style:italic;"># effectiveMode: restart</span></span>
<span class="line"><span style="color:#7F848E;font-style:italic;"># Datatype: int</span></span>
<span class="line"><span style="color:#C678DD;">pipe_sink_timeout_ms</span><span style="color:#ABB2BF;">=</span><span style="color:#98C379;">900000</span></span>
<span class="line"></span>
<span class="line"><span style="color:#7F848E;font-style:italic;"># The maximum number of selectors that can be used in the sink.</span></span>
<span class="line"><span style="color:#7F848E;font-style:italic;"># Recommend to set this value to less than or equal to pipe_sink_max_client_number.</span></span>
<span class="line"><span style="color:#7F848E;font-style:italic;"># effectiveMode: restart</span></span>
<span class="line"><span style="color:#7F848E;font-style:italic;"># Datatype: int</span></span>
<span class="line"><span style="color:#C678DD;">pipe_sink_selector_number</span><span style="color:#ABB2BF;">=</span><span style="color:#98C379;">4</span></span>
<span class="line"></span>
<span class="line"><span style="color:#7F848E;font-style:italic;"># The maximum number of clients that can be used in the sink.</span></span>
<span class="line"><span style="color:#7F848E;font-style:italic;"># effectiveMode: restart</span></span>
<span class="line"><span style="color:#7F848E;font-style:italic;"># Datatype: int</span></span>
<span class="line"><span style="color:#C678DD;">pipe_sink_max_client_number</span><span style="color:#ABB2BF;">=</span><span style="color:#98C379;">16</span></span>
<span class="line"></span>
<span class="line"><span style="color:#7F848E;font-style:italic;"># The total bytes that all pipe sinks can transfer per second.</span></span>
<span class="line"><span style="color:#7F848E;font-style:italic;"># When given a value less than or equal to 0, it means no limit.</span></span>
<span class="line"><span style="color:#7F848E;font-style:italic;"># default value is -1, which means no limit.</span></span>
<span class="line"><span style="color:#7F848E;font-style:italic;"># effectiveMode: hot_reload</span></span>
<span class="line"><span style="color:#7F848E;font-style:italic;"># Datatype: double</span></span>
<span class="line"><span style="color:#C678DD;">pipe_all_sinks_rate_limit_bytes_per_second</span><span style="color:#ABB2BF;">=</span><span style="color:#98C379;">-1</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 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 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 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 class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h2 id="reference-parameter-description" tabindex="-1"><a class="header-anchor" href="#reference-parameter-description"><span>Reference: parameter description</span></a></h2><h3 id="source-parameter-v1-3-3" tabindex="-1"><a class="header-anchor" href="#source-parameter-v1-3-3"><span>source parameter(V1.3.3)</span></a></h3><table><thead><tr><th style="text-align:left;">key</th><th style="text-align:left;">value</th><th style="text-align:left;">value range</th><th style="text-align:left;">required or not</th><th style="text-align:left;">default value</th></tr></thead><tbody><tr><td style="text-align:left;">source</td><td style="text-align:left;">iotdb-source</td><td style="text-align:left;">String: iotdb-source</td><td style="text-align:left;">Required</td><td style="text-align:left;">-</td></tr><tr><td style="text-align:left;">inclusion</td><td style="text-align:left;">Used to specify the range of data to be synchronized in the data synchronization task, including data, schema, and auth</td><td style="text-align:left;">String:all, data(insert,delete), schema(database,timeseries,ttl), auth</td><td style="text-align:left;">Optional</td><td style="text-align:left;">data.insert</td></tr><tr><td style="text-align:left;">inclusion.exclusion</td><td style="text-align:left;">Used to exclude specific operations from the range specified by inclusion, reducing the amount of data synchronized</td><td style="text-align:left;">String:all, data(insert,delete), schema(database,timeseries,ttl), auth</td><td style="text-align:left;">Optional</td><td style="text-align:left;">-</td></tr><tr><td style="text-align:left;">path</td><td style="text-align:left;">Used to filter the path pattern schema of time series and data to be synchronized / schema synchronization can only use pathpath is exact matching, parameters must be prefix paths or complete paths, i.e., cannot contain <code>&quot;*&quot;</code>, at most one <code>&quot;**&quot;</code> at the end of the path parameter</td><td style="text-align:left;">String:IoTDB pattern</td><td style="text-align:left;">Optional</td><td style="text-align:left;">root.**</td></tr><tr><td style="text-align:left;">pattern</td><td style="text-align:left;">Used to filter the path prefix of time series</td><td style="text-align:left;">String: Optional</td><td style="text-align:left;">Optional</td><td style="text-align:left;">root</td></tr><tr><td style="text-align:left;">start-time</td><td style="text-align:left;">The start event time for synchronizing all data, including start-time</td><td style="text-align:left;">Long: [Long.MIN_VALUE, Long.MAX_VALUE]</td><td style="text-align:left;">Optional</td><td style="text-align:left;">Long.MIN_VALUE</td></tr><tr><td style="text-align:left;">end-time</td><td style="text-align:left;">The end event time for synchronizing all data, including end-time</td><td style="text-align:left;">Long: [Long.MIN_VALUE, Long.MAX_VALUE]</td><td style="text-align:left;">Optional</td><td style="text-align:left;">Long.MAX_VALUE</td></tr><tr><td style="text-align:left;">realtime.mode</td><td style="text-align:left;">The extraction mode for newly inserted data (after pipe creation)</td><td style="text-align:left;">String: batch</td><td style="text-align:left;">Optional</td><td style="text-align:left;">batch</td></tr><tr><td style="text-align:left;">forwarding-pipe-requests</td><td style="text-align:left;">Whether to forward data written by other Pipes (usually data synchronization)</td><td style="text-align:left;">Boolean: true</td><td style="text-align:left;">Optional</td><td style="text-align:left;">true</td></tr><tr><td style="text-align:left;">history.loose-range</td><td style="text-align:left;">When transferring TsFile, whether to relax the range of historical data (before the creation of the pipe). &quot;&quot;: Do not relax the range, select data strictly according to the set conditions. &quot;time&quot;: Relax the time range to avoid splitting TsFile, which can improve synchronization efficiency. &quot;path&quot;: Relax the path range to avoid splitting TsFile, which can improve synchronization efficiency. &quot;time, path&quot;, &quot;path, time&quot;, &quot;all&quot;: Relax all ranges to avoid splitting TsFile, which can improve synchronization efficiency.</td><td style="text-align:left;">String: &quot;&quot; 、 &quot;time&quot; 、 &quot;path&quot; 、 &quot;time, path&quot; 、 &quot;path, time&quot; 、 &quot;all&quot;</td><td style="text-align:left;">Optional</td><td style="text-align:left;">&quot;&quot;</td></tr><tr><td style="text-align:left;">realtime.loose-range</td><td style="text-align:left;">When transferring TsFile, whether to relax the range of real-time data (before the creation of the pipe). &quot;&quot;: Do not relax the range, select data strictly according to the set conditions. &quot;time&quot;: Relax the time range to avoid splitting TsFile, which can improve synchronization efficiency. &quot;path&quot;: Relax the path range to avoid splitting TsFile, which can improve synchronization efficiency. &quot;time, path&quot;, &quot;path, time&quot;, &quot;all&quot;: Relax all ranges to avoid splitting TsFile, which can improve synchronization efficiency.</td><td style="text-align:left;">String: &quot;&quot; 、 &quot;time&quot; 、 &quot;path&quot; 、 &quot;time, path&quot; 、 &quot;path, time&quot; 、 &quot;all&quot;</td><td style="text-align:left;">Optional</td><td style="text-align:left;">&quot;&quot;</td></tr><tr><td style="text-align:left;">mods.enable</td><td style="text-align:left;">Whether to send the mods file of tsfile</td><td style="text-align:left;">Boolean: true / false</td><td style="text-align:left;">Optional</td><td style="text-align:left;">false</td></tr></tbody></table><blockquote><p>💎 <strong>Explanation</strong>:To maintain compatibility with lower versions, history.enable, history.start-time, history.end-time, realtime.enable can still be used, but they are not recommended in the new version.</p><p>💎 <strong>Explanation: Differences between Stream and Batch Data Extraction Modes</strong></p><ul><li><strong>stream (recommended)</strong>: In this mode, tasks process and send data in real-time. It is characterized by high timeliness and low throughput.</li><li><strong>batch</strong>: In this mode, tasks process and send data in batches (according to the underlying data files). It is characterized by low timeliness and high throughput.</li></ul></blockquote><h3 id="sink-parameter" tabindex="-1"><a class="header-anchor" href="#sink-parameter"><span>sink parameter</span></a></h3><blockquote><p>In versions 1.3.3 and above, when only the sink is included, the additional &quot;with sink&quot; prefix is no longer required.</p></blockquote><h4 id="iotdb-thrift-sink" tabindex="-1"><a class="header-anchor" href="#iotdb-thrift-sink"><span>iotdb-thrift-sink</span></a></h4><table><thead><tr><th style="text-align:left;">key</th><th style="text-align:left;">value</th><th style="text-align:left;">value Range</th><th style="text-align:left;">required or not</th><th style="text-align:left;">Default Value</th></tr></thead><tbody><tr><td style="text-align:left;">sink</td><td style="text-align:left;">iotdb-thrift-sink or iotdb-thrift-async-sink</td><td style="text-align:left;">String: iotdb-thrift-sink or iotdb-thrift-async-sink</td><td style="text-align:left;">Required</td><td style="text-align:left;"></td></tr><tr><td style="text-align:left;">node-urls</td><td style="text-align:left;">The URL of the data service port of any DataNode nodes on the target IoTDB (please note that synchronization tasks do not support forwarding to its own service)</td><td style="text-align:left;">String. Example: &#39;127.0.0.1:6667,127.0.0.1:6668,127.0.0.1:6669&#39;, &#39;127.0.0.1:6667&#39;</td><td style="text-align:left;">Required</td><td style="text-align:left;">-</td></tr><tr><td style="text-align:left;">batch.enable</td><td style="text-align:left;">Whether to enable batched log transmission mode to improve transmission throughput and reduce IOPS</td><td style="text-align:left;">Boolean: true, false</td><td style="text-align:left;">Optional</td><td style="text-align:left;">true</td></tr><tr><td style="text-align:left;">batch.max-delay-seconds</td><td style="text-align:left;">Effective when batched log transmission mode is enabled, it represents the maximum waiting time for a batch of data before sending (unit: s)</td><td style="text-align:left;">Integer</td><td style="text-align:left;">Optional</td><td style="text-align:left;">1</td></tr><tr><td style="text-align:left;">batch.max-delay-ms</td><td style="text-align:left;">Effective when batched log transmission mode is enabled, it represents the maximum waiting time for a batch of data before sending (unit: ms) (Available since v1.3.6)</td><td style="text-align:left;">Integer</td><td style="text-align:left;">Optional</td><td style="text-align:left;">1</td></tr><tr><td style="text-align:left;">batch.size-bytes</td><td style="text-align:left;">Effective when batched log transmission mode is enabled, it represents the maximum batch size for a batch of data (unit: byte)</td><td style="text-align:left;">Long</td><td style="text-align:left;">Optional</td><td style="text-align:left;">16<em>1024</em>1024</td></tr><tr><td style="text-align:left;">load-tsfile-strategy</td><td style="text-align:left;">When synchronizing file data, whether the receiver waits for the local load tsfile operation to complete before responding to the sender:<br>sync: Wait for the local load tsfile operation to complete before returning the response.<br>async: Do not wait for the local load tsfile operation to complete; return the response immediately. (Available since v1.3.6)</td><td style="text-align:left;">String: sync / async</td><td style="text-align:left;">Optional</td><td style="text-align:left;">sync</td></tr></tbody></table><h4 id="iotdb-thrift-ssl-sink" tabindex="-1"><a class="header-anchor" href="#iotdb-thrift-ssl-sink"><span>iotdb-thrift-ssl-sink</span></a></h4><table><thead><tr><th style="text-align:left;">key</th><th style="text-align:left;">value</th><th style="text-align:left;">value Range</th><th style="text-align:left;">required or not</th><th style="text-align:left;">Default Value</th></tr></thead><tbody><tr><td style="text-align:left;">sink</td><td style="text-align:left;">iotdb-thrift-ssl-sink</td><td style="text-align:left;">String: iotdb-thrift-ssl-sink</td><td style="text-align:left;">Required</td><td style="text-align:left;">-</td></tr><tr><td style="text-align:left;">node-urls</td><td style="text-align:left;">The URL of the data service port of any DataNode nodes on the target IoTDB (please note that synchronization tasks do not support forwarding to its own service)</td><td style="text-align:left;">String. Example: &#39;127.0.0.1:6667,127.0.0.1:6668,127.0.0.1:6669&#39;, &#39;127.0.0.1:6667&#39;</td><td style="text-align:left;">Required</td><td style="text-align:left;">-</td></tr><tr><td style="text-align:left;">batch.enable</td><td style="text-align:left;">Whether to enable batched log transmission mode to improve transmission throughput and reduce IOPS</td><td style="text-align:left;">Boolean: true, false</td><td style="text-align:left;">Optional</td><td style="text-align:left;">true</td></tr><tr><td style="text-align:left;">batch.max-delay-seconds</td><td style="text-align:left;">Effective when batched log transmission mode is enabled, it represents the maximum waiting time for a batch of data before sending (unit: s)</td><td style="text-align:left;">Integer</td><td style="text-align:left;">Optional</td><td style="text-align:left;">1</td></tr><tr><td style="text-align:left;">batch.max-delay-ms</td><td style="text-align:left;">Effective when batched log transmission mode is enabled, it represents the maximum waiting time for a batch of data before sending (unit: ms) (Available since v1.3.6)</td><td style="text-align:left;">Integer</td><td style="text-align:left;">Optional</td><td style="text-align:left;">1</td></tr><tr><td style="text-align:left;">batch.size-bytes</td><td style="text-align:left;">Effective when batched log transmission mode is enabled, it represents the maximum batch size for a batch of data (unit: byte)</td><td style="text-align:left;">Long</td><td style="text-align:left;">Optional</td><td style="text-align:left;">16<em>1024</em>1024</td></tr><tr><td style="text-align:left;">load-tsfile-strategy</td><td style="text-align:left;">When synchronizing file data, whether the receiver waits for the local load tsfile operation to complete before responding to the sender:<br>sync: Wait for the local load tsfile operation to complete before returning the response.<br>async: Do not wait for the local load tsfile operation to complete; return the response immediately. (Available since v1.3.6)</td><td style="text-align:left;">String: sync / async</td><td style="text-align:left;">Optional</td><td style="text-align:left;">sync</td></tr><tr><td style="text-align:left;">ssl.trust-store-path</td><td style="text-align:left;">The trust store certificate path required to connect to the target DataNode</td><td style="text-align:left;">String: certificate directory name, when configured as a relative directory, it is relative to the IoTDB root directory. Example: &#39;127.0.0.1:6667,127.0.0.1:6668,127.0.0.1:6669&#39;, &#39;127.0.0.1:6667&#39;</td><td style="text-align:left;">Required</td><td style="text-align:left;">-</td></tr><tr><td style="text-align:left;">ssl.trust-store-pwd</td><td style="text-align:left;">The trust store certificate password required to connect to the target DataNode</td><td style="text-align:left;">Integer</td><td style="text-align:left;">Required</td><td style="text-align:left;">-</td></tr></tbody></table></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/dev-1.3/User-Manual/Data-Sync_apache.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-01-05T02:38:40.000Z" data-allow-mismatch>1/5/26, 2:38 AM</time></div><!----></div></footer><!----><!----><!----><!--]--></main><!--]--><footer class="site-footer"><span id="doc-version" style="display:none;">dev-1.3</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>