Migrating a server¶
Here are the approximate steps to migrate a server from one environment to another.
Stand up a new server with ansible. For ease of migration, it is recommended to use the same secrets as the previous environment unless there is any reason to believe there was a compromise/breach.
Back up the commcare-sync, superset, and data export tool databases to pgdump files.
Transfer the pgdump files to the new server.
Restore the commcare-sync and superset databases to the new server.
Copy the export config files from the old server to the new server.
Test.
Backup commands
(These commands are run on the old server.)
pg_dump -U commcare_sync -h localhost -p 5432 commcare_sync > ~/sync-db-backup.pgdump
pg_dump -U commcare_sync -h localhost -p 5432 superset > ~/superset-db-backup.pgdump
# add any other DBs created where the data might actually be housed
Copy commands
(These commands are run on the new server.)
scp oldserver.dimagi.com:sync-db-backup.pgdump ./
scp oldserver.dimagi.com:supeset-db-backup.pgdump ./
# other DBs here
Restore commands
(These commands are run on the new server.)
First you have to delete and recreate the databases that were created by ansible:
sudo -u postgres dropdb commcare_sync
sudo -u postgres dropdb superset
createdb -U commcare_sync -h localhost -p 5432 commcare_sync
createdb -U commcare_sync -h localhost -p 5432 superset
# need to create other DBs here
If you get errors about active connections when dropping databases try stopping all processes
with supervisorctl stop all
and killing any other active connections in a psql
shell with something like the below:
SELECT pg_terminate_backend(pg_stat_activity.pid) FROM pg_stat_activity WHERE pg_stat_activity.datname = 'superset' AND pid <> pg_backend_pid();
Next you can restore them individually:
psql -U commcare_sync -h localhost -p 5432 commcare_sync < sync-db-backup.pgdump
psql -U commcare_sync -h localhost -p 5432 superset < superset-db-backup.pgdump
# restore other DBs here
Copying config files
On the old server, in the ~www/commcare-sync/code_root
folder:
tar -zcf ~/commcare-sync-media.tar.gz media/
On the new server, in the ~www/commcare-sync/code_root
folder:
tar -xzf ~/commcare-sync-media.tar.gz