Before starting with this guide, please contact EMS support from https://ems.element.io/support or by emailing firstname.lastname@example.org
This section outlines what you should do ahead of the migration in order to ensure the migration goes as quickly as possible and without issues.
ls -lah /path/to/homeserver.db
du -hs /path/to/synapse/media_store/
You might want to run everything in a tmux or a screen session to avoid disruption in case of a lost SSH connection.
Start Synapse, make sure it's happy
mkdir -p /tmp/synapse_export
The guide from here on assumes your current working directory is /tmp/synapse_export.
If you are working as root: (otherwise set restrictive permissions as needed):
chmod 000 /tmp/synapse_export
Copy the following files and send to EMS Support:
DO NOT START IT AGAIN AFTER THIS
Doing so can cause issues with federation and inconsistent data for your users.
While you wait for the database to export or files to transfer, you should edit or create the well-known files and DNS records to point to your new EES host. This can take a while to update so should be done as soon as possible in order to ensure your server will function properly when the migration is complete.
pg_dump -O -h <dbhost> -U <dbusername> -d <dbname> | gzip > synapse_db_export.sql.gz
On the new host set the
grab macaroon_secret_key from homeserver.yaml and place it in the "Secrets \ Synapse \ Macaroon"
psql -U synapse_user synapse on postgres pod shell
psql -U synapse_user synapse
DO $$ DECLARE
FOR r IN (SELECT tablename FROM pg_tables WHERE schemaname = current_schema()) LOOP
EXECUTE 'DROP TABLE ' || quote_ident(r.tablename) || ' CASCADE';
DROP sequence cache_invalidation_stream_seq;
DROP sequence state_group_id_seq;
DROP sequence user_id_seq;
DROP sequence account_data_sequence;
DROP sequence application_services_txn_id_seq;
DROP sequence device_inbox_sequence;
DROP sequence event_auth_chain_id;
DROP sequence events_backfill_stream_seq;
DROP sequence events_stream_seq;
DROP sequence presence_stream_sequence;
DROP sequence receipts_sequence;
DROP sequence un_partial_stated_event_stream_sequence;
DROP sequence un_partial_stated_room_stream_sequence;
\q to quit
gzip -d synapse_export.sql.gz
sudo cp synapse_export.sql /data/postgres/synapse/
psql -U synapse_user synapse < var/lib/postgresql/data/synapse_export.sql