1
0
Fork 0
arangodb/Documentation/Manual/Upgrading20.md

169 lines
7.6 KiB
Markdown

Upgrading to ArangoDB 2.0 {#Upgrading20}
========================================
@NAVIGATE_Upgrading20
@EMBEDTOC{Upgrading20TOC}
Upgrading {#Upgrading20Introduction}
====================================
Please read the following sections if you upgrade from a pre-2.0
version of ArangoDB to ArangoDB 2.0.
ArangoDB 2.0 comes with a few changes, some of which are not 100% compatible to
ArangoDB 1.4. The incompatibilies are due to a change of some HTTP response
codes returned by a few server APIs.
Following is a list of incompatible changes with workarounds. Please read the list
carefully and adjust any client programs or processes that work with ArangoDB
appropriately.
Please note that a database directory used with ArangoDB 2.0 cannot be used with
earlier versions (e.g. ArangoDB 1.4) any more. Upgrading a database directory cannot
be reverted. Therefore please make sure to create a full backup of your existing
ArangoDB installation before performing an update.
The upgrading section is closed with an instruction summary and a list of potential
problems and @ref Upgrading14Troubleshooting "troubleshooting options" for them.
Please consult that section if you encounter any problems during or after the upgrade.
Database Directory Version Check and Upgrade {#Upgrading20VersionCheck}
-----------------------------------------------------------------------
ArangoDB will perform a database version check at startup. This has not changed in
ArangoDB 2.0. When ArangoDB 2.0 encounters a database created with earlier
versions of ArangoDB, it will refuse to start. This is intentional.
The output will then look like this:
....
2014-03-04T17:15:08Z [28446] ERROR In database '...': Database directory version (1.4) is lower than server version (2).
2014-03-04T17:15:08Z [28446] ERROR In database '...': ----------------------------------------------------------------------
2014-03-04T17:15:08Z [28446] ERROR In database '...': It seems like you have upgraded the ArangoDB binary.
2014-03-04T17:15:08Z [28446] ERROR In database '...': If this is what you wanted to do, please restart with the
2014-03-04T17:15:08Z [28446] ERROR In database '...': --upgrade
2014-03-04T17:15:08Z [28446] ERROR In database '...': option to upgrade the data in the database directory.
2014-03-04T17:15:08Z [28446] ERROR In database '...': Normally you can use the control script to upgrade your database
2014-03-04T17:15:08Z [28446] ERROR In database '...': /etc/init.d/arangodb stop
2014-03-04T17:15:08Z [28446] ERROR In database '...': /etc/init.d/arangodb upgrade
2014-03-04T17:15:08Z [28446] ERROR In database '...': /etc/init.d/arangodb start
2014-03-04T17:15:08Z [28446] ERROR In database '...': ----------------------------------------------------------------------
2014-03-04T17:15:08Z [28446] FATAL Database version check failed for '...'. Please start the server with the --upgrade option
To make ArangoDB 2.0 start with a database directory created with an
earlier ArangoDB version, you may need to invoke the upgrade procedure once.
This can be done by running ArangoDB from the command line and supplying
the `--upgrade` option:
unix> arangod data --upgrade
where `data` is the database directory.
Note: here the same database should be specified that is also specified when arangod
is started regularly. Please do not run the `--upgrade` command on each individual
database subfolder (named `database-<some number>`).
For example, if you regularly start your ArangoDB server with
unix> arangod mydatabasefolder
then running
unix> arangod mydatabasefolder --upgrade
will perform the upgrade for the whole ArangoDB instance, including all of
its databases.
Starting with `--upgrade` will run a database version check and perform
any necessary migrations. As usual, you should create a backup of your database
directory before performing the upgrade.
The output should look like this:
...
2014-03-04T17:17:29Z [28481] INFO In database '...': upgrade successfully finished
2014-03-04T17:17:29Z [28481] INFO database upgrade passed
Please check the output the `--upgrade` run. It may produce errors, which need to be
fixed before ArangoDB can be used properly. If no errors are present or they have been
resolved, you can start ArangoDB 2.0 regularly.
Shape Collection Changes {#Upgrading20ShapeCollections}
-------------------------------------------------------
During the upgrade to 2.0, any existing collections will be converted to include the
structural shape information that was previously stored in separate shape collections.
For each collection in each database, ArangoDB will scan the `SHAPES` directory and
write out all shapes of a collection into a separate datafile in the collection directory.
The `SHAPES` directory will be removed afterwards..
This saves up to 2 MB of memory and disk space for each collection, and will make
ArangoDB use one less file descriptor per opened collection.
Please note after converting the shapes, the database directory and collection files
cannot be used with earlier versions of ArangoDB.
Changed Behavior {#Upgrading20ChangedBehavior}
==============================================
* Changed HTTP response code of HTTP REST API method POST `/_api/database`:
Prior to ArangoDB 2.0, creating a database returned a status code of 200 (Ok).
ArangoDB 2.0 will instead return HTTP status code 201 (Created) when a database was
successfully created.
To enforce the old behavior, clients can send ArangoDB 2.0 the HTTP header
`X-Arango-Version` with a value of `10400`. ArangoDB 2.0 will then still return
HTTP 200 (Ok) when creating a database.
* The AQL `TRAVERSAL` function was changed to throw an error if an invalid value
is specified for any of the following (optional) attributes:
- `strategy`
- `order`
- `itemOrder`
Omitting these attributes in a call to `TRAVERSAL` is not considered an error, but
specifying an invalid value for any of these attributes will make the AQL query fail.
* The `shapefiles` attribute returned by the `collection.figures()` method or the
HTTP REST API method GET `/_api/collection/<name>/figures` will always contain a
`count` value of `0` and a `fileSize` of `0` in ArangoDB 2.0.
This is because there are no separate shape collections any longer.
* arangod and arangosh now determine the paths to the built-in JavaScript files by
looking at the option `--javascript.startup-directory`. All other paths to built-in
JavaScript files are derived automatically from this option.
This change has made the following command line options of arangod and arangosh useless
in version 2.0:
* `--javascript.modules-path` (arangod and arangosh)
* `--javascript.package-path` (arangod and arangosh)
* `--javascript.action-directory` (arangod only)
These options can be removed from any invoking scripts for ArangoDB 2.0.
Note that `--javascript.startup-directory` is still required for arangod and arangosh.
arangod will also still require the option `--javascript.app-path` at startup.
Removed Features {#Upgrading20RemovedFeatures}
==============================================
* The undocumented and not advertised method `collection.saveOrReplace()` has been
removed in ArangoDB 2.0.
* The undocumented and not advertised index type priority queue has been removed in
ArangoDB 2.0.
* The undocumented and not advertised HTTP REST API method GET `/_admin/database-name`
has been removed in ArangoDB 2.0.
* The undocumented and not advertised HTTP REST API method PUT `/_api/simple/BY-EXAMPLE-HASH`
has been removed in ArangoDB 2.0.
* The command-line option `--log.format` has been removed in ArangoDB 2.0.
@BNAVIGATE_Upgrading20