| <!DOCTYPE html> |
| |
| |
| |
| <html lang="en"> |
| <head> |
| <meta charset="UTF-8"> |
| <!-- Bugyard widget embed --> |
| <script type="text/javascript"> |
| !function(){ |
| if("function" != typeof window.bugyard){ |
| var a = function(){ a.c(arguments) }; |
| a.q = [], a.c = function(b){ a.q.push(b) }; |
| window.bugyard = a; |
| |
| var b = document.createElement("script"); |
| b.setAttribute("data-bugyard", "610961912c35ff001493163a"); |
| b.setAttribute("async", "async"); |
| b.setAttribute("defer", "defer"); |
| b.setAttribute("src", "/assets/js/bugyard.min.js"); |
| document.getElementsByTagName("head")[0].appendChild(b); |
| } |
| }(); |
| window.bugyard("hideButton"); |
| </script> |
| <!-- Bugyard widget embed --> |
| |
| <link rel="preload" href='/assets/js/code-tabs.js?1' as="script" crossorigin> |
| <link rel="preload" href='/assets/js/page-nav.js' as="script" crossorigin> |
| <link rel="preload" href='/assets/js/docs-menu.js?20201005' as="script" crossorigin> |
| |
| <style>:root{--gg-red:#ec1c24;--gg-orange:#ec1c24;--gg-orange-dark:#bc440b;--gg-orange-filter:invert(47%) sepia(61%) saturate(1950%) hue-rotate(345deg) brightness(100%) contrast(95%);--gg-dark-gray:#333333;--orange-line-thickness:3px;--block-code-background:rgba(241, 241, 241, 20%);--inline-code-background:rgba(241, 241, 241, 90%);--padding-top:25px;--link-color:#ec1c24;--body-background:#fcfcfc}header{min-height:var(--header-height);background:#fff;box-shadow:0 4px 10px 0 #eee,0 0 4px 0 #d5d5d5;z-index:1}header>.container{display:grid;grid-template-columns:auto auto 1fr auto auto auto;grid-template-areas:'left-toggle home nav ver api search lang';grid-template-rows:40px;flex-direction:row;align-items:center;justify-content:flex-start;padding:12px 20px;max-width:1400px;margin:0 auto}header nav>ul{padding:0;margin:0;list-style:none;display:inherit}header .dropdown{display:none;position:fixed;top:calc(var(--header-height) - 12px);width:auto;background:#fff;box-shadow:0 4px 4px 0 rgba(0,0,0,.24),0 0 4px 0 rgba(0,0,0,.12);border-radius:4px;padding-top:10px;padding-bottom:12px;z-index:2}header .dropdown li{display:flex}header .dropdown a{color:grey!important;font-size:16px;padding-top:5px;padding-bottom:4px}header .menu{border:none;background:0 0;width:40px;height:40px;margin-right:12px;grid-area:left-toggle}header .menu img{width:18px;height:12px}header .search-close,header .top-nav-toggle{background:0 0;border:none;padding:0;width:36px;height:36px;display:inline-flex;align-items:center;justify-content:center;color:var(--gg-dark-gray);font-size:26px}header .search-toggle{grid-area:search}header .top-nav-toggle{grid-area:top-toggle}header .home{grid-area:home;margin-right:auto}header .home img{height:36px}header #api-docs{grid-area:api;margin:0;display:flex}header #api-docs .dropdown{padding:.5em 0}header #api-docs a{padding:9px 14px;color:var(--gg-dark-gray)!important;text-decoration:none;white-space:nowrap}header #api-docs .dropdown-item a{font-weight:400;display:block;width:100%;min-width:150px}header #lang-selector li{list-style:none;display:flex;padding:9px 14px}header #lang-selector li a{display:flex;color:#000;align-items:center}header #lang-selector li a span{font-size:10px;margin-left:5px}header #lang-selector li a img{width:25px}header #lang-selector li .dropdown{margin-left:-70px}header #lang-selector li .dropdown .dropdown-item{padding:0 1em;margin-bottom:8px}header #lang-selector li .dropdown .dropdown-item a span{font-size:14px}header .search{margin-left:auto;margin-right:20px;grid-area:search}header .search input[type=search]{color:var(--gg-dark-gray);background:rgba(255,255,255,.8);border:1px solid #ccc;padding:10px 15px;font-family:inherit;max-width:148px;height:37px;font-size:14px;-webkit-appearance:unset;appearance:unset}header #version-selector{list-style:none;grid-area:ver;line-height:28px;border-radius:0;margin-right:10px;border:none;color:var(--gg-dark-gray);padding:5px 16px 5px 10px;white-space:nowrap;font-size:14px;width:auto;text-align:right;box-sizing:border-box;text-align-last:right;-moz-appearance:none;-webkit-appearance:none;appearance:none;direction:rtl}header #version-selector option{direction:ltr}header>nav{grid-area:nav;font-size:18px;display:flex;flex-direction:row;margin:0 20px}header #lang-selector{grid-area:lang}header .search-close{margin-right:10px}@media (max-width:600px){header .search{margin-right:5px}header .search input[type=search]{max-width:110px}}header:not(.narrow-header) .search-close,header:not(.narrow-header) .top-nav-toggle{display:none}@media (max-width:670px){header>.container{grid-template-columns:auto 1fr auto;grid-template-areas:'left-toggle home search' 'ver api lang'}header #lang-selector li{justify-content:flex-end}}pre,pre.rouge{padding:8px 15px;background:var(--block-code-background)!important;border-radius:5px;border:1px solid #e5e5e5;overflow-x:auto;min-height:36px;line-height:18px;color:#545454}code{color:#545454}pre.rouge code{background:0 0!important}:not(pre)>code{background:var(--inline-code-background);padding:.1em .5em;background-clip:padding-box;border-radius:3px;color:#545454;font-size:90%}.listingblock .content{position:relative}.highlight{color:#586e75}.highlight .c1{color:#657b83}.highlight .nt{color:#b58900}.highlight .o{color:#93a1a1}.highlight .k{color:#6c71c4}.highlight .kt{color:#cb4b16}.highlight .s,.highlight .s1{color:#859900}.highlight .nc{color:#b58900}.highlight .na{color:#268bd2}body{font-family:'Open Sans',sans-serif}h1,h2{color:#000;font-weight:400;font-family:'Open Sans'}h1{font-size:36px;line-height:40px}a{text-decoration:none;color:var(--link-color)}section{color:#545454}.admonitionblock .icon .title{display:none}body{--header-height:64px;--promotion-bar-height:35px;--footer-height:104px;--footer-gap:60px;padding:0;margin:0;display:flex;flex-direction:column;min-height:100vh;background-color:var(--body-background);font-family:'Open Sans',sans-serif}body>section{flex:1}header{position:-webkit-sticky;position:sticky;top:0;z-index:2}*{box-sizing:border-box}@media (max-width:670px){body{--header-height:97px}}.left-nav{padding:10px 20px;width:289px;overflow-y:auto;top:calc(var(--header-height) + var(--promotion-bar-height));height:calc(100vh - var(--header-height) - var(--promotion-bar-height));font-family:'Open Sans';padding-top:var(--padding-top);background-color:var(--body-background)}.left-nav li{list-style:none}.left-nav a,.left-nav button{text-decoration:none;color:#757575;font-size:16px;display:inline-flex;width:100%;margin:2px 0;padding:.25em .375em;background:0 0;border:none;font:inherit;text-align:left}.left-nav a.active{color:var(--link-color)}.left-nav .nav-group{margin-left:6px;font-size:14px}.left-nav nav{border-left:2px solid #ddd;margin-bottom:5px}.left-nav nav.collapsed{display:none}.left-nav nav>li>a,.left-nav nav>li>button{padding-left:20px;text-align:left}.left-nav nav>li>a.active{border-left:var(--orange-line-thickness) solid var(--active-color);padding-left:calc(20px - var(--orange-line-thickness))}.left-nav nav.sub_pages{border:none}.left-nav nav.sub_pages a{padding-left:32px}.left-nav .state-indicator{margin-left:auto;margin-top:5px;width:6.2px;height:10px;flex:0 0 auto;filter:invert(49%) sepia(4%) saturate(5%) hue-rotate(23deg) brightness(92%) contrast(90%)}.left-nav button.expanded .state-indicator{transform:rotate(90deg)}.right-nav{width:289px;padding:12px 26px;overflow-y:auto;height:calc(100vh - var(--header-height));top:0;position:-webkit-sticky;position:sticky;display:flex;flex-direction:column;font-family:'Open sans';padding-top:var(--padding-top);background-color:#fff}.right-nav ul{list-style:none;padding:0;margin:0}.right-nav li{padding:0}.right-nav a{--border-width:0px;font-size:14px;color:#757575;padding-left:calc(15px * var(--nesting-level) + 8px - var(--border-width));margin:.3em 0;display:inline-block}.right-nav .sectlevel1{border-left:2px solid #ddd}.right-nav .sectlevel1{--nesting-level:0}.right-nav .sectlevel2{--nesting-level:1}.right-nav .sectlevel3{--nesting-level:2}@media (max-width:1200px){.right-nav{width:230px}}.right-nav footer{font-size:12px;padding:calc(var(--footer-gap) * .3) 0 5px;text-align:left;margin:auto 0 0}section.page-docs{display:grid;grid-template-columns:auto 1fr auto;grid-template-rows:100%;grid-template-areas:'left-nav content right-nav';line-height:20px;max-width:1440px;margin:auto;width:100%}section.page-docs>article{border-left:1px solid #eee;background-color:#fff;padding:0 50px 30px;grid-area:content;overflow:hidden;font-family:sans-serif;font-size:16px;color:#545454;line-height:1.6em}section.page-docs>article h1,section.page-docs>article h2{font-family:'Open Sans'}@media (max-width:800px){section.page-docs>article{padding-left:15px;padding-right:15px}}section.page-docs .edit-link{position:relative;top:10px;right:10px;float:right;padding-top:calc(var(--header-height) + var(--padding-top));margin-top:calc((-1 * var(--header-height)))}section.page-docs h1,section.page-docs h2{margin-bottom:0}section.page-docs h2[id]{margin-top:var(--margin-top);margin-bottom:calc(var(--margin-top) * .5);z-index:-1}section.page-docs .title{font-style:italic}section.page-docs h2[id]{--margin-top:1.2em}.left-nav{bottom:0;position:-webkit-sticky;position:sticky}.left-nav{grid-area:left-nav}.right-nav{grid-area:right-nav}.left-nav__overlay{display:none;background:rgba(0,0,0,.5);z-index:1;position:fixed;top:var(--header-height);bottom:0;left:0;right:0}@media (max-width:990px){body:not(.hide-left-nav) .left-nav__overlay{display:block}nav.left-nav{background:#fafafa;grid-area:left-nav;box-shadow:0 4px 4px 0 rgba(0,0,0,.24),0 0 4px 0 rgba(0,0,0,.12);min-height:calc(100vh - var(--header-height));max-height:calc(100vh - var(--header-height));position:fixed;bottom:0;top:var(--header-height);z-index:2}section.page-docs>article{grid-column-start:left-nav;grid-column-end:content;grid-row:content}}@media (max-width:800px){nav.right-nav{display:none}}:target:before{content:"";display:block;margin-top:calc(var(--header-height) * -1);height:var(--header-height);width:1px}@media (min-width:600px) and (max-width:900px){:target:before{content:"";display:block;width:1px;margin-top:-150px;height:150px}} |
| #header #promotion-bar { background-color: #333333; padding: 8px; } |
| #header #promotion-bar p { font-size: 14px; line-height: 1.4em; font-weight: 600; padding: 0; margin: 0; color: #f0f0f0; text-align: center;} |
| #header #promotion-bar p a { color: #FCB903; } </style> |
| |
| |
| |
| |
| <meta name="ignite-version" content="3.1.0" /> |
| <title>Persistent Data Migration | Ignite Documentation</title> |
| |
| <link rel="canonical" href="/docs/latest/installation/migration-from-ai2/persistent-migration" /> |
| |
| |
| <link rel="shortcut icon" href="/favicon.ico"> |
| <meta name='viewport' content='width=device-width, height=device-height, initial-scale=1.0, minimum-scale=1.0'> |
| |
| <link rel="preload" as="style" href="/assets/css/fonts.css" /> |
| <link rel="stylesheet" href="/assets/css/fonts.css" media="print" onload="this.media='all'"> |
| <noscript> |
| <link rel="stylesheet" href="/assets/css/fonts.css"> |
| </noscript> |
| <link href="/docs/pagefind/pagefind-ui.css" rel="stylesheet"> |
| <script src="/docs/pagefind/pagefind-ui.js"></script> |
| <script> |
| window.addEventListener('DOMContentLoaded', () => { |
| new PagefindUI({ |
| element: "#search", |
| showSubResults: true, |
| showImages: false, |
| }); |
| }); |
| </script> |
| <script src="/assets/js/mermaid.min.js"></script> |
| <script> |
| document.addEventListener('DOMContentLoaded', function () { |
| const blocks = document.querySelectorAll('.mermaid'); |
| if (blocks.length) { |
| mermaid.initialize({ startOnLoad: false }); |
| mermaid.run(); |
| } |
| }); |
| </script> |
| |
| <script> |
| // AnchorJS - v4.2.0 - 2019-01-01 |
| // https://github.com/bryanbraun/anchorjs |
| // Copyright (c) 2019 Bryan Braun; Licensed MIT |
| !function(A,e){"use strict";"function"==typeof define&&define.amd?define([],e):"object"==typeof module&&module.exports?module.exports=e():(A.AnchorJS=e(),A.anchors=new A.AnchorJS)}(this,function(){"use strict";return function(A){function f(A){A.icon=A.hasOwnProperty("icon")?A.icon:"",A.visible=A.hasOwnProperty("visible")?A.visible:"hover",A.placement=A.hasOwnProperty("placement")?A.placement:"right",A.ariaLabel=A.hasOwnProperty("ariaLabel")?A.ariaLabel:"Anchor",A.class=A.hasOwnProperty("class")?A.class:"",A.base=A.hasOwnProperty("base")?A.base:"",A.truncate=A.hasOwnProperty("truncate")?Math.floor(A.truncate):64,A.titleText=A.hasOwnProperty("titleText")?A.titleText:""}function p(A){var e;if("string"==typeof A||A instanceof String)e=[].slice.call(document.querySelectorAll(A));else{if(!(Array.isArray(A)||A instanceof NodeList))throw new Error("The selector provided to AnchorJS was invalid.");e=[].slice.call(A)}return e}this.options=A||{},this.elements=[],f(this.options),this.isTouchDevice=function(){return!!("ontouchstart"in window||window.DocumentTouch&&document instanceof DocumentTouch)},this.add=function(A){var e,t,i,n,o,s,a,r,c,h,l,u,d=[];if(f(this.options),"touch"===(l=this.options.visible)&&(l=this.isTouchDevice()?"always":"hover"),A||(A="h2, h3, h4, h5, h6"),0===(e=p(A)).length)return this;for(function(){if(null===document.head.querySelector("style.anchorjs")){var A,e=document.createElement("style");e.className="anchorjs",e.appendChild(document.createTextNode("")),void 0===(A=document.head.querySelector('[rel="stylesheet"], style'))?document.head.appendChild(e):document.head.insertBefore(e,A),e.sheet.insertRule(" .anchorjs-link { opacity: 0; text-decoration: none; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; }",e.sheet.cssRules.length),e.sheet.insertRule(" *:hover > .anchorjs-link, .anchorjs-link:focus { opacity: 1; }",e.sheet.cssRules.length),e.sheet.insertRule(" [data-anchorjs-icon]::after { content: attr(data-anchorjs-icon); }",e.sheet.cssRules.length),e.sheet.insertRule(' @font-face { font-family: "anchorjs-icons"; src: url(data:n/a;base64,AAEAAAALAIAAAwAwT1MvMg8yG2cAAAE4AAAAYGNtYXDp3gC3AAABpAAAAExnYXNwAAAAEAAAA9wAAAAIZ2x5ZlQCcfwAAAH4AAABCGhlYWQHFvHyAAAAvAAAADZoaGVhBnACFwAAAPQAAAAkaG10eASAADEAAAGYAAAADGxvY2EACACEAAAB8AAAAAhtYXhwAAYAVwAAARgAAAAgbmFtZQGOH9cAAAMAAAAAunBvc3QAAwAAAAADvAAAACAAAQAAAAEAAHzE2p9fDzz1AAkEAAAAAADRecUWAAAAANQA6R8AAAAAAoACwAAAAAgAAgAAAAAAAAABAAADwP/AAAACgAAA/9MCrQABAAAAAAAAAAAAAAAAAAAAAwABAAAAAwBVAAIAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAMCQAGQAAUAAAKZAswAAACPApkCzAAAAesAMwEJAAAAAAAAAAAAAAAAAAAAARAAAAAAAAAAAAAAAAAAAAAAQAAg//0DwP/AAEADwABAAAAAAQAAAAAAAAAAAAAAIAAAAAAAAAIAAAACgAAxAAAAAwAAAAMAAAAcAAEAAwAAABwAAwABAAAAHAAEADAAAAAIAAgAAgAAACDpy//9//8AAAAg6cv//f///+EWNwADAAEAAAAAAAAAAAAAAAAACACEAAEAAAAAAAAAAAAAAAAxAAACAAQARAKAAsAAKwBUAAABIiYnJjQ3NzY2MzIWFxYUBwcGIicmNDc3NjQnJiYjIgYHBwYUFxYUBwYGIwciJicmNDc3NjIXFhQHBwYUFxYWMzI2Nzc2NCcmNDc2MhcWFAcHBgYjARQGDAUtLXoWOR8fORYtLTgKGwoKCjgaGg0gEhIgDXoaGgkJBQwHdR85Fi0tOAobCgoKOBoaDSASEiANehoaCQkKGwotLXoWOR8BMwUFLYEuehYXFxYugC44CQkKGwo4GkoaDQ0NDXoaShoKGwoFBe8XFi6ALjgJCQobCjgaShoNDQ0NehpKGgobCgoKLYEuehYXAAAADACWAAEAAAAAAAEACAAAAAEAAAAAAAIAAwAIAAEAAAAAAAMACAAAAAEAAAAAAAQACAAAAAEAAAAAAAUAAQALAAEAAAAAAAYACAAAAAMAAQQJAAEAEAAMAAMAAQQJAAIABgAcAAMAAQQJAAMAEAAMAAMAAQQJAAQAEAAMAAMAAQQJAAUAAgAiAAMAAQQJAAYAEAAMYW5jaG9yanM0MDBAAGEAbgBjAGgAbwByAGoAcwA0ADAAMABAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAH//wAP) format("truetype"); }',e.sheet.cssRules.length)}}(),t=document.querySelectorAll("[id]"),i=[].map.call(t,function(A){return A.id}),o=0;o<e.length;o++)if(this.hasAnchorJSLink(e[o]))d.push(o);else{if(e[o].hasAttribute("id"))n=e[o].getAttribute("id");else if(e[o].hasAttribute("data-anchor-id"))n=e[o].getAttribute("data-anchor-id");else{for(c=r=this.urlify(e[o].textContent),a=0;void 0!==s&&(c=r+"-"+a),a+=1,-1!==(s=i.indexOf(c)););s=void 0,i.push(c),e[o].setAttribute("id",c),n=c}n.replace(/-/g," "),(h=document.createElement("a")).className="anchorjs-link "+this.options.class,h.setAttribute("aria-label",this.options.ariaLabel),h.setAttribute("data-anchorjs-icon",this.options.icon),this.options.titleText&&(h.title=this.options.titleText),u=document.querySelector("base")?window.location.pathname+window.location.search:"",u=this.options.base||u,h.href=u+"#"+n,"always"===l&&(h.style.opacity="1"),""===this.options.icon&&(h.style.font="1em/1 anchorjs-icons","left"===this.options.placement&&(h.style.lineHeight="inherit")),"left"===this.options.placement?(h.style.position="absolute",h.style.marginLeft="-1em",h.style.paddingRight="0.5em",e[o].insertBefore(h,e[o].firstChild)):(h.style.paddingLeft="0.375em",e[o].appendChild(h))}for(o=0;o<d.length;o++)e.splice(d[o]-o,1);return this.elements=this.elements.concat(e),this},this.remove=function(A){for(var e,t,i=p(A),n=0;n<i.length;n++)(t=i[n].querySelector(".anchorjs-link"))&&(-1!==(e=this.elements.indexOf(i[n]))&&this.elements.splice(e,1),i[n].removeChild(t));return this},this.removeAll=function(){this.remove(this.elements)},this.urlify=function(A){return this.options.truncate||f(this.options),A.trim().replace(/\'/gi,"").replace(/[& +$,:;=?@"#{}|^~[`%!'<>\]\.\/\(\)\*\\\n\t\b\v]/g,"-").replace(/-{2,}/g,"-").substring(0,this.options.truncate).replace(/^-+|-+$/gm,"").toLowerCase()},this.hasAnchorJSLink=function(A){var e=A.firstChild&&-1<(" "+A.firstChild.className+" ").indexOf(" anchorjs-link "),t=A.lastChild&&-1<(" "+A.lastChild.className+" ").indexOf(" anchorjs-link ");return e||t||!1}}}); |
| </script> |
| |
| </head> |
| <body> |
| <header> |
| <!--#include virtual="/includes/promotion_banner.html" --> |
| <div class="container"> |
| <button type='button' class='menu' title='Docs menu'> |
| <img src="/assets/images/menu-icon.svg" width="18" height="12" alt="menu icon" /> |
| </button> |
| <div class='home'> |
| <a href="/" class='home' title='Apache Ignite home'> |
| <img src="/assets/images/apache_ignite_logo.svg" alt="Apache Ignite logo" width="103" height="36" > |
| </a> |
| </div> |
| |
| |
| |
| <select id="product-selector"> |
| <option value="/docs/ignite2/latest" >Ignite 2</option> |
| <option value="/docs/ignite3/latest"selected>Ignite 3</option> |
| </select> |
| |
| <select id="version-selector"> |
| <option value="3.1.0">3.1.0</option> |
| </select> |
| |
| |
| <nav id="api-docs"><ul> |
| <li><a href="#">APIs</a> |
| <nav class='dropdown'> |
| <ul> |
| |
| <li class="dropdown-item"><a href="/releases/ignite3/3.1.0/javadoc/">Java</a></li> |
| <li class="dropdown-item"><a href="/releases/ignite3/3.1.0/dotnetdoc/">C#/.NET</a></li> |
| <li class="dropdown-item"><a href="/releases/ignite3/3.1.0/cppdoc/">C++</a></li> |
| <li class="dropdown-item"><a href="/releases/ignite3/3.1.0/openapi.yaml">OpenAPI</a></li> |
| |
| </ul> |
| </nav> |
| </li> |
| |
| <li><a href="#">Examples</a> |
| <nav class="dropdown"> |
| <ul> |
| <li class="dropdown-item"><a href="https://github.com/apache/ignite/tree/master/examples" target="_blank" rel="noopener" title="Apache Ignite Java examples">Java</a></li> |
| |
| <li class="dropdown-item"><a href="https://github.com/apache/ignite/tree/master/modules/platforms/dotnet/examples" target="_blank" rel="noopener" title="Apache Ignite C#/.NET examples">C#/.NET</a></li> |
| |
| <li class="dropdown-item"><a href="https://github.com/apache/ignite/tree/master/modules/platforms/cpp/examples" target="_blank" rel="noopener" title="Apache Ignite C++ examples">C++</a></li> |
| |
| <li class="dropdown-item"><a href="https://github.com/apache/ignite/tree/master/modules/platforms/python/examples" target="_blank" rel="noopener" title="Apache Ignite Python examples">Python</a></li> |
| |
| <li class="dropdown-item"><a href="https://github.com/apache/ignite/tree/master/modules/platforms/nodejs/examples" target="_blank" rel="noopener" title="Apache Ignite NodeJS examples">NodeJS</a></li> |
| |
| <li class="dropdown-item"><a href="https://github.com/apache/ignite/tree/master/modules/platforms/php/examples" target="_blank" rel="noopener" title="Apache Ignite PHP examples">PHP</a></li> |
| </ul> |
| </nav> |
| </li></ul> |
| </nav> |
| |
| |
| |
| <div id="search-button"></div> |
| |
| <nav id="lang-selector"><ul> |
| <li><a href="#"><img src="/assets/images/icon_lang_en_75x75.jpg" alt="English language icon" width="25" height="25" /><span>▼</span></a> |
| <nav class="dropdown"> |
| <li class="dropdown-item"><a href="/docs/latest/" ><img src="/assets/images/icon_lang_en_75x75.jpg" alt="English language icon" width="25" height="25" /><span>English</span></a></li> |
| <li class="dropdown-item"><a href="https://www.ignite-service.cn/doc/java/" target="_blank" rel="noopener"><img src="/assets/images/icon_lang_cn_75x75.jpg" width="25" height="25" alt="Chinese language icon" /><span>Chinese</span></a></li> |
| </nav> |
| </li></ul> |
| </nav> |
| |
| <button type='button' class='top-nav-toggle'>⋮</button> |
| |
| </div> |
| <div id="search-wrapper"> |
| <div id="search"></div> |
| </div> |
| </header> |
| |
| <link rel="stylesheet" href="/assets/css/docs.css"> |
| <section class='page-docs'> |
| |
| |
| |
| |
| |
| |
| <nav class='left-nav' data-swiftype-index='false'> |
| |
| |
| <li> |
| |
| |
| <a href="/docs/ignite3/latest/index" class='' >About Apache Ignite 3</a> |
| |
| </li> |
| |
| <li> |
| |
| |
| |
| |
| |
| |
| <button type='button' class='group-toggle expanded '>Installation<img class="state-indicator" src="/assets/images/left-nav-arrow.svg" width="6" height="10"></button> |
| <nav class='nav-group expanded'> |
| |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/ignite3/latest/installation/installing-using-zip" |
| class='' |
| >Installing Using ZIP Archive</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/ignite3/latest/installation/deb-rpm" |
| class='' |
| >Installing DEB or RPM package</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/ignite3/latest/installation/installing-using-docker" |
| class='' |
| >Installing Docker</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/ignite3/latest/installation/migration-from-ai3-1" |
| class='' |
| >Migration From Ignite 3.0</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| |
| |
| <button |
| type='button' |
| class='expanded parent '>Migration From Ignite 2<img class="state-indicator" src="/assets/images/left-nav-arrow.svg" width="6" height="10"></button> |
| <nav class="sub_pages expanded parent"> |
| |
| |
| |
| |
| |
| <li><a href="/docs/ignite3/latest/installation/migration-from-ai2/config" class=''>Configuration Migration</a></li> |
| |
| |
| |
| |
| <li><a href="/docs/ignite3/latest/installation/migration-from-ai2/persistent-migration" class='active'>Persistent Data Migration</a></li> |
| |
| |
| |
| |
| <li><a href="/docs/ignite3/latest/installation/migration-from-ai2/ai2-functions" class=''>SQL Function Comparison</a></li> |
| |
| </nav> |
| |
| </li> |
| |
| |
| |
| </nav> |
| |
| </li> |
| |
| <li> |
| |
| |
| |
| |
| |
| |
| <button type='button' class='group-toggle collapsed '>Getting Started<img class="state-indicator" src="/assets/images/left-nav-arrow.svg" width="6" height="10"></button> |
| <nav class='nav-group collapsed'> |
| |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/ignite3/latest/quick-start/getting-started-guide" |
| class='' |
| >Quick Start</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/ignite3/latest/quick-start/start-cluster" |
| class='' |
| >Start Ignite 3 Cluster</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/ignite3/latest/quick-start/explore-sql" |
| class='' |
| >Explore SQL Capabilities</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/ignite3/latest/quick-start/persist-data" |
| class='' |
| >Persist Your Data</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/ignite3/latest/quick-start/java-api" |
| class='' |
| >Use Java API</a> |
| |
| </li> |
| |
| |
| |
| </nav> |
| |
| </li> |
| |
| <li> |
| |
| |
| <a href="/docs/ignite3/latest/quick-start/embedded-mode" class='' >Embedded Mode</a> |
| |
| </li> |
| |
| <li> |
| |
| |
| <a href="/docs/ignite3/latest/ignite-cli-tool" class='' >Ignite CLI Tool</a> |
| |
| </li> |
| |
| <li> |
| |
| |
| |
| |
| |
| |
| <button type='button' class='group-toggle collapsed '>Developers Guide<img class="state-indicator" src="/assets/images/left-nav-arrow.svg" width="6" height="10"></button> |
| <nav class='nav-group collapsed'> |
| |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/ignite3/latest/developers-guide/table-api" |
| class='' |
| >Table API</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| |
| |
| <button |
| type='button' |
| class='collapsed '>Clients<img class="state-indicator" src="/assets/images/left-nav-arrow.svg" width="6" height="10"></button> |
| <nav class="sub_pages collapsed"> |
| |
| |
| |
| |
| |
| <li><a href="/docs/ignite3/latest/developers-guide/clients/overview" class=''>Overview</a></li> |
| |
| |
| |
| |
| <li><a href="/docs/ignite3/latest/developers-guide/clients/java" class=''>Java Clients</a></li> |
| |
| |
| |
| |
| <li><a href="/docs/ignite3/latest/developers-guide/clients/dotnet" class=''>.NET Clients</a></li> |
| |
| |
| |
| |
| <li><a href="/docs/ignite3/latest/developers-guide/clients/cpp" class=''>C++ Clients</a></li> |
| |
| |
| |
| |
| <li><a href="/docs/ignite3/latest/developers-guide/clients/python" class=''>Python Clients</a></li> |
| |
| |
| |
| |
| <li><a href="/docs/ignite3/latest/developers-guide/clients/ado" class=''>ADO.NET Integration</a></li> |
| |
| |
| |
| |
| <li><a href="/docs/ignite3/latest/developers-guide/clients/linq" class=''>.NET LINQ Queries</a></li> |
| |
| |
| |
| |
| <li><a href="/docs/ignite3/latest/developers-guide/clients/jdbc-driver" class=''>JDBC Driver</a></li> |
| |
| </nav> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| |
| |
| <button |
| type='button' |
| class='collapsed '>Working with SQL<img class="state-indicator" src="/assets/images/left-nav-arrow.svg" width="6" height="10"></button> |
| <nav class="sub_pages collapsed"> |
| |
| |
| |
| |
| |
| <li><a href="/docs/ignite3/latest/developers-guide/sql/calcite-based-sql-engine" class=''>Introduction</a></li> |
| |
| |
| |
| |
| <li><a href="/docs/ignite3/latest/developers-guide/sql/sql-api" class=''>SQL API</a></li> |
| |
| |
| |
| |
| <li><a href="/docs/ignite3/latest/developers-guide/sql/jdbc-driver" class=''>JDBC Driver</a></li> |
| |
| |
| |
| |
| <li><a href="/docs/ignite3/latest/developers-guide/sql/odbc/odbc-driver" class=''>ODBC Driver</a></li> |
| |
| |
| |
| |
| <li><a href="/docs/ignite3/latest/developers-guide/sql/odbc/connection-string" class=''>ODBC Connection String</a></li> |
| |
| |
| |
| |
| <li><a href="/docs/ignite3/latest/developers-guide/sql/odbc/querying-modifying-data" class=''>Querying and Modifying Data</a></li> |
| |
| |
| |
| |
| <li><a href="/docs/ignite3/latest/developers-guide/sql/odbc/specification" class=''>Standard Conformance</a></li> |
| |
| </nav> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/ignite3/latest/developers-guide/java-to-tables" |
| class='' |
| >Tables from Java Classes</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| |
| |
| <button |
| type='button' |
| class='collapsed '>Distributed Computing<img class="state-indicator" src="/assets/images/left-nav-arrow.svg" width="6" height="10"></button> |
| <nav class="sub_pages collapsed"> |
| |
| |
| |
| |
| |
| <li><a href="/docs/ignite3/latest/developers-guide/compute/compute" class=''>Compute API</a></li> |
| |
| |
| |
| |
| <li><a href="/docs/ignite3/latest/developers-guide/compute/serialization" class=''>Serialization</a></li> |
| |
| </nav> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/ignite3/latest/developers-guide/transactions" |
| class='' |
| >Transactions</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/ignite3/latest/developers-guide/data-streamer" |
| class='' |
| >Data Streaming</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/ignite3/latest/developers-guide/code-deployment/code-deployment" |
| class='' |
| >Code Deployment</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| |
| |
| <button |
| type='button' |
| class='collapsed '>Events<img class="state-indicator" src="/assets/images/left-nav-arrow.svg" width="6" height="10"></button> |
| <nav class="sub_pages collapsed"> |
| |
| |
| |
| |
| |
| <li><a href="/docs/ignite3/latest/developers-guide/events/overview" class=''>Overview</a></li> |
| |
| |
| |
| |
| <li><a href="/docs/ignite3/latest/developers-guide/events/events-list" class=''>Events List</a></li> |
| |
| </nav> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/ignite3/latest/developers-guide/rest/rest-api" |
| class='' |
| >REST API</a> |
| |
| </li> |
| |
| |
| |
| </nav> |
| |
| </li> |
| |
| <li> |
| |
| |
| |
| |
| |
| |
| <button type='button' class='group-toggle collapsed '>Administrator's Guide<img class="state-indicator" src="/assets/images/left-nav-arrow.svg" width="6" height="10"></button> |
| <nav class='nav-group collapsed'> |
| |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| |
| |
| <button |
| type='button' |
| class='collapsed '>Ignite Configuration<img class="state-indicator" src="/assets/images/left-nav-arrow.svg" width="6" height="10"></button> |
| <nav class="sub_pages collapsed"> |
| |
| |
| |
| |
| |
| <li><a href="/docs/ignite3/latest/administrators-guide/config/node-config" class=''>Node Configuration Parameters</a></li> |
| |
| |
| |
| |
| <li><a href="/docs/ignite3/latest/administrators-guide/config/cluster-config" class=''>Cluster Configuration Parameters</a></li> |
| |
| |
| |
| |
| <li><a href="/docs/ignite3/latest/administrators-guide/config/cli-config" class=''>CLI Configuration</a></li> |
| |
| </nav> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| |
| |
| <button |
| type='button' |
| class='collapsed '>Distributed Storage<img class="state-indicator" src="/assets/images/left-nav-arrow.svg" width="6" height="10"></button> |
| <nav class="sub_pages collapsed"> |
| |
| |
| |
| |
| |
| <li><a href="/docs/ignite3/latest/administrators-guide/storage/storage-overview" class=''>Storage Overview</a></li> |
| |
| |
| |
| |
| <li><a href="/docs/ignite3/latest/administrators-guide/storage/storage-profiles" class=''>Storage Profiles</a></li> |
| |
| |
| |
| |
| <li><a href="/docs/ignite3/latest/administrators-guide/storage/data-partitions" class=''>Data Partitions</a></li> |
| |
| |
| |
| |
| <li><a href="/docs/ignite3/latest/administrators-guide/storage/distribution-zones" class=''>Distribution Zones</a></li> |
| |
| </nav> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| |
| |
| <button |
| type='button' |
| class='collapsed '>Storage Engines<img class="state-indicator" src="/assets/images/left-nav-arrow.svg" width="6" height="10"></button> |
| <nav class="sub_pages collapsed"> |
| |
| |
| |
| |
| |
| <li><a href="/docs/ignite3/latest/administrators-guide/storage/engines/storage-engines" class=''>Storage Engines Overview</a></li> |
| |
| |
| |
| |
| <li><a href="/docs/ignite3/latest/administrators-guide/storage/engines/aipersist" class=''>AIPersist Engine</a></li> |
| |
| |
| |
| |
| <li><a href="/docs/ignite3/latest/administrators-guide/storage/engines/rocksdb" class=''>RocksDB Engine</a></li> |
| |
| |
| |
| |
| <li><a href="/docs/ignite3/latest/administrators-guide/storage/engines/aimem" class=''>AIMem Engine</a></li> |
| |
| </nav> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/ignite3/latest/administrators-guide/lifecycle" |
| class='' |
| >Cluster Lifecycle</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/ignite3/latest/administrators-guide/colocation" |
| class='' |
| >Data Colocation</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/ignite3/latest/administrators-guide/disaster-recovery" |
| class='' |
| >Disaster Recovery for Partitions</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/ignite3/latest/administrators-guide/system-groups-recovery" |
| class='' |
| >Disaster Recovery for System Groups</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/ignite3/latest/administrators-guide/cluster-security" |
| class='' |
| >Cluster Security</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| |
| |
| <button |
| type='button' |
| class='collapsed '>Security and Authentication<img class="state-indicator" src="/assets/images/left-nav-arrow.svg" width="6" height="10"></button> |
| <nav class="sub_pages collapsed"> |
| |
| |
| |
| |
| |
| <li><a href="/docs/ignite3/latest/administrators-guide/security/ssl-tls" class=''>SSL/TLS</a></li> |
| |
| |
| |
| |
| <li><a href="/docs/ignite3/latest/administrators-guide/security/authentication" class=''>Authentication</a></li> |
| |
| </nav> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| |
| |
| <button |
| type='button' |
| class='collapsed '>Metrics and Monitoring<img class="state-indicator" src="/assets/images/left-nav-arrow.svg" width="6" height="10"></button> |
| <nav class="sub_pages collapsed"> |
| |
| |
| |
| |
| |
| <li><a href="/docs/ignite3/latest/administrators-guide/metrics/configuring-metrics" class=''>Configuring Metrics</a></li> |
| |
| |
| |
| |
| <li><a href="/docs/ignite3/latest/administrators-guide/metrics/metrics-list" class=''>Metrics List</a></li> |
| |
| |
| |
| |
| <li><a href="/docs/ignite3/latest/administrators-guide/metrics/system-views" class=''>System Views</a></li> |
| |
| </nav> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/ignite3/latest/administrators-guide/handling-exceptions" |
| class='' |
| >Handling Exceptions</a> |
| |
| </li> |
| |
| |
| |
| </nav> |
| |
| </li> |
| |
| <li> |
| |
| |
| |
| |
| |
| |
| <button type='button' class='group-toggle collapsed '>SQL Reference<img class="state-indicator" src="/assets/images/left-nav-arrow.svg" width="6" height="10"></button> |
| <nav class='nav-group collapsed'> |
| |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/ignite3/latest/sql-reference/ddl" |
| class='' |
| >Data Definition Language (DDL)</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/ignite3/latest/sql-reference/dml" |
| class='' |
| >Data Manipulation Language (DML)</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/ignite3/latest/sql-reference/transactions" |
| class='' |
| >Transactions</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/ignite3/latest/sql-reference/distribution-zones" |
| class='' |
| >Distribution Zones</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/ignite3/latest/sql-reference/data-types" |
| class='' |
| >Data Types</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/ignite3/latest/sql-reference/operators-and-functions" |
| class='' |
| >Supported Operators and Functions</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/ignite3/latest/sql-reference/operational-commands" |
| class='' |
| >Operational Commands</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/ignite3/latest/sql-reference/grammar-reference" |
| class='' |
| >Grammar Reference</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/ignite3/latest/sql-reference/keywords" |
| class='' |
| >Keywords</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/ignite3/latest/sql-reference/sql-conformance" |
| class='' |
| >SQL Conformance</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| |
| |
| <button |
| type='button' |
| class='collapsed '>Explain Statement<img class="state-indicator" src="/assets/images/left-nav-arrow.svg" width="6" height="10"></button> |
| <nav class="sub_pages collapsed"> |
| |
| |
| |
| |
| |
| <li><a href="/docs/ignite3/latest/sql-reference/explain-statement" class=''>Explain Statement</a></li> |
| |
| |
| |
| |
| <li><a href="/docs/ignite3/latest/sql-reference/explain-operators-list" class=''>List Of Operators</a></li> |
| |
| </nav> |
| |
| </li> |
| |
| |
| |
| </nav> |
| |
| </li> |
| |
| <li> |
| |
| |
| |
| |
| |
| |
| <button type='button' class='group-toggle collapsed '>SQL Performance Tuning<img class="state-indicator" src="/assets/images/left-nav-arrow.svg" width="6" height="10"></button> |
| <nav class='nav-group collapsed'> |
| |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/ignite3/latest/sql-tuning/sql-tuning" |
| class='' |
| >SQL Performance Tuning</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/ignite3/latest/sql-tuning/using-explain" |
| class='' |
| >Improving Queries</a> |
| |
| </li> |
| |
| |
| |
| </nav> |
| |
| </li> |
| |
| <li> |
| |
| |
| <a href="/docs/ignite3/latest/general-tips" class='' >General Configuration Tips</a> |
| |
| </li> |
| |
| <li> |
| |
| |
| <a href="/docs/ignite3/latest/glossary/glossary" class='' >Glossary</a> |
| |
| </li> |
| |
| </nav> |
| <div class="left-nav__overlay"></div> |
| |
| |
| <article data-swiftype-index='true'> |
| <a class='edit-link' href="https://github.com/apache/ignite-3/tree/main/docs/_docs/installation/migration-from-ai2/persistent-migration.adoc" target="_blank">Edit</a> |
| |
| <h1>Persistent Data Migration</h1> |
| |
| <div id="preamble"> |
| <div class="sectionbody"> |
| <div class="paragraph"> |
| <p>Ignite 3 persistent data storage is not directly compatible with Ignite 2. You need to convert your Ignite 2 caches to Ignite 3 tables. The migration tool can be used to convert most Ignite 2 caches</p> |
| </div> |
| <div class="paragraph"> |
| <p>There are two options for creating the required Ignite 3 configuration:</p> |
| </div> |
| <div class="ulist"> |
| <ul> |
| <li> |
| <p><a href="#replicating-caches-to-ignite-3">Replicating Caches to Ignite 3</a></p> |
| </li> |
| <li> |
| <p><a href="#migrating-persistent-data">Migrating Persistent Data</a></p> |
| </li> |
| </ul> |
| </div> |
| <div class="paragraph"> |
| <p>Regardless of the approach you choose, you need to download the migration tools first:</p> |
| </div> |
| <div class="olist arabic"> |
| <ol class="arabic"> |
| <li> |
| <p><a href="https://dlcdn.apache.org/ignite/3.1.0/migration-tools-cli-3.1.0.zip">Download</a> the migration tools.</p> |
| </li> |
| <li> |
| <p>Unpack the downloaded archive to your machine.</p> |
| </li> |
| <li> |
| <p>To explore the available commands in help, run the following command from the migration tools directory:</p> |
| <div class="listingblock"> |
| <div class="content"> |
| <pre class="rouge highlight"><code data-lang="shell">bin/migration-tools <span class="nt">--help</span></code></pre> |
| </div> |
| </div> |
| <div class="paragraph"> |
| <p>or</p> |
| </div> |
| <div class="listingblock"> |
| <div class="content"> |
| <pre class="rouge highlight"><code data-lang="shell">bin/migration-tools <span class="o">{</span><span class="nb">command</span><span class="o">}</span> <span class="nt">--help</span></code></pre> |
| </div> |
| </div> |
| <div class="paragraph"> |
| <p>Substitute <code>{command}</code> with the actual command name.</p> |
| </div> |
| </li> |
| </ol> |
| </div> |
| </div> |
| </div> |
| <div class="sect1"> |
| <h2 id="replicating-caches-to-ignite-3">Replicating Caches to Ignite 3</h2> |
| <div class="sectionbody"> |
| <div class="paragraph"> |
| <p>The migration tool can analyze Ignite 2 configuration and create DDL requests required to reproduce the caches.</p> |
| </div> |
| <div class="sect2"> |
| <h3 id="export-ddl-script">Export DDL Script</h3> |
| <div class="paragraph"> |
| <p>To create the DDL script, use the following command:</p> |
| </div> |
| <div class="listingblock"> |
| <div class="content"> |
| <pre class="rouge highlight"><code data-lang="shell">bin/migration-tools sql-ddl-generator <span class="o">[</span><span class="nt">-o</span><span class="o">={</span>file<span class="o">}]</span> <span class="o">[</span><span class="nt">--allow-extra-fields</span><span class="o">]</span> <span class="o">[</span><span class="nt">--stop-on-error</span><span class="o">]</span> <span class="o">[</span><span class="nt">--extra-lib</span><span class="o">={</span>jar<span class="o">}]</span> ignite-config.xml</code></pre> |
| </div> |
| </div> |
| <div class="paragraph"> |
| <p>Where:</p> |
| </div> |
| <div class="ulist"> |
| <ul> |
| <li> |
| <p><code>-o</code> - saves the script to a file (e.g., <code>-o=ai3-script.sql</code>). By default, the script is printed to the console.</p> |
| </li> |
| <li> |
| <p><code>--allow-extra-fields</code> - if specified, any columns or fields of unsupported types will be saved to an <code><em>EXTRA</em></code> column as JSON data.</p> |
| </li> |
| <li> |
| <p><code>--stop-on-error</code> - if specified, the command stops when it encounters an error when attempting to produce the DDL for a cache. By default,, the command logs errors and continues.</p> |
| </li> |
| <li> |
| <p><code>--extra-lib</code> - if specified, adds the classes from the provided JAR file to CLI tool classpath. These classes, which that may be referenced in any cache configuration, can be used to ensure optimal results and avoid errors and warning messages. Use this parameter for each JAR you want to add. You can specify this parameter multiple times to provide multiple JARs.</p> |
| </li> |
| </ul> |
| </div> |
| </div> |
| <div class="sect2"> |
| <h3 id="create-ignite-3-tables">Create Ignite 3 Tables</h3> |
| <div class="paragraph"> |
| <p>Then, execute the script from the <a href="/docs/ignite3/latest/ignite-cli-tool">Ignite 3 CLI tool</a>:</p> |
| </div> |
| <div class="listingblock"> |
| <div class="content"> |
| <pre class="rouge highlight"><code data-lang="shell">sql <span class="nt">--file</span><span class="o">=</span>ai3-script.sql</code></pre> |
| </div> |
| </div> |
| <div class="paragraph"> |
| <p>When executed, the script will create all required schemas and tables with the same configuration specified in Ignite 2.</p> |
| </div> |
| </div> |
| </div> |
| </div> |
| <div class="sect1"> |
| <h2 id="migrating-persistent-data">Migrating Persistent Data</h2> |
| <div class="sectionbody"> |
| <div class="paragraph"> |
| <p>An alternative to configuring the tables and migrating data from Ignite 2 via SQL script is to migrate data directly from the persistent storage files. When done this way, all data stored on the node will be converted to Ignite 3 tables and will be accessible once the cluster is started. As this approach converts stored data directly, schemas will be preserved from Ignite 2.</p> |
| </div> |
| <div class="paragraph"> |
| <p>This approach requires downtime, but does not involve using data center replication.</p> |
| </div> |
| <div class="paragraph"> |
| <p>To convert your persistent storage to Ignite 3:</p> |
| </div> |
| <div class="ulist"> |
| <ul> |
| <li> |
| <p>Safely stop the Ignite 2 node you intend to migrate data from.</p> |
| <div class="admonitionblock note"> |
| <table> |
| <tr> |
| <td class="icon"> |
| <div class="title">Note</div> |
| </td> |
| <td class="content"> |
| Let the node complete a checkpoint after stopping the clients to make sure that all the data is properly saved in persistent storage. |
| </td> |
| </tr> |
| </table> |
| </div> |
| </li> |
| <li> |
| <p>Start the Ignite 3 cluster.</p> |
| </li> |
| <li> |
| <p>Run the command to list available caches on the node:</p> |
| <div class="listingblock"> |
| <div class="content"> |
| <pre class="rouge highlight"><code data-lang="shell">bin/migration-tools persistent-data work-dir consistent-id config-file list-caches <span class="o">[</span><span class="nt">--mode</span><span class="o">]</span> <span class="o">[</span><span class="nt">--rate-limiter</span><span class="o">]</span> <span class="o">[</span><span class="nt">--client</span>.basicAuthenticator.username]</code></pre> |
| </div> |
| </div> |
| <div class="paragraph"> |
| <p>Where:</p> |
| </div> |
| <div class="ulist"> |
| <ul> |
| <li> |
| <p><code>work-dir</code> - the Ignite 2 node’s work directory. By default, it is the <code>{IGNITE_HOME}/work</code> folder.</p> |
| </li> |
| <li> |
| <p><code>consistent-id</code> - the Ignite 2 node’s unique node identifier.</p> |
| </li> |
| <li> |
| <p><code>config-file</code> - Ignite 2 configuration file. This file will be used to determine table parameters in Ignite 3.</p> |
| </li> |
| <li> |
| <p><code>cacheName</code> - the name of the specific cache to migrate.</p> |
| </li> |
| <li> |
| <p><code>ai3urls</code> - the list of URLs that the migration tool will use to connect to the Ignite 3 cluster.</p> |
| </li> |
| <li> |
| <p><code>--mode</code> - the migration mode, which defines what to do in case of an irreconcilable mismatch between the object stored in the cache and the Ignite 3 table:</p> |
| <div class="ulist"> |
| <ul> |
| <li> |
| <p><code>ABORT</code> (default) - abort the migration.</p> |
| </li> |
| <li> |
| <p><code>IGNORE_COLUMN</code> - ignore (not migrate to the table) those columns/fields in the cache record that are defined in Ignite 2 but not defined in Ignite 3.</p> |
| </li> |
| <li> |
| <p><code>SKIP_RECORD</code> - ignore (not migrate to the table) the entire cache record.</p> |
| </li> |
| <li> |
| <p><code>PACK_EXTRA</code> - serialize to JSON and store in the <code><em>EXTRA</em></code> column all additional columns/fields in the cache record. The tool adds this column to the table (it is not native to Ignite 3) and makes this column <a href="/docs/ignite3/latest/migration-from-gg-8/codebase-migration">accessible to the Java client</a>.</p> |
| </li> |
| </ul> |
| </div> |
| </li> |
| <li> |
| <p><code>--rate-limiter</code> - limits the number of records migrated per second (allows to save resources). The default is "-1", which means "no limit".</p> |
| </li> |
| <li> |
| <p><code>--client.basicAuthenticator.username</code> - the name of the user to authenticate to Ignite 3 cluster with. User password must be specified in the <code>IGNITE_CLIENT_SECRET</code> environment variable.</p> |
| </li> |
| </ul> |
| </div> |
| </li> |
| <li> |
| <p>Run the persistent data migration command in the migration tool:</p> |
| <div class="listingblock"> |
| <div class="content"> |
| <pre class="rouge highlight"><code data-lang="shell">bin/migration-tools persistent-data work-dir consistent-id config-file migrate-cache cacheName ai3urls <span class="o">[</span><span class="nt">--mode</span><span class="o">]</span> <span class="o">[</span><span class="nt">--rate-limiter</span><span class="o">]</span> <span class="o">[</span><span class="nt">--client</span>.basicAuthenticator.username]</code></pre> |
| </div> |
| </div> |
| <div class="paragraph"> |
| <p>Where:</p> |
| </div> |
| <div class="ulist"> |
| <ul> |
| <li> |
| <p><code>work-dir</code> - the Ignite 2 node’s work directory. By default, it is the <code>{IGNITE_HOME}/work</code> folder.</p> |
| </li> |
| <li> |
| <p><code>consistent-id</code> - the Ignite 2 node’s unique node identifier.</p> |
| </li> |
| <li> |
| <p><code>config-file</code> - Ignite 2 configuration file. This file will be used to determine table parameters in Ignite 3.</p> |
| </li> |
| <li> |
| <p><code>cacheName</code> - the name of the specific cache to migrate.</p> |
| </li> |
| <li> |
| <p><code>ai3urls</code> - the list of URLs that the migration tool will use to connect to the Ignite 3 cluster.</p> |
| </li> |
| <li> |
| <p><code>--mode</code> - the migration mode, which defines what to do in case of an irreconcilable mismatch between the object stored in the cache and the Ignite 3 table:</p> |
| <div class="ulist"> |
| <ul> |
| <li> |
| <p><code>ABORT</code> (default) - abort the migration.</p> |
| </li> |
| <li> |
| <p><code>IGNORE_COLUMN</code> - ignore (not migrate to the table) those columns/fields in the cache record that are defined in Ignite 2 but not defined in Ignite 3.</p> |
| </li> |
| <li> |
| <p><code>SKIP_RECORD</code> - ignore (not migrate to the table) the entire cache record.</p> |
| </li> |
| <li> |
| <p><code>PACK_EXTRA</code> - serialize to JSON and store in the <code><em>EXTRA</em></code> column all additional columns/fields in the cache record. The tool adds this column to the table (it is not native to Ignite 3) and makes this column <a href="/docs/ignite3/latest/migration-from-gg-8/codebase-migration">accessible to the Java client</a>.</p> |
| </li> |
| </ul> |
| </div> |
| </li> |
| <li> |
| <p><code>--rate-limiter</code> - limits the number of records migrated per second (allows to save resources). The default is "-1", which means "no limit".</p> |
| </li> |
| <li> |
| <p><code>--client.basicAuthenticator.username</code> - the name of the user to authenticate to Ignite 3 cluster with. User password must be specified in the <code>IGNITE_CLIENT_SECRET</code> environment variable.</p> |
| </li> |
| </ul> |
| </div> |
| </li> |
| </ul> |
| </div> |
| <div class="paragraph"> |
| <p>The migration tool analyzes the specified cache and writes it to the Ignite 3 cluster.</p> |
| </div> |
| <div class="paragraph"> |
| <p>Here is what your commands may look like:</p> |
| </div> |
| <div class="listingblock"> |
| <div class="content"> |
| <pre class="rouge highlight"><code data-lang="shell">bin/migration-tools persistent-data ./nodeWorkDir ad26bff6-5ff5-49f1-9a61-425a827953ed ./config-file.xml list-caches |
| bin/migration-tools persistent-data ./nodeWorkDir ad26bff6-5ff5-49f1-9a61-425a827953ed ./config-file.xml migrate-cache cacheName localhost:10800 <span class="nt">--mode</span> IGNORE_COLUMN <span class="nt">--rate-limiter</span> 1000</code></pre> |
| </div> |
| </div> |
| <div class="paragraph"> |
| <p>In this case, the migration tools will first display what caches are available, and then migrate the <code>cacheName</code> cache.</p> |
| </div> |
| <div class="paragraph"> |
| <p>Migration tool will store logs in the <code>USER_HOME/.ignite-migration-tools/logs</code> folder. |
| Alternatively, the logs folder can be configured by using the <code>IGNITE_MIGRATION_TOOLS_LOGS_DIR</code> environment variable.</p> |
| </div> |
| </div> |
| </div> |
| <div class="copyright"> |
| © 2025 The Apache Software Foundation.<br/> |
| Apache, Apache Ignite, the Apache feather and the Apache Ignite logo are either registered trademarks or trademarks of The Apache Software Foundation. |
| |
| </div> |
| |
| </article> |
| <nav class="right-nav" data-swiftype-index='false'> |
| <div class="toc-wrapper"> |
| <ul class="sectlevel1"> |
| <li><a href="#replicating-caches-to-ignite-3">Replicating Caches to Ignite 3</a> |
| <ul class="sectlevel2"> |
| <li><a href="#export-ddl-script">Export DDL Script</a></li> |
| <li><a href="#create-ignite-3-tables">Create Ignite 3 Tables</a></li> |
| </ul> |
| </li> |
| <li><a href="#migrating-persistent-data">Migrating Persistent Data</a></li> |
| </ul> |
| </div> |
| |
| |
| <nav class="promo-nav"> |
| <!--#include virtual="/includes/docs_rightnav_promotion.html" --> |
| <!--a href="#" data-trigger-bugyard-feedback="true" id="doc-feedback-btn">Docs Feedback</a--> |
| </nav> |
| |
| </nav> |
| |
| </section> |
| <script type='module' src='/assets/js/code-copy-to-clipboard.js' async crossorigin></script> |
| |
| <script> |
| // inits deep anchors -- needs to be done here because of https://www.bryanbraun.com/anchorjs/#dont-run-it-too-late |
| anchors.add('.page-docs h1, .page-docs h2, .page-docs h3:not(.discrete), .page-docs h4, .page-docs h5'); |
| anchors.options = { |
| placement: 'right', |
| visible: 'always' |
| }; |
| </script> |
| |
| <script type='module' src='/assets/js/index.js?1763137388' async crossorigin></script> |
| <script type='module' src='/assets/js/versioning.js?1763137388' async crossorigin></script> |
| <script type='module' src='/assets/js/railroad-diagram.js?1763137388' async></script> |
| <script type='module' src='/assets/js/search.js?1763137388' defer crossorigin></script> |
| |
| <link rel="stylesheet" href="/assets/css/styles.css?1763137388" media="print" onload="this.media='all'"> |
| <noscript><link media="all" rel="stylesheet" href="/assets/css/styles.css?1763137388"></noscript> |
| |
| <link rel="stylesheet" href="/assets/css/docsearch.min.css" media="print" onload="this.media='all'"> |
| <noscript><link media="all" rel="stylesheet" href="/assets/css/docsearch.min.css"></noscript> |
| |
| |
| </body> |
| |
| </html> |