blob: 4abc4f0fd928827c18a095bd2778f9664b223a43 [file] [log] [blame]
.. Licensed under the Apache License, Version 2.0 (the "License"); you may not
.. use this file except in compliance with the License. You may obtain a copy of
.. the License at
..
.. http://www.apache.org/licenses/LICENSE-2.0
..
.. Unless required by applicable law or agreed to in writing, software
.. distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
.. WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
.. License for the specific language governing permissions and limitations under
.. the License.
.. _api/db/shards:
===============
``/db/_shards``
===============
.. versionadded:: 2.0
.. http:get:: /{db}/_shards
:synopsis: Displays the shard map layout of a database
The response will contain a list of database shards. Each shard will
have its internal database range, and the nodes on which replicas of
those shards are stored.
:param db: Database name
:<header Accept: - :mimetype:`application/json`
- :mimetype:`text/plain`
:>header Content-Type: - :mimetype:`application/json`
- :mimetype:`text/plain; charset=utf-8`
:>json object shards: Mapping of shard ranges to individual shard replicas
on each node in the cluster
:code 200: Request completed successfully
:code 400: Invalid database name
:code 401: Read privilege required
:code 415: Bad :header:`Content-Type` value
:code 500: Internal server error or timeout
**Request**:
.. code-block:: http
GET /db/_shards HTTP/1.1
Accept: */*
Host: localhost:5984
**Response**:
.. code-block:: http
HTTP/1.1 200 OK
Cache-Control: must-revalidate
Content-Length: 621
Content-Type: application/json
Date: Fri, 18 Jan 2019 19:55:14 GMT
Server: CouchDB/2.4.0 (Erlang OTP/19)
{
"shards": {
"00000000-1fffffff": [
"couchdb@node1.example.com",
"couchdb@node2.example.com",
"couchdb@node3.example.com"
],
"20000000-3fffffff": [
"couchdb@node1.example.com",
"couchdb@node2.example.com",
"couchdb@node3.example.com"
],
"40000000-5fffffff": [
"couchdb@node1.example.com",
"couchdb@node2.example.com",
"couchdb@node3.example.com"
],
"60000000-7fffffff": [
"couchdb@node1.example.com",
"couchdb@node2.example.com",
"couchdb@node3.example.com"
],
"80000000-9fffffff": [
"couchdb@node1.example.com",
"couchdb@node2.example.com",
"couchdb@node3.example.com"
],
"a0000000-bfffffff": [
"couchdb@node1.example.com",
"couchdb@node2.example.com",
"couchdb@node3.example.com"
],
"c0000000-dfffffff": [
"couchdb@node1.example.com",
"couchdb@node2.example.com",
"couchdb@node3.example.com"
],
"e0000000-ffffffff": [
"couchdb@node1.example.com",
"couchdb@node2.example.com",
"couchdb@node3.example.com"
]
}
}
.. _api/db/shards/doc:
==============================
``/db/_shards/doc``
==============================
.. http:get:: /{db}/_shards/{docid}
:synopsis: Returns the specific shard in which a document is stored
Returns information about the specific shard into which a given document
has been stored, along with information about the nodes on which that
shard has a replica.
:param db: Database name
:param docid: Document ID
:<header Accept: - :mimetype:`application/json`
- :mimetype:`text/plain`
:>header Content-Type: - :mimetype:`application/json`
- :mimetype:`text/plain; charset=utf-8`
:>json string range: The shard range in which the document is stored
:>json array nodes: List of nodes serving a replica of the shard
:code 200: Request completed successfully
:code 401: Read privilege required
:code 404: Database or document not found
:code 500: Internal server error or timeout
**Request**:
.. code-block:: http
HTTP/1.1 200 OK
Cache-Control: must-revalidate
Content-Length: 94
Content-Type: application/json
Date: Fri, 18 Jan 2019 20:08:07 GMT
Server: CouchDB/2.3.0-9d4cb03c2 (Erlang OTP/19)
**Response**:
.. code-block:: http
HTTP/1.1 200 OK
Cache-Control: must-revalidate
Content-Length: 94
Content-Type: application/json
Date: Fri, 18 Jan 2019 20:26:33 GMT
Server: CouchDB/2.3.0-9d4cb03c2 (Erlang OTP/19)
{
"range": "e0000000-ffffffff",
"nodes": [
"node1@127.0.0.1",
"node2@127.0.0.1",
"node3@127.0.0.1"
]
}
.. _api/db/sync_shards:
=====================
``/db/_sync_shards``
=====================
.. versionadded:: 2.3.1
.. http:post:: /{db}/_sync_shards
:synopsis: Trigger a synchronization of all shard replicas
in the database
For the given database, force-starts internal shard synchronization
for all replicas of all database shards.
This is typically only used when performing cluster maintenance,
such as :ref:`moving a shard <cluster/sharding/move>`.
:param db: Database name
:<header Accept: - :mimetype:`application/json`
- :mimetype:`text/plain`
:>header Content-Type: - :mimetype:`application/json`
- :mimetype:`text/plain; charset=utf-8`
:>json boolean ok: Operation status. Available in case of success
:>json string error: Error type. Available if response code is ``4xx``
:>json string reason: Error description. Available if response code is
``4xx``
:code 202: Request accepted
:code 400: Invalid database name
:code 401: CouchDB Server Administrator privileges required
:code 404: Database not found
:code 500: Internal server error or timeout
**Request**:
.. code-block:: http
POST /db/_sync_shards HTTP/1.1
Host: localhost:5984
Accept: */*
**Response**:
.. code-block:: http
HTTP/1.1 202 Accepted
Cache-Control: must-revalidate
Content-Length: 12
Content-Type: application/json
Date: Fri, 18 Jan 2019 20:19:23 GMT
Server: CouchDB/2.3.0-9d4cb03c2 (Erlang OTP/19)
X-Couch-Request-ID: 14f0b8d252
X-CouchDB-Body-Time: 0
{
"ok": true
}
.. note::
Admins may want to bump their ``[mem3] sync_concurrency`` value to a
larger figure for the duration of the shards sync.