Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

See What's New in Avalon 6 for more details.

Prepare R6 for migration

The option to upgrade in place is not available to go from Release 5 of Avalon to Release 6. Instead, follow these steps.

...

Code Block
languagebash
# ensure that Fedora, Solr, and the DB are clean
# it will ask you to verify the targets are correct
bundle exec rake avalon:wipeout  

Migrate Config Files

  • config/authentication.yml  – has a new structure with a different section for each rails environment. Edit your authentication particulars to incorporate this new structure.  See example: config/authentication.yml.example
  • config/controlled_vocabulary.yml  – should be copied from R5 to R6 to support data migrations
  • config/initializers/permalink.rb – if in use, it will likely need to be adjusted to refer to objects in the Fedora 4 way (id, instead of pid)

Dump R5 database

Data from your R5 database will be loaded directly into your R6 database then migrated for R6 in a later step. Role_map data will be needed in R6 for the Fedora migrate step, so it needs to be imported first.

Code Block
# This example is for mysql. Adjust as necessary for your R5 database.
mysqldump -u avalonweb -p avalonweb --no-create-info --complete-insert --tables annotations api_tokens bookmarks courses identities ingest_batches playlist_items playlists role_maps  users > /tmp/avalon.r5.dump.sql

Load to R6 database

SSH into your R6 box and load the R5 database dump.

...

Expand
title...Follow these sqlite instructions

Sqllite3 doesn't like mysql dump files so a transformation script needs to be run on it. Download https://raw.githubusercontent.com/dumblob/mysql2sqlite/master/mysql2sqlite, make it executable, and run it on the dump file.

Code Block
chmod +x mysql2sqlite
./mysql2sqlite avalon.r5.dump.sql > avalon.r5.dump.sqlite
 
#then on r6
bundle exec rails dbconsole
sqlite> .read /tmp/avalon.r5.dump.sqlite

".read" returns "memory", which is good.

Migrate Fedora Objects

SSH tunnel or open up your fedora3 server to your new Avalon app:

Code Block
# Choose an available local port to use as a mirror of your fedora3.host:8983 import source
# In this example 9999 is used. It must match the port used in fedora3.yml in the next step
ssh -L 9999:localhost:8983 user@fedora3.host

keep the ssh mirror running in another tab as you do the next steps.

Setup config/fedora3.yml in your Avalon 6 app

The fedora3.yml should work without change, but if you do have trouble, here's an example fedora3.yml for the avalon demo server.

Code Block
development:
  user: fedoraAdmin
  password: <password>
  url: http://localhost:9999/fedora
test:
  user: fedoraAdmin
  password: <password>
  url: http://localhost:9999/fedora
production:
  user: fedoraAdmin
  password: <password>
  url: http://localhost:9999/fedora

Run the migration!

You can watch it run on your target avalon by going to <your avalon url>/admin/migration_report .

...

After this command is finished, look through the report and see which items have failed and troubleshoot using the errors listed.

Migrate Database Tables

Code Block
# Run script to map fedora 3 pids in database to newly minted fedora 4 noids
bundle exec rake avalon:migrate:db

Delete Failed Bookmarks

Code Block
#This will delete any bookmarks that point to failed items
bundle exec rake avalon:migrate:bookmark_cleanup

...