Tuesday, July 24, 2012

mingle backup, restore, reset, migrate notes

Having spent some time on debugging a java/mingle issue recently, I document here some useful steps for dealing with backing up, restoring, resetting to default and migrating mingle.

My $MINGLE_DATA_DIR = /var/lib/mingle
My $MINGLE_INSTALL_DIR = /home/mingle/current-mingle

Backup mingle

  1. Exported projects of interest manually via web UI
    For a lot of projects, alternatively use $MINGLE_INSTALL_DIR/tools/export_import/export_all_projects.rb
    Exports end up in $MINGLE_INSTALL_DIR/exported_projects
  2. stop mingle
    $ invoke-rc.d mingled stop
  3. backup /var/lib/mingle
    $ cp -a /var/lib/mingle{,~backup}
  4. postgres dumpall
    $ sudo -u postgres -i -- pg_dumpall > ~/postgre-dumpall-pre-mingle-drop.dump

Reset mingle to near out of the box status

  1. backup per above (mingle will be stopped)
  2. $ rm -r /var/lib/mingle/*
  3. $ sudo -u postgres -i -- psql -d mingle -c "DROP SCHEMA public CASCADE;"
This approach keeps the mingle db and credentials but drops everything else. You can now start mingle and go to the website to start the install process.

Mingle full purge and restore (out of the box)

  1. backup per above (mingle will be stopped)
  2. $ rm -r /var/lib/mingle/* $MINGLE_INSTALL_DIR
  3. $ invoke-rc.d postgresql stop
  4. $ mv -v /var/lib/postgresql/$VERSION{,~} && mv -v /etc/postgresql/$VERSION {,~}
  5. $ pg_createcluster --start $VERSION main
  6. check and diffs on the new cluster, including port, make a note of the db port
    $ diff -r /etc/postgresql/ $VERSION ~ /etc/postgresql/$VERSION
  7. restore the db dump
    $ sudo -u postgres -i -- psql -f postgre-dumpall-pre-mingle-drop.dump postgres|less
    $ sudo -u postgres -i -- vacuumdb -a -z
  8. extract mingle tgz
  9. launch mingle

Server migration


Observe the following advice from Mingle team:
  • complete the Mingle installation process using the new database settings completely, including creation of an initial user
  • license the new instance
  • create any users who are not associated with a project manually using Mingle as they will not be imported with the projects
  • review the templates after the import has completed to remove any duplicates of the standard templates that may have been installed
This approach is aimed at a server that doesn't previously have an instance of postgres, or at least an instance that its data can be nuked by another servers full db dump.
  1. backup per above (mingle will be stopped)
  2. tgz and move your $MINGLE_DATA_DIR backup and psql dump to the new server
  3. install postgres on the target server, note the port
  4. restore the db dump, this will create users and the db
    $ sudo -u postgres -i -- psql -f postgre-dumpall-pre-mingle-drop.dump postgres|less
    $ sudo -u postgres -i -- vacuumdb -a -z
  5. extract your $MINGLE_DATA_DIR , set permissions, set db port as required
  6. extract mingle from its tgz to $MINGLE_INSTALL_DIR
  7. launch mingle
Mingle shouldn't know any different, if the mingle doesn't start up normally, you've missed a step or something has gone wrong, check the logs!

Importing projects from the cli/shell

  1. $ mkdir $MINGLE_INSTALL_DIR/exported_projects
  2. place your .mingle files in aforementioned dir
  3. run the importer script
    $ tools/run tools/export_import/import_projects.rb --mingle.dataDir=$MINGLE_DATA_DIR

No comments: