Migrazione a Databases for PostgreSQL
Esistono varie opzioni per migrare i dati dai database PostgreSQL esistenti a IBM Cloud® Databases for PostgreSQL. Ci concentriamo sulle soluzioni più semplici ed efficaci. Per iniziare, è necessario che PostgreSQL sia installato localmente in
modo da avere gli strumenti psql e pg_dump. E anche se non è strettamente necessario, la Cloud Databases Rende più semplice la connessione e il ripristino di una nuova distribuzione Databases for PostgreSQL.
pg_dump
Sul database di origine eseguire pg_dump per creare un file SQL, che può essere utilizzato per ricreare il database. Come minimo, pg_dump prende il nome dell'host -h flag), il numero della porta -p flag), il nome del database -d flag), il nome utente -U flag) e il nome del file (o della directory) in cui scrivere il dump -f flag).
Ad esempio, il seguente comando esegue il dump del database PostgreSQL "compose" ospitato su sl-eu-lon-2-portal.4.dblayer.com, porta 17980, utilizzando l'utente admin e salva i risultati in dump.sql.
pg_dump -h sl-eu-lon-2-portal.4.dblayer.com -p 17980 -d compose -U admin -f dump.sql
Il comando pg_dump ha molte opzioni e si consiglia di consultare la documentazione ufficiale e il riferimento ai comandi per una visione più completa delle sue capacità.
L'uso di pg_dumpall causa problemi di permessi, poiché cerca di includere le tabelle di sistema nell'operazione, il che non è supportato. Come documentato, utilizzare pg_dump e specificare le tabelle specifiche per l'utente.
Ripristino dell'output di pg_dump
L'output risultante di pg_dump può essere caricato in una nuova distribuzione Databases for PostgreSQL. Poiché l'output è SQL, può essere semplicemente inviato al database tramite il comando psql. Si consiglia di eseguire
le importazioni con l'utente amministratore.
Vedere la sezione Connessione con psql per i dettagli su come connettersi come amministratore utilizzando psql. Per connettersi
con il comando psql, sono necessari la stringa di connessione dell'utente admin e il certificato TLS. Il certificato deve essere decodificato dalla base64 e memorizzato in un file locale arbitrario. Per importare il file dump.sql creato in precedenza in un'installazione di database denominata example-psql, il comando psql può essere richiamato con -f dump.sql come parametro. Il parametro indica a psql di leggere ed
eseguire le istruzioni SQL nel file. Il comando assomiglia a:
PGPASSWORD=yourpasswordhere PGSSLROOTCERT=cert.crt psql 'host=c7798cf6-e5d2-4513-b17f-3d3fa67d8291.8f7bfd8f3faa4218aec56e069eb46187.databases.appdomain.cloud port=32484 dbname=ibmclouddb user=admin sslmode=verify-full' -f dump.sql
Come indicato nella documentazione di Connecting with psql, il plug-in Cloud Databases Semplifica la connessione. L'importazione precedente
psql può essere eseguita come:
ibmcloud cdb deployment-connections example-psql -s -- -f dump.sql
Se non viene specificato alcun utente, il comando utilizza automaticamente l'utente admin. Inoltre, richiede in modo interattivo la password. Il certificato TLS viene recuperato e utilizzato automaticamente. Il comando -s inizia
psql (o qualsiasi altro comando sia stato configurato) una volta stabiliti i dettagli dall'API. Qualsiasi cosa dopo il simbolo -- viene passata al comando.
Mentre il processo di ripristino è in esecuzione, emette una serie di messaggi sulle modifiche che sta apportando alla distribuzione del database.
Opzione di migrazione aggiuntiva utilizzando pg_restore
Per gli utenti con un file TAR contenente sql e dati separatamente, il comando pg_restore può essere usato per migrare i dati in aggiunta ai psql comandi precedentemente indicati. Un esempio del comando pg_restore è il seguente:
PGPASSWORD=yourpasswordhere PGSSLROOTCERT=cert.crt pg_restore -h c7798cf6-e5d2-4513-b17f-3d3fa67d8291.8f7bfd8f3faa4218aec56e069eb46187.databases.appdomain.cloud -p 32484 -U admin -F t -d ibmclouddb tarfile.tar