annotate Sphinx/source/users/backup.rst @ 1109:689c27b34bd6

docker comparisons
author Alain Mazy <am@orthanc.team>
date Wed, 25 Sep 2024 10:04:48 +0200
parents c10fc0838f58
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1 .. _backup:
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
3 Backup
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
4 ======
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
5
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
6 The way to backup Orthanc depends on the database back-end that is
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
7 used. In any case, you of course have to backup your
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
8 :ref:`configuration file <configuration>`.
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
9
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
10 SQLite
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
11 ------
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
12
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
13 By default, Orthanc uses SQLite to store its database. In this case,
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
14 all the DICOM files together with the SQLite index are stored directly
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
15 in the filesystem. The backup procedure works as follows:
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
16
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
17 1. Stop Orthanc.
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
18 2. Copy the following 3 elements:
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
19
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
20 * Your configuration file.
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
21 * The DICOM files (by default, the subdirectories of the
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
22 ``OrthancStorage`` folder next to the configuration file).
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
23 * The SQLite index (by default, the ``OrthancStorage/index*`` files
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
24 next to the configuration file).
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
25
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
26 3. Restart Orthanc.
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
27
918
Alain Mazy <am@osimis.io>
parents: 358
diff changeset
28 It is recommended to stop Orthanc, as the Orthanc core makes the
0
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
29 assumption that it is the only process to access the SQLite database
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
30 at any time.
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
31
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
32 Karsten Hilbert provided us with a `sample backup script
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
33 <https://github.com/jodogne/OrthancContributed/blob/master/Scripts/Backup/2014-01-31-KarstenHilbert.sh>`__
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
34 for the official Debian package of Orthanc that automates this backup
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
35 procedure. Note that in this script, the call to the SQLite
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
36 command-line tool is used to force the `WAL replay
358
011b01ccf52d fixing external hyperlinks
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 307
diff changeset
37 <https://www.sqlite.org/wal.html>`__. This manual replay should not be
0
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
38 necessary for Orthanc >= 0.7.3.
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
39
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
40
154
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 25
diff changeset
41 PostgreSQL and MySQL
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 25
diff changeset
42 --------------------
0
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
43
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
44 The default SQLite engine is well adapted for DICOM routing or for
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
45 image buffering tasks, but not for enterprise scenarios. In such
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
46 cases, you are highly recommended to use the `PostgreSQL back-end
358
011b01ccf52d fixing external hyperlinks
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 307
diff changeset
47 <https://www.orthanc-server.com/static.php?page=postgresql>`__ or the
154
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 25
diff changeset
48 `MySQL/MariaDB back-end
358
011b01ccf52d fixing external hyperlinks
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 307
diff changeset
49 <https://www.orthanc-server.com/static.php?page=mysql>`__.
0
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
50
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
51 If using PostgreSQL, you can do hot backups (i.e. while Orthanc is
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
52 running), and you benefit from all the flexibility of PostgreSQL
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
53 backup. These procedures are out of the scope of this manual. Please
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
54 check the `official backup and restore manual
358
011b01ccf52d fixing external hyperlinks
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 307
diff changeset
55 <https://www.postgresql.org/docs/devel/backup.html>`__.
154
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 25
diff changeset
56
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 25
diff changeset
57 Similar backup procedures are available for MySQL and MariaDB as
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 25
diff changeset
58 well. Please check the official manual about `database backup methods
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 25
diff changeset
59 <https://dev.mysql.com/doc/refman/8.0/en/backup-methods.html>`__.
307
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 154
diff changeset
60
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 154
diff changeset
61 Here are some contributed documents:
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 154
diff changeset
62
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 154
diff changeset
63 * `Backup for Windows 10, Orthanc and PostgreSQL plugin <https://blog.goo.ne.jp/wakida_ortho/e/3eb557fd134cf6136d5ba66cf72fd85a>`__ (in Japanese, 2020-02-02).
918
Alain Mazy <am@osimis.io>
parents: 358
diff changeset
64
Alain Mazy <am@osimis.io>
parents: 358
diff changeset
65
Alain Mazy <am@osimis.io>
parents: 358
diff changeset
66 Restoring backups
Alain Mazy <am@osimis.io>
parents: 358
diff changeset
67 -----------------
Alain Mazy <am@osimis.io>
parents: 358
diff changeset
68
Alain Mazy <am@osimis.io>
parents: 358
diff changeset
69 You should always stop Orthanc while you restore the DB backup.
Alain Mazy <am@osimis.io>
parents: 358
diff changeset
70 You may run Orthanc while the storage (DICOM file) backup is being restored
Alain Mazy <am@osimis.io>
parents: 358
diff changeset
71 but you should expect to have some data unavailable.
Alain Mazy <am@osimis.io>
parents: 358
diff changeset
72
Alain Mazy <am@osimis.io>
parents: 358
diff changeset
73 Data consistency
Alain Mazy <am@osimis.io>
parents: 358
diff changeset
74 ^^^^^^^^^^^^^^^^
Alain Mazy <am@osimis.io>
parents: 358
diff changeset
75
Alain Mazy <am@osimis.io>
parents: 358
diff changeset
76 If you are running backups on a running system, it is very likely that
Alain Mazy <am@osimis.io>
parents: 358
diff changeset
77 your DB backup won't happen exactly at the same time as your storage backup
Alain Mazy <am@osimis.io>
parents: 358
diff changeset
78 (the DICOM files).
Alain Mazy <am@osimis.io>
parents: 358
diff changeset
79
Alain Mazy <am@osimis.io>
parents: 358
diff changeset
80 After you've restored your backup, you'll likely need
Alain Mazy <am@osimis.io>
parents: 358
diff changeset
81 to resend e.g. the last 24 hours data from the modalities to make sure
Alain Mazy <am@osimis.io>
parents: 358
diff changeset
82 the data that was not included in the backup is pushed to Orthanc again.
Alain Mazy <am@osimis.io>
parents: 358
diff changeset
83 When new data is pushed to Orthanc, it is recommended to have the
Alain Mazy <am@osimis.io>
parents: 358
diff changeset
84 ``OverwriteInstances`` set to ``true`` to force Orthanc rewrite files for
Alain Mazy <am@osimis.io>
parents: 358
diff changeset
85 instances that were in the DB backup and not on the storage backup.
Alain Mazy <am@osimis.io>
parents: 358
diff changeset
86
Alain Mazy <am@osimis.io>
parents: 358
diff changeset
87 This kind of recovery might create orphan files in the DICOM storage
Alain Mazy <am@osimis.io>
parents: 358
diff changeset
88 (files that are not referenced by Orthanc anymore). As of 2023, there
Alain Mazy <am@osimis.io>
parents: 358
diff changeset
89 is no script/procedure available to delete these orphan files.
Alain Mazy <am@osimis.io>
parents: 358
diff changeset
90
Alain Mazy <am@osimis.io>
parents: 358
diff changeset
91
Alain Mazy <am@osimis.io>
parents: 358
diff changeset
92
Alain Mazy <am@osimis.io>
parents: 358
diff changeset
93