Mercurial > hg > orthanc-book
annotate Sphinx/source/users/replication.rst @ 75:16d516fdc642
note
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Wed, 14 Dec 2016 10:09:44 +0100 |
parents | 12b204ee328d |
children | c2f2202f54f2 |
rev | line source |
---|---|
0 | 1 .. highlight:: bash |
2 .. _replication: | |
3 | |
4 Replication and upgrade | |
5 ======================= | |
6 | |
7 This page explains how to replicate the content of one instance of | |
8 Orthanc to another instance of Orthanc. This is useful to **upgrade** | |
9 between :ref:`versions of the database schema <db-versioning>`, or to | |
10 create **mirrored DICOM servers**. | |
11 | |
75 | 12 |
13 Upgrade the database schema | |
14 --------------------------- | |
15 | |
16 As explained :ref:`elsewhere in the Orthanc Book <db-versioning>`, | |
17 successive versions of Orthanc might use a different version of the | |
18 database schema. If this happens, Orthanc will refuse to start (with | |
19 an explicit message in its :ref:`logs <log>`), to let the user decides | |
20 whether she actually wants to upgrade the database. At this point, the | |
21 user might indeed decide to modify its :ref:`configuration file | |
22 <configuration>` to create a new database elsewhere on the filesystem. | |
23 | |
24 If you decide to upgrade the database schema, you have to apply the | |
25 following 3 steps: | |
26 | |
27 1. If not done yet, stop the running Orthanc service: | |
28 | |
29 * Under Microsoft Windows, use the `services control panel | |
30 <https://en.wikipedia.org/wiki/Windows_service>`__. | |
31 * Under Debian, use ``sudo /etc/init.d/orthanc stop``. | |
32 | |
33 2. Manually call Orthanc with the ``--upgrade`` command-line option, | |
34 and point to your default configuration file: | |
35 | |
36 * Under Microsoft Windows, ``Orthanc.exe c:/Orthanc/``. | |
37 * Under Debian, use ``sudo /usr/sbin/Orthanc /etc/orthanc/ --upgrade``. | |
38 | |
39 3. Start the Orthanc service again: | |
40 | |
41 * Under Microsoft Windows, use the `services control panel | |
42 <https://en.wikipedia.org/wiki/Windows_service>`__. | |
43 * Under Debian, use ``sudo /etc/init.d/orthanc stop``. | |
44 | |
45 Note that, depending on the size of the Orthanc database, upgrading | |
46 the database schema might take time. | |
0 | 47 |
48 | |
49 Direct access to the filesystem | |
50 ------------------------------- | |
51 | |
52 The most direct way to replicate consists in using the | |
53 `ImportDicomFiles | |
54 <https://bitbucket.org/sjodogne/orthanc/src/default/Resources/Samples/ImportDicomFiles/ImportDicomFiles.py>`_ | |
55 script of the Orthanc distribution. For instance, the following | |
56 command would recursively explore the content of the ``OrthancStorage`` | |
57 folder (where Orthanc stores its DICOM files by default), and send | |
58 each DICOM file inside this folder to the instance of Orthanc whose | |
59 REST API is listening on ``http://192.168.0.2:8042``:: | |
60 | |
61 $ python ImportDicomFiles.py 192.168.0.2 8042 OrthancStorage | |
62 | |
63 This method will only succeed if: | |
64 | |
65 * The source Orthanc uses the default SQLite back-end of Orthanc (and | |
66 not the `PostgreSQL plugin | |
67 <http://www.orthanc-server.com/static.php?page=postgresql>`_, for | |
68 instance), | |
69 * You have command-line access to the source Orthanc, and | |
70 * The transparent :ref:`compression` of the DICOM instances is | |
71 disabled (cf. option ``StorageCompression`` in the | |
72 :ref:`configuration file <configuration>`). | |
73 | |
46
12b204ee328d
remark about replication
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
0
diff
changeset
|
74 **Important remark:** Because of :ref:`the way Orthanc stores its |
12b204ee328d
remark about replication
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
0
diff
changeset
|
75 database <orthanc-storage>` on the filesystem, it is *entirely normal* |
12b204ee328d
remark about replication
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
0
diff
changeset
|
76 that the ``ImportDicomFiles.py`` script ends by saying that only half |
12b204ee328d
remark about replication
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
0
diff
changeset
|
77 of the DICOM files were properly sent. This is because the JSON |
12b204ee328d
remark about replication
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
0
diff
changeset
|
78 summaries are not DICOM files, and are thus rejected by the target |
12b204ee328d
remark about replication
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
0
diff
changeset
|
79 Orthanc server. More information are available `on the discussion |
12b204ee328d
remark about replication
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
0
diff
changeset
|
80 group |
12b204ee328d
remark about replication
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
0
diff
changeset
|
81 <https://groups.google.com/d/msg/orthanc-users/Zlhtcpo76qQ/tp8EqaRCAQAJ>`__. |
12b204ee328d
remark about replication
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
0
diff
changeset
|
82 |
12b204ee328d
remark about replication
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
0
diff
changeset
|
83 |
0 | 84 Generic replication |
85 ------------------- | |
86 | |
87 If you cannot use the first method, you can use the `Replicate | |
88 <https://bitbucket.org/sjodogne/orthanc/src/default/Resources/Samples/Python/Replicate.py>`_ | |
89 script of the Orthanc distribution. This script will use the REST API | |
90 of both the source and target instances of Orthanc. For instance:: | |
91 | |
92 $ python Replicate.py http://orthanc:password@localhost:8042/ http://192.168.0.2/ | |
93 | |
94 Obviously, contrarily to the first method, the source instance of | |
95 Orthanc must be up and running during the replication. |