(window.webpackJsonp=window.webpackJsonp||[]).push([[23],{587:function(t,e,a){"use strict";a.r(e);var o=a(68),i=Object(o.a)({},(function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"release-version"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#release-version"}},[t._v("#")]),t._v(" Release version")]),t._v(" "),a("table",[a("tr",[a("th",[t._v("Version")]),t._v(" "),a("th",{attrs:{colspan:"3"}},[t._v("IoTDB Binaries")]),t._v(" "),a("th",{attrs:{colspan:"3"}},[t._v("IoTDB Sources")]),t._v(" "),a("th",[t._v("release notes")])]),t._v(" "),a("tr",[a("td",[t._v("0.11.1")]),t._v(" "),a("td",[a("a",{attrs:{href:"https://www.apache.org/dyn/closer.cgi/iotdb/0.11.1/apache-iotdb-0.11.1-bin.zip"}},[t._v("Release")])]),t._v(" "),a("td",[a("a",{attrs:{href:"https://downloads.apache.org/iotdb/0.11.1/apache-iotdb-0.11.1-bin.zip.sha512"}},[t._v("SHA512")])]),t._v(" "),a("td",[a("a",{attrs:{href:"https://downloads.apache.org/iotdb/0.11.1/apache-iotdb-0.11.1-bin.zip.asc"}},[t._v("ASC")])]),t._v(" "),a("td",[a("a",{attrs:{href:"https://www.apache.org/dyn/closer.cgi/iotdb/0.11.1/apache-iotdb-0.11.1-source-release.zip"}},[t._v("Sources")])]),t._v(" "),a("td",[a("a",{attrs:{href:"https://downloads.apache.org/iotdb/0.11.1/apache-iotdb-0.11.1-source-release.zip.sha512"}},[t._v("SHA512")])]),t._v(" "),a("td",[a("a",{attrs:{href:"https://downloads.apache.org/iotdb/0.11.1/apache-iotdb-0.11.1-source-release.zip.asc"}},[t._v("ASC")])]),t._v(" "),a("td",[a("a",{attrs:{href:"https://raw.githubusercontent.com/apache/iotdb/release/0.11.1/RELEASE_NOTES.md"}},[t._v("release notes")])])]),t._v(" "),a("tr",[a("td",[t._v("0.10.1")]),t._v(" "),a("td",[a("a",{attrs:{href:"https://www.apache.org/dyn/closer.cgi/iotdb/0.10.1-incubating/apache-iotdb-0.10.1-incubating-bin.zip"}},[t._v("Release")])]),t._v(" "),a("td",[a("a",{attrs:{href:"https://downloads.apache.org/iotdb/0.10.1-incubating/apache-iotdb-0.10.1-incubating-bin.zip.sha512"}},[t._v("SHA512")])]),t._v(" "),a("td",[a("a",{attrs:{href:"https://downloads.apache.org/iotdb/0.10.1-incubating/apache-iotdb-0.10.1-incubating-bin.zip.asc"}},[t._v("ASC")])]),t._v(" "),a("td",[a("a",{attrs:{href:"https://www.apache.org/dyn/closer.cgi/iotdb/0.10.1-incubating/apache-iotdb-0.10.1-incubating-source-release.zip"}},[t._v("Sources")])]),t._v(" "),a("td",[a("a",{attrs:{href:"https://downloads.apache.org/iotdb/0.10.1-incubating/apache-iotdb-0.10.1-incubating-source-release.zip.sha512"}},[t._v("SHA512")])]),t._v(" "),a("td",[a("a",{attrs:{href:"https://downloads.apache.org/iotdb/0.10.1-incubating/apache-iotdb-0.10.1-incubating-source-release.zip.asc"}},[t._v("ASC")])]),t._v(" "),a("td",[a("a",{attrs:{href:"https://raw.githubusercontent.com/apache/iotdb/release/0.10.1/RELEASE_NOTES.md"}},[t._v("release notes")])])])]),t._v(" "),a("p",[t._v("Legacy version are available here: "),a("a",{attrs:{href:"https://archive.apache.org/dist/iotdb/",target:"_blank",rel:"noopener noreferrer"}},[t._v("https://archive.apache.org/dist/iotdb/"),a("OutboundLink")],1)]),t._v(" "),a("p",[a("strong",[a("font",{attrs:{color:"red"}},[t._v("Attention")])],1),t._v(":")]),t._v(" "),a("ul",[a("li",[a("p",[t._v("How to upgrade a minor version (e.g., from v0.9.0 to v0.9.3)?")]),t._v(" "),a("ul",[a("li",[t._v("versions which have the same major version are compatible.")]),t._v(" "),a("li",[t._v("Just download and unzip the new version. Then modify the configuration files to keep consistent\nwith what you set in the old version.")]),t._v(" "),a("li",[t._v("stop the old vesion instance, and start the new one.")])])]),t._v(" "),a("li",[a("p",[t._v("How to upgrade from v.10.x to v0.11.x?")]),t._v(" "),a("ul",[a("li",[t._v("The data format (i.e., TsFile data) of v0.10.x and v0.11 are compatible, but the WAL file is\nincompatible. So, you can follow the steps:")]),t._v(" "),a("li",[t._v("Stop writing new data.")]),t._v(" "),a("li",[t._v("Call "),a("code",[t._v("flush")]),t._v(" command using "),a("code",[t._v("sbin/start-cli.sh")]),t._v(" in v0.10.x to close all TsFiles.")]),t._v(" "),a("li",[t._v("We recommend to backup the the wal files and mlog.txt before upgrading for rolling back.")]),t._v(" "),a("li",[t._v("Just download, unzip v0.11.x.zip, and modify conf/iotdb-engine.proeprties to let all the\ndirectories point to the data folder set in v0.10.x (or the backup folder). You can also modify\nother settings if you want.")]),t._v(" "),a("li",[t._v("Stop IoTDB v0.10.x instance, and start v0.11.x, then the IoTDB will upgrade data file format\nautomatically.")]),t._v(" "),a("li",[a("strong",[t._v("NOTICE: V0.11 changes many settings in conf/iotdb-engine.properties, so do not use v0.10's\nconfiguration file directly.")])])])]),t._v(" "),a("li",[a("p",[t._v("How to upgrade from v.9.x to v0.10.x?")]),t._v(" "),a("ul",[a("li",[t._v("Upgrading from v0.9 to v0.10 is more complex than v0.8 to v0.9.")]),t._v(" "),a("li",[t._v("Stop writing new data.")]),t._v(" "),a("li",[t._v("Call "),a("code",[t._v("flush")]),t._v(" command using sbin/start-client.sh in v0.9 to close all TsFiles.")]),t._v(" "),a("li",[t._v("We recommend to backup the data file (also the wal files and mlog.txt) before upgrading for rolling back.")]),t._v(" "),a("li",[t._v("Just download, unzip v0.10.x.zip, and modify conf/iotdb-engine.proeprties to let all the\ndirectories point to the folders set in v0.9.x  (or the backup folder).\nYou can also modify other settings if you want.")]),t._v(" "),a("li",[t._v("Stop IoTDB v0.9 instance, and start v0.10.x, then the IoTDB will upgrade data file format automatically.")])])]),t._v(" "),a("li",[a("p",[t._v("How to upgrade from 0.8.x to v0.9.x?")]),t._v(" "),a("ul",[a("li",[t._v("We recommend to backup the data file (also the wal files and mlog.txt) before upgrading for rolling back.")]),t._v(" "),a("li",[t._v("Just download, unzip v0.9.x.zip, and modify conf/iotdb-engine.proeprties to let all the\ndirectories point to the folders set in v0.8.x (or the backup folder).\nYou can also modify other settings if you want.")]),t._v(" "),a("li",[t._v("Stop IoTDB v0.8 instance, and start v0.9.x, then the IoTDB will upgrade data file format automatically.")])])])]),t._v(" "),a("h1",{attrs:{id:"all-releases"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#all-releases"}},[t._v("#")]),t._v(" All releases")]),t._v(" "),a("p",[t._v("Find all releases in the "),a("a",{attrs:{href:"https://archive.apache.org/dist/iotdb/",target:"_blank",rel:"noopener noreferrer"}},[t._v("Archive repository"),a("OutboundLink")],1),t._v(".")]),t._v(" "),a("h1",{attrs:{id:"verifying-hashes-and-signatures"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#verifying-hashes-and-signatures"}},[t._v("#")]),t._v(" Verifying Hashes and Signatures")]),t._v(" "),a("p",[t._v("Along with our releases, we also provide sha512 hashes in *.sha512 files and cryptographic signatures in *.asc files. The Apache Software Foundation has an extensive tutorial to "),a("a",{attrs:{href:"http://www.apache.org/info/verification.html",target:"_blank",rel:"noopener noreferrer"}},[t._v("verify hashes and signatures "),a("OutboundLink")],1),t._v("which you can follow by using any of these release-signing "),a("a",{attrs:{href:"https://downloads.apache.org/iotdb/KEYS",target:"_blank",rel:"noopener noreferrer"}},[t._v("KEYS "),a("OutboundLink")],1),t._v(".")])])}),[],!1,null,null,null);e.default=i.exports}}]);