Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 13 Next »

Here is the current backup strategy as a diagram:

Recovery Options

Fedora:

S3:

Currently we are using the s3 sync tool (akin to rsync for S3) to pull over key fedora data into the chf-hydra-backup bucket. This is a slight misnomer as it handles backups for ArchivesSpace as well now, but Fedora data is pulled over into

FedoraBackup (contains all Fedora binary data)

PGSql (contains the Fedora Postgres database fcrepo_backup)

Both sets are needed to do a full restore.

Note: As a reminder while S3's visual interface uses folders, those locations are actually just the first step in a path of individual block stored objects, folders do not exist in S3.

  1. Stop Tomcat
  2. Download the Postgres database fcrepo_backup.sql to the Fedora machine.
  3. Fedora might still have active connections to postgres, a restart sudo service postgresql restart will kill them.
  4. Import the database psql fcrepo < fcrepo_backup.sql
    1. If the database already exists, such as a sync, you will want to drop the existing database and then run the command.
  5. Check that the user trilby has permissions to access and use the newly made fcrepo database.
  6. Delete the existing folder(s) inside /opt/fedora-data (This step is not always required but makes it simpler)
  7. Using screen or tmux start an aws s3 sync to copy all the data over in the FedoraBackup "folder" to /opt/fedora-data
  8. Wait a while for all the data (>800 GB) to copy over.
  9. Run chown -R tomcat7:tomcat7 /opt/fedora-data to give ownership on the new files to the tomcat user so Fedora can access them.
  10. Restart Tomcat
  11. This will restore the Fedora database.  Current cost estimates (2/18) are about $.10 to do this restore.

Users:

  1. Go to S3 and download the postgres backup files.
  2. Stop Apache
  3. Restart the postgres service, this should remove the default connection to the Hydra database that Hydra has when running so you can change it.
  4. In Postgres delete the automatically generated chf_hydra database
    1. Log in via psql -u postgres
      1. The postgres account password is in ansible-vault (groupvars/all)
    2. Run: DROP DATABASE chf_hydra;
    3. Run: CREATE DATABASE chf_hydra;
  5. Then import the downloaded database
    1. Either:
      1. pg_restore -d chf_hydra -U postgres chf_hydra.dump
      2. psql chf_hydra < chf_hydra_dump.sql
  6. Then set permissions
    1. psql -U postgres
    2. GRANT Create,Connect,Temporary ON DATABASE chf_hydra TO chf_pg_hydra;
  7. You may now restart postgres and Apache2

Minter:

The minter is now part of postgres, just restore the chf_hydra database for the users to app and the minter will be restored.


Redis

Redis keeps a database in memory which handles the transaction record data such as the history of edits on a record. It does not contain the actual data, simply the timeline of changes. Losing this causes the history of object edits to be lost, but the objects themselves will be fine.

  1. Copy over redis-dump/dump.rdb to App
  2. It must be changed to be owned by redis
    1. sudo chmod -R redis:redis filename
  3. Then you will need to stop the redis server
    1. sudo service redis-server stop
  4. Move redis-dump.rdb to /var/lib/redis/dump.rdb overwriting the existing file there called dump.rdb
  5. Restart redis
    1. sudo service redis-server start
  6. When starting up redis will read the .rdb dump file and copy that data back to the in memory database.


Indexing:

The index is being backed up to speed up the time to recovery for DR or migrations. If you cannot access it, a manual reindex can be done with the instructions in Application administration. This process takes at least one business day, so is not recommended versus rebuilding from the backup.

  1. In the chf-hydra-backup, pull down the solr-backup.tar.gz file under Solr to the Solr server.
  2. Extract the archive
  3. Use the solr restore commands at Application administration
     


Last steps:

Costs

A quick cost analysis has restoration costing $30-35 dollars, this is as of 6/11/2018 with approximately 1 TB of data. Approximately 66% of the cost was due to inter-region transfer fees (moving data from US-WEST to US-EAST). The rest is standard LIST, GET, and related fees.


Kithe recovery

Digital Collection Recovery Overview:


Our new digital collection application (scihist_digcol) has slightly different preservation needs than the current Samvera application, however our institutional goals remain the same While we will be making technical changes to preservation methods our backup and recovery goals are still linked to the following key points in order of importance:

  1. Provide backups of all original files to they can be recovered in case of natural disaster, data corruption, user error, or malicious computer activity.

  2. Allow the Institute to recover from data loss or outages in a reasonable rate of time.

  3. Adhere to OAIS model rules when possible.

In cases of small scale data loss, such as corrupted files or user error, the application will be working fine but a limited set of data will have a problem. In these cases we can locate the problematic data and use a backup copy to restore any damaged original files or use versioning to restore an earlier version of the file. Derived files can either be regenerated or copied from backups as well. This is the most common expected use case.

In cases of broad AWS failure or regional disasters, it is possible that much or all of the data is rendered unavailable. In these cases we will suffer a loss of service until we can recover the data and apply new servers to run the software. This can be thought of as two recoveries, one is to get the digital collection site back as soon as possible for the public and the second is to restore all functionality. Getting the site back for the public is our primary concern, so we have a few methods to speed up recovery. Both the derivative and original files are backed up to a region on the West Coast in S3 like our actual use files. This means we can in case of a disaster point our application to the backup S3 storage and use it in production. Due to current setups we would not want staff to add new works, but this allows us to rapidly restore public facing access to our site should the normal data sources be unavailable. A longer process allows us to restore the data back to the original locations while leaving public access up, once the data is restored to its original place full staff functionality will likewise be restored.

In cases of issues affecting all on-line storage systems, another copy of the data is held on our in-house storage system so that we can potentially recover data even in case of a full loss of AWS. This only holds the original files and all other aspects will need to be rebuild, a process that can take days in addition to the time taken to upload the files again. Using the local backup means recovery could take a week or more.

The files which are considered key, the original item files and the postgres database storing their metdata are the only files which require backup. The other files being saved, derivative and index files, are only saved in order to reduce our proposed downtime during different accidents. When we look at recovery it will be useful to distinguish between full and partial recoveries. The following classifications may prove helpful

  • Partial public, partial staff recovery: The public has access to limited functionality as above, staff has access to a limited set of functions but certain functions may not be used.

  • Full public, partial staff recovery: The public can use the site normally, staff has access to a limited set of functions but certain functions may not be used.

  • Full public, full staff recovery: A total recovery.

Generally speaking public recovery is the higher initial priority since it impacts more people, contacting staff about outages is easy, and public outages affect the perception of the institute. That is why we’ve taken on the extra cost of storing non-needed files to speed up public recovery.

Technical Notes

Kithe currently (March 2019) has a small set of data to be handled for recovery.

  • A postgres database which contains user data and item metadata
  • Original binary files
  • Derivative Files

The first two are the ones that are needed the derivatives are merely backed up because the cost to back them up is low relative to the amount of time saved on a recpvery by having a copy ready.

The postgres database is backed up to S3 (currently unscheduled, fix this)
The binary files are replicated via S3 replication to a second location in US-WEST rather than US-EAST in case of outages. When we actually switch over, these will also be backed over to local on-site storage.
The derivative files will also be replicated via S3 replication to a US-WEST location. They can also be regenerated by the application though this takes hours

Public recovery requires the folllowing data

  • Postgres database
  • Original binaries for downloading tiffs
  • Derivative files

If we have an AWS outage affecting our region the fastest recovery options are to (if needed) rebuild the servers in another region and edit the local_env.yml file in either ansible or by hand to point to the backup S3 buckets for the original and derivative files. The postgres database will need to be downloaded from S3 and installed onto the new kithe machine if there is one. After that point all current public facing aspects will be restored. Since the backup buckets do not sync with the original data buckets staff should not upload new files though they can edit metadata on existing works. Once the original S3 buckets have had service restored or their data copied back, set the application to use the original buckets with local_env.yml and users can now add items,

In the case of smaller issues, like single file corruption or deletion the simplest method for original files is to local them on S3 and look at previous versions. We keep 30 days worth of versions so if the error was found within a month you should be able to revert back to an earlier file. For derivatives it is easier to simply regenerate them via the command line.





  • No labels