Questa pagina descrive come configurare il server esterno per la replica in Cloud SQL, creare un'istanza di rappresentazione dell'origine su Cloud SQL e replicare i dati in Cloud SQL. Devi completare tutti i passaggi di questa pagina prima di procedere con i passaggi di replica.
Un'alternativa ai passaggi descritti in questa pagina è Database Migration Service, che offre la replica continua o la migrazione una tantum del database da un server esterno a Cloud SQL.
Prima di iniziare
Terminologia
Server esterno. Il server PostgreSQL esterno a Cloud SQL da cui vuoi replicare i dati. È noto anche come database di origine o server di database esterno. Può essere un'altra istanza Cloud SQL o qualsiasi altro server di database, ad esempio on-premise, Amazon Relational Database Service (RDS) e così via.
Istanza di rappresentazione dell'origine. Un modello di un'istanza Cloud SQL che rappresenta il server esterno per la replica Cloud SQL. È visibile nella console Google Cloud e appare come un'istanza Cloud SQL normale, ma non contiene dati, non richiede configurazione o manutenzione e non influisce sulla fatturazione.
Una replica Cloud SQL. L'istanza Cloud SQL che esegue la replica dall'istanza del server esterno. Chiamata anche replica di lettura primaria esterna.
Account utente di replica. L'account utente PostgreSQL sul server esterno con autorizzazioni sufficienti per consentire la replica tra il server esterno e la replica Cloud SQL.
Importazione gestita. La procedura di importazione dei dati direttamente dal server esterno alla replica Cloud SQL. In questa situazione, Cloud SQL si connette al server esterno utilizzando l'account utente di replica ed esegue il dump dei dati direttamente sul server esterno per importarli nella replica Cloud SQL.
Configura un progetto Google Cloud
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Cloud SQL Admin API.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Cloud SQL Admin API.
-
Assicurati di disporre dei ruoli Amministratore Cloud SQL, Amministratore di archiviazione e visualizzatore di Compute nel tuo account utente.
Installa Google Cloud SDK
Per configurare la replica, installa Google Cloud SDK per il tuo server esterno. Ti consigliamo di installare l'SDK sul server esterno, a meno che non sia già installato altrove.
Configura il server esterno per la replica
Cloud SQL supporta migrazioni continue dai database di origine ai database Cloud SQL di destinazione.
I database di origine supportati per PostgreSQL includono:
- Versioni autogestite (on-premise o su qualsiasi VM cloud di tua proprietà) PostgreSQL 9.4, 9.5, 9.6, 10, 11, 12, 13, 14, 15, 16 e 17
- Amazon RDS 9.6.10 e versioni successive, 10.5 e versioni successive, 11.1 e versioni successive, 12, 13, 14, 15, 16 e 17
- Amazon Aurora 10.11 e versioni successive, 11.6 e versioni successive, 12.4 e versioni successive, 13.3 e versioni successive, 14, 15, 16 e 17
- Cloud SQL 9.6, 10, 11, 12, 13, 14, 15, 16 e 17
Per configurare l'origine è necessario configurare sia l'istanza di origine che i database di origine sottostanti.
Elenco di controllo del server esterno
Se la replica Cloud SQL è attivata con un indirizzo IP privato perché l'accesso ai servizi privati della rete VPC utilizzata dalla replica Cloud SQL come rete privata richiede un indirizzo IP privato in uscita, configura il firewall del server esterno in modo da consentire l'accesso ai servizi privati della rete VPC utilizzata dalla replica Cloud SQL come rete privata.
Il firewall del server di database di origine deve essere configurato per consentire l'intero intervallo IP interno allocato per la connessione al servizio privato della rete VPC utilizzata dall'istanza di destinazione Cloud SQL come campo privateNetwork delle impostazioni ipConfiguration.
Per trovare l'intervallo IP interno:
Nella console Google Cloud, vai alla pagina Reti VPC.
Seleziona la rete VPC che vuoi utilizzare.
Fai clic sulla scheda Connessione privata ai servizi.
Configura l'istanza di origine
Per configurare l'istanza di origine:
- Se l'istanza di origine non include il database
postgres
, crealo. - Installa il pacchetto pglogical sull'istanza di origine.
Imposta i seguenti parametri, se necessario.
Se l'istanza PostgreSQL di origine è Amazon RDS, includi questi parametri in un nuovo gruppo di parametri e allega il gruppo di parametri all'istanza.
Se l'origine è Cloud SQL, imposta i flag
cloudsql.logical_decoding
ecloudsql.enable_pglogical
suon
.Per attivare i flag in Cloud SQL, consulta Configurare i flag di database.
Imposta
shared_preload_libraries
in modo da includerepglogical
utilizzando il seguente comando:ALTER SYSTEM SET shared_preload_libraries = 'pglogical';
Imposta
wal_level
sulogical
utilizzando il seguente comando:ALTER SYSTEM SET wal_level = 'logical';
Se l'istanza PostgreSQL di origine è Amazon RDS, per attivare i log WAL a livello di
logical
, imposta il parametrords.logical_replication
su1
.Imposta
wal_sender_timeout
su0
utilizzando il seguente comando:ALTER SYSTEM SET wal_sender_timeout = 0;
Il valore
0
disattiva il meccanismo di timeout utilizzato per interrompere le connessioni di replica inattive.Imposta max_replication_slots sul numero massimo di slot di replica che l'istanza di origine può supportare. Utilizza il seguente comando, dopo aver sostituito # con il numero:
ALTER SYSTEM SET max_replication_slots = #;
Cloud SQL richiede uno slot per ogni database di cui è stata eseguita la migrazione. Specifica almeno il numero di abbonamenti che si prevede si connetteranno, con alcune riserve per la sincronizzazione delle tabelle.
Ad esempio, se l'istanza di origine ha 5 database e vengono creati 2 job di migrazione per l'origine, il numero di slot di replica deve essere almeno 5 * 2 = 10, oltre al numero di slot di replica già in uso.
Imposta max_wal_senders almeno su un valore pari a
max_replication_slots
, oltre al numero di mittenti già utilizzati nell'istanza. Utilizza il seguente comando, sostituendo # con il numero totale di processi di mittenti WAL in esecuzione contemporaneamente:ALTER SYSTEM SET max_wal_senders = #;
Ad esempio, se il parametro
max_replication_slots
è impostato su10
e utilizzi già 2 mittenti, il numero di processi di mittenti WAL in esecuzione contemporaneamente sarà 10 + 2 = 12.Imposta max_worker_processes almeno sul numero di database nell'istanza di origine, oltre al numero di processi worker già utilizzati nell'istanza. Utilizza il seguente comando, dopo aver sostituito # con il numero totale:
ALTER SYSTEM SET max_worker_processes = #;
- Se la replica Cloud SQL utilizzerà un IP privato, configura il firewall del server esterno in modo da consentire l'intervallo IP interno allocato per l'accesso ai servizi privati della rete VPC della replica.
- Per applicare le modifiche alla configurazione, riavvia l'istanza di origine.
I parametri impostati in questo passaggio si applicano
a un server di database PostgreSQL in esecuzione. Puoi anche rendere permanenti queste modifiche includendole nel file postgresql.conf
.
Attivare il monitoraggio del ritardo di replica per le versioni di PostgreSQL precedenti alla 9.6
Se esegui la migrazione da una versione di PostgreSQL precedente alla 9.6, la metrica del ritardo nella replica non è disponibile per impostazione predefinita. Puoi utilizzare una delle tre alternative per monitorare questa metrica e garantire un tempo di inattività minimo durante la promozione del database:
Opzione 1: consenti al server esterno Cloud SQL di monitorare il ritardo della replica concedendo l'accesso a una query specifica. Utilizzando un utente con il privilegio
SUPERUSER
, svolgi i seguenti passaggi:Definisci la seguente funzione per consentire al server esterno di eseguire query sul ritardo della replica.
CREATE OR REPLACE FUNCTION pg_stat_replication_user() RETURNS TABLE ( pid integer , usesysid oid , username name , application_name text , client_addr inet , client_hostname text , client_port integer , backend_start timestamp with time zone , backend_xmin xid , state text , sent_location pg_lsn , write_location pg_lsn , flush_location pg_lsn , replay_location pg_lsn , sync_priority integer , sync_state text ) LANGUAGE SQL SECURITY DEFINER AS $$ SELECT * FROM pg_catalog.pg_stat_replication; $$;
Concedi all'utente l'autorizzazione
EXECUTE
eseguendo i seguenti comandi:REVOKE EXECUTE ON FUNCTION pg_stat_replication_user() FROM public;
GRANT EXECUTE ON FUNCTION pg_stat_replication_user() to {replication_user};
Opzione 2: concedi il privilegio
SUPERUSER
direttamente all'utente utilizzato per connettersi all'istanza di origine. In questo modo, il server esterno può leggere direttamente il ritardo di replica.Opzione 3: monitora il ritardo di replica in modo indipendente utilizzando la seguente query:
SELECT current_timestamp, application_name, pg_xlog_location_diff(pg_current_xlog_location(), pg_stat_replication.sent_location) AS sent_location_lag, pg_xlog_location_diff(pg_current_xlog_location(), pg_stat_replication.write_location) AS write_location_lag, pg_xlog_location_diff(pg_current_xlog_location(), pg_stat_replication.flush_location) AS flush_location_lag, pg_xlog_location_diff(pg_current_xlog_location(), pg_stat_replication.replay_location) AS replay_location_lag FROM pg_stat_replication WHERE application_name like 'cloudsql%';
In questa opzione, Cloud SQL non riflette la metrica del ritardo di replica nei grafici o nelle risposte dell'API.
Configura i database di origine
Il server esterno Cloud SQL esegue la migrazione di tutti i database nell'istanza di origine, ad eccezione di quanto segue:
- Per le origini on-premise: database modello
template0
etemplate1
- Per le origini Amazon RDS:
template0
,template1
erdsadmin
- Per le origini Cloud SQL: database modello
template0
etemplate1
Esegui le operazioni indicate di seguito su ogni database nell'istanza di origine non incluso nell'elenco precedente:
Per installare l'estensione
pglogical
, esegui il seguente comando su ogni database nell'istanza di origine:CREATE EXTENSION IF NOT EXISTS pglogical
Per le tabelle senza chiavi primarie, Cloud SQL supporta la migrazione dello snapshot iniziale e delle istruzioni
INSERT
durante la fase Change Data Capture (CDC). Esegui manualmente la migrazione delle istruzioniUPDATE
eDELETE
.Connettiti all'istanza ed esegui i seguenti comandi per impostare i privilegi per l'utente su ogni database di cui è stata eseguita la migrazione, nonché sul database
postgres
predefinito.L'utente che utilizzi per connetterti all'istanza di origine è configurato come utente nella pagina Profili di connessione. Puoi creare un nuovo utente o riutilizzarne uno esistente.
In tutti gli schemi di ogni database di cui eseguire la migrazione, a parte lo schema di informazioni e gli schemi che iniziano con
pg_
, esegui il seguente comando:GRANT USAGE on SCHEMA schema to username; GRANT SELECT on ALL SEQUENCES in SCHEMA schema to username; GRANT SELECT on ALL TABLES in SCHEMA schema to username;
Su ogni database di cui vuoi eseguire la migrazione, esegui il seguente comando:
GRANT USAGE on SCHEMA pglogical to PUBLIC;
Per recuperare le informazioni di replica dai database di origine,su tutti i database, esegui il seguente comando:
GRANT SELECT on ALL TABLES in SCHEMA pglogical to username;
Se l'origine è Amazon RDS, esegui il seguente comando:
GRANT rds_replication to username;
In caso contrario, esegui il seguente comando:
ALTER USER username with REPLICATION;
Configurare un'istanza di rappresentazione dell'origine
L'istanza della rappresentazione di origine fa riferimento al server esterno. Contiene solo i dati della richiesta dal server esterno. Crea i dati della richiesta
e utilizzali in un comando curl
che crea l'istanza di rappresentazione dell'origine
in Cloud SQL.
Crea i dati della richiesta
I dati della richiesta contengono informazioni di base sul tuo server esterno in formato JSON. I dati della richiesta possono essere configurati per una replica Cloud SQL su una rete pubblica o privata e devono contenere le seguenti informazioni:
source.json
{ "name": "SOURCE_NAME", "region": "REGION", "databaseVersion": "DATABASE_VERSION", "onPremisesConfiguration": { "hostPort": "SOURCE_HOST", "username": "USERNAME", "password": "PASSWORD", "caCertificate": "SOURCE_CERT", "clientCertificate": "CLIENT_CERT", "clientKey": "CLIENT_KEY" } }
esempio di importazione gestita
// example of source.json for external server that
// - initiates replication from a Cloud SQL managed import
// - doesn't use SSL/TSL
{
"name": "cloudsql-source-instance",
"region": "us-central1",
"databaseVersion": "POSTGRES_9_6",
"onPremisesConfiguration": {
"hostPort": "192.0.2.0:3306",
"username": "replicationUser",
"password": "486#@%*@"
}
}
Proprietà | Descrizione |
---|---|
SOURCE_NAME | Il nome dell'istanza della rappresentazione dell'origine da creare. |
REGION | La regione in cui vuoi che risieda l'istanza della rappresentazione di origine. |
DATABASE_VERSION | La versione del database in esecuzione sul
server esterno. Le opzioni sono POSTGRES_9_6 , POSTGRES_10 ,
POSTGRES_11 , POSTGRES_12 , POSTGRES_13 , POSTGRES_14 , POSTGRES_15 , POSTGRES_16 o POSTGRES_17 . |
SOURCE HOST | L'indirizzo IPv4 e la porta per il
server esterno oppure l'indirizzo DNS per il
server esterno.
Se il server esterno è ospitato su Cloud SQL, la porta è 5432 . |
USERNAME | L'account utente di replica sul server esterno. |
PASSWORD | La password per l'account utente di replica. |
BUCKET | Il nome del bucket che contiene il file dump. Includi solo se stai configurando la replica con un file dump esistente in un bucket Cloud Storage. |
DUMP_FILE | Un file nel bucket contenente i dati del server esterno. |
CLIENT_CA_CERT | Il certificato CA sul server esterno. Includi solo se sul server esterno viene utilizzato SSL/TLS. |
CLIENT_CERT | Il certificato client sul server esterno. Obbligatorio solo per l'autenticazione server-client. Includi solo se sul server esterno viene utilizzato SSL/TLS. |
CLIENT_KEY | Il file della chiave privata per il client sul server esterno. Obbligatorio solo per l'autenticazione server-client. Includi solo se sul server esterno viene utilizzato SSL/TLS. |
Crea un'istanza di rappresentazione di origine
Prima di iniziare questo passaggio, crea un file JSON contenente i dati della richiesta di origine.
Quindi, per creare l'istanza della rappresentazione di origine in Cloud SQL, apri un terminale ed esegui i seguenti comandi:
curl
gcloud auth login ACCESS_TOKEN="$(gcloud auth print-access-token)" curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \ --header 'Content-Type: application/json' \ --data @JSON_PATH \ -X POST \ https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT-ID/instances
esempio
gcloud auth login
ACCESS_TOKEN="$(gcloud auth print-access-token)"
curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
--header 'Content-Type: application/json' \
--data @./source.json \
-X POST \
https://sqladmin.googleapis.com/sql/v1beta4/projects/MyProject/instances
Proprietà | Descrizione |
---|---|
PROJECT_ID | L'ID del tuo progetto in Google Cloud. |
JSON_PATH | Il percorso del file JSON contenente i dati della richiesta per il server esterno. |
Aggiorna un'istanza di rappresentazione di origine
Se aggiorni i dati della richiesta dal server esterno, puoi aggiornare l'istanza di rappresentazione dell'origine esistente per utilizzare i valori modificati.
Modificare i dati della richiesta
Aggiorna i dati della richiesta in modo da includere eventuali campi modificati. Sono inclusi i campi hostPort
, username
, password
, caCertificate
, clientCertificate
e clientKey
. Dopo aver aggiornato i dati della richiesta, utilizzali in un
curl
comando per aggiornare l'istanza in Cloud SQL.
L'esempio seguente mostra l'aggiornamento dei campi username
e password
con un nome utente e una password diversi:
source.json
{ "name": "SOURCE_NAME", "region": "REGION", "databaseVersion": "DATABASE_VERSION", "onPremisesConfiguration": { "username": "NEW_USERNAME", "password": "NEW_PASSWORD" } }
esempio di importazione gestita
// example of source.json for external server that
// - initiates replication from a Cloud SQL managed import
// - doesn't use SSL/TSL
{
"name": "cloudsql-source-instance",
"region": "us-central1",
"databaseVersion": "POSTGRES_9_6",
"onPremisesConfiguration": {
"username": "newReplicationUser",
"password": "525#@%*@"
}
}
Proprietà | Descrizione |
---|---|
SOURCE_NAME | Il nome dell'istanza della rappresentazione di origine. |
REGION | La regione in cui risiede l'istanza della rappresentazione di origine. |
DATABASE_VERSION | La versione del database in esecuzione sul
server esterno. Le opzioni sono POSTGRES_9_6 , POSTGRES_10 ,
POSTGRES_11 , POSTGRES_12 , POSTGRES_13 , POSTGRES_14 , POSTGRES_15 , POSTGRES_16 o POSTGRES_17 . |
NEW_USERNAME | Il nuovo account utente di replica sul server esterno. |
NEW_PASSWORD | La password del nuovo account. |
Modificare un'istanza di rappresentazione di origine
Prima di iniziare questo passaggio, crea un file JSON contenente i dati della richiesta modificata.
Per modificare l'istanza di rappresentazione di origine in Cloud SQL, apri un terminale ed esegui i seguenti comandi:
curl
gcloud auth login ACCESS_TOKEN="$(gcloud auth print-access-token)" curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \ --header 'Content-Type: application/json' \ --data @JSON_PATH \ -X PATCH \ https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT-ID/instances/SOURCE_NAME
esempio
gcloud auth login
ACCESS_TOKEN="$(gcloud auth print-access-token)"
curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
--header 'Content-Type: application/json' \
--data @./source.json \
-X PATCH \
https://sqladmin.googleapis.com/sql/v1beta4/projects/MyProject/instances/cloudsql-source-instance
Proprietà | Descrizione |
---|---|
PROJECT_ID | L'ID del tuo progetto in Google Cloud. |
JSON_PATH | Il percorso del file JSON contenente i dati della richiesta per il server esterno. |
SOURCE_NAME | Il nome dell'istanza della rappresentazione di origine. |
Configura una replica Cloud SQL
La replica Cloud SQL contiene infine i dati del
server esterno. In questo passaggio, crei i dati della richiesta e li utilizzi in un comando curl
che crea la replica Cloud SQL in Cloud SQL.
Crea i dati della richiesta
I dati della richiesta contengono informazioni di base sul tuo server esterno e sulla replica Cloud SQL in formato JSON. I dati della richiesta possono essere configurati per una replica Cloud SQL su una rete pubblica o privata e devono contenere le seguenti informazioni:
replica.json
{ "settings": { "tier": "TIER", "dataDiskSizeGb": "DISK_SIZE", "ipConfiguration": { "ipv4Enabled": "PUBLIC_IP_STATUS", "privateNetwork": "projects/PROJECT_ID/global/networks/NETWORK_NAME" }, "availabilityType": "AVAILABILITY_TYPE" }, "masterInstanceName": "SOURCE_REPRESENTATION_INSTANCE_NAME", "region": "SOURCE_REGION", "databaseVersion": "DATABASE_VERSION", "name": "REPLICA_NAME" }
esempio
{ "settings": { "tier": "db-custom-4-15360", "dataDiskSizeGb": "100" }, "masterInstanceName": "source-instance", "region": "us-central1", "databaseVersion": "POSTGRES_16", "name": "replica-instance" }
Proprietà | Descrizione |
---|---|
TIER | Il tipo di macchina su cui ospitare l'istanza di replica. Se non sai quale tipo di macchina utilizzare, inizia con db-custom-2-7680 . Se necessario, puoi
modificarne le dimensioni e altri valori supportati
in un secondo momento. |
DISK_SIZE | La dimensione dello spazio di archiviazione per la replica Cloud SQL, in GB. |
PUBLIC_IP_STATUS | Determina se all'istanza è stato assegnato un indirizzo IP pubblico. Per impostazione predefinita, il valore di questa proprietà è true .
Per disattivare l'assegnazione di un indirizzo IP pubblico per la replica, imposta il valore su false .
Se nel progetto è attivato il constraints/sql.restrictPublicIp criterio di organizzazione, per creare la replica Cloud SQL devi impostare il valore della proprietà ipv4Enabled su false . Per saperne di più sulla disattivazione dell'assegnazione dell'indirizzo IP pubblico, consulta Disattivare l'IP pubblico. |
PROJECT_ID | Se la replica Cloud SQL si trova su una rete privata,
inclusa la proprietà privateNetwork nel
replica.json file.
Per PROJECT_ID, specifica l'ID del tuo progetto in Google Cloud. |
NETWORK_NAME | Il nome della rete privata da utilizzare con la replica Cloud SQL. |
AVAILABILITY_TYPE | Il tipo di disponibilità della replica Cloud SQL. Per impostazione predefinita, il valore è ZONAL . Per impostare la replica su HA, imposta il valore su REGIONAL . Per informazioni sui valori consentiti, consulta SqlAvailabilityType.
Una volta creata una replica del server HA esterno, non puoi modificarla in una replica non HA. Lo stesso vale anche per il contrario. Non puoi modificare una replica non HA di un server esterno in una replica HA. Il failover manuale potrebbe comportare una migrazione non recuperabile se viene tentato quando l'istanza sta ancora caricando i dati iniziali o un tempo di riposo temporaneo se l'istanza esegue già la replica dall'origine. Controlla lo stato della replica. |
SOURCE_REPRESENTATION_INSTANCE_NAME | Il nome dell'istanza della rappresentazione di origine. |
SOURCE_REGION | La regione assegnata all'istanza della rappresentazione di origine. |
DATABASE_VERSION | La versione del database da utilizzare con la replica Cloud SQL. Le opzioni per questa versione sono POSTGRES_9_6 , POSTGRES_10 ,
POSTGRES_11 , POSTGRES_12 , POSTGRES_13 , POSTGRES_14 , POSTGRES_15 , POSTGRES_16 o POSTGRES_17 .
Corrisponde alla versione del database in esecuzione sul
server esterno o imposta il valore su non più di
una versione successiva. |
REPLICA_NAME | Il nome della replica Cloud SQL da creare. |
Crea la replica Cloud SQL
Prima di iniziare questo passaggio, crea un file JSON contenente i dati della richiesta di replica. Poi, per creare una replica Cloud SQL, apri un terminale Cloud Shell ed esegui questi comandi:
curl
gcloud auth login ACCESS_TOKEN="$(gcloud auth print-access-token)" curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \ --header 'Content-Type: application/json' \ --data @JSON_PATH \ -X POST \ https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT-ID/instances
esempio
gcloud auth login ACCESS_TOKEN="$(gcloud auth print-access-token)" curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \ --header 'Content-Type: application/json' \ --data @./replica.json \ -X POST \ https://sqladmin.googleapis.com/sql/v1beta4/projects/MyProject/instances
Proprietà | Descrizione |
---|---|
PROJECT_ID | L'ID del tuo progetto in Google Cloud, che deve essere uguale a quello dell'istanza di origine. |
JSON_PATH | Il percorso del file JSON contenente i dati della richiesta per la replica Cloud SQL. |
Verificare la configurazione
Per assicurarti che le istanze siano state configurate correttamente, vai alla pagina Istanze Cloud SQL.
Dovresti vedere l'istanza di rappresentazione di origine e la replica Cloud SQL in un elenco simile al seguente:
ID istanza | Tipo | IP pubblico |
---|---|---|
(-) source-representation-instance | Database principale esterno | 10.68.48.3:5432 |
replica-instance | Replica di lettura del database | 34.66.48.59 |
Assicurati inoltre di disporre dell'autorizzazione cloudsql.instances.migrate
sulla replica Cloud SQL. Questa autorizzazione è inclusa nei ruoli IAM cloudsql.admin
o cloudsql.editor
.
Aggiungi gli utenti alla replica Cloud SQL
Non puoi importare gli account utente del database dal server esterno, ma puoi crearli su una replica Cloud SQL. Esegui questa operazione prima di eseguire la replica dal server esterno.
Ottenere l'indirizzo IP in uscita della replica Cloud SQL
Puoi utilizzare l'indirizzo IP in uscita della replica Cloud SQL per creare una connessione sicura tra il server esterno e la replica Cloud SQL. Non ti verrà addebitato alcun importo per questo indirizzo IP.
Console
Per ottenere l'indirizzo IP in uscita per la replica:
-
Nella console Google Cloud, vai alla pagina Istanze Cloud SQL.
Accanto all'indirizzo IP pubblico della replica Cloud SQL, tieni premuto il cursore sopra la descrizione comando Altre informazioni e recupera l'indirizzo IP in uscita.
Tieni presente che l'indirizzo IP in uscita non è quello visualizzato nella scheda principale della replica nella console Google Cloud.
gcloud
Per ottenere l'indirizzo IP in uscita per la replica, esegui il seguente comando:
gcloud sql instances describe REPLICA_NAME --format="default(ipAddresses)"
Proprietà | Descrizione |
---|---|
REPLICA_NAME | Il nome della replica Cloud SQL di cui vuoi recuperare l'indirizzo IP pubblico in uscita. |
Consenti le connessioni in entrata sul server esterno
Affinché la replica di Cloud SQL riesca, deve connettersi al server esterno. Devi configurare il firewall di rete per il tuo server esterno in modo che accetti connessioni dall'indirizzo IP in uscita della replica Cloud SQL se si applicano le seguenti condizioni:
- Il server esterno è protetto da un firewall o da un'altra limitazione della rete.
- La replica Cloud SQL utilizza un IP pubblico.
Per connetterti alla replica Cloud SQL, utilizza l'indirizzo IP primario della replica. Questo indirizzo IP viene visualizzato nella console Google Cloud.
Aggiorna l'istanza di rappresentazione di origine per consentire la replica alla replica Cloud SQL
Dopo aver configurato l'istanza di rappresentazione di origine per la replica Cloud SQL, potrebbe essere necessario aggiornare l'istanza di rappresentazione di origine. Ad esempio, questi scenari richiedono un aggiornamento delle configurazioni:
- L'host, la porta o l'IP del server esterno cambiano.
- Vuoi utilizzare un altro utente di replica PostgreSQL.
- La password dell'utente di replica PostgreSQL cambia.
- I certificati SSL utilizzati per connettersi in modo sicuro al server esterno cambiano.
Esegui il seeding della replica Cloud SQL
Per il caricamento iniziale dei dati dal server esterno nella replica Cloud SQL, utilizza un'importazione gestita. Utilizza un servizio che estrae i dati dal server esterno e li importa direttamente nell'istanza Cloud SQL. Per ulteriori informazioni, consulta Utilizzo di un'importazione gestita per configurare la replica da database esterni.
Monitora replica
Quando la replica Cloud SQL completa il caricamento iniziale dei dati, si connette al server esterno e applica tutti gli aggiornamenti apportati dopo l'operazione di esportazione. Verifica lo stato della replica.
È importante controllare lo stato della replica prima di promuovere la replica a un'istanza autonoma. Se la procedura di replica non viene completata correttamente, una replica promossa non contiene tutte le modifiche apportate sul server esterno.
Se il ritardo nella replica non tende a 0,
intervieni per risolverlo.
Ti consigliamo di controllare queste metriche: /postgresql/external_sync/initial_sync_complete
,
postgresql/external_sync/max_replica_byte_lag
e
database/replication/state
. Visualizza l'elenco delle metriche Cloud SQL.
Una volta che la replica Cloud SQL ha raggiunto il server esterno e non c'è ritardo nella replica sulla replica Cloud SQL, connettiti al database. Esegui i comandi del database appropriati per assicurarti che i contenuti siano come previsto rispetto al server esterno. Mantieni il tuo server esterno fino al completamento delle convalide necessarie.
Configurare una replica a cascata
Dopo la migrazione, puoi creare repliche di lettura a cascata nella replica Cloud SQL prima di promuovere la replica Cloud SQL.
Per creare una replica a cascata, esegui i seguenti comandi:
Console
-
Nella console Google Cloud, vai alla pagina Istanze Cloud SQL.
- Fai clic sulla scheda Repliche per la replica che fungerà da principale per la replica che vuoi creare.
- Fai clic su Crea replica.
- Nella pagina Crea replica di lettura, aggiorna l'ID istanza e qualsiasi altra opzione di configurazione, inclusi il nome, la regione e la zona.
- Fai clic su Crea.
Cloud SQL crea una replica. Tornerai alla pagina dell'istanza per la replica principale.
- Segui i passaggi 4-6 per ogni nuova replica con struttura a cascata da creare.
gcloud
- Crea la nuova replica specificando la replica Cloud SQL come istanza principale utilizzando il flag
--master-instance-name
: - REPLICA_NAME: l'ID univoco della replica che stai creando
- PARENT_REPLICA_NAME: il nome della replica Cloud SQL
Dopo aver creato la replica, puoi vedere che le modifiche apportate all'istanza principale vengono replicate in tutte le repliche della catena di repliche con gerarchia.
gcloud sql instances create REPLICA_NAME \ --master-instance-name=PARENT_REPLICA_NAME \
curl
- Per creare una replica sotto la replica principale, modifica il seguente esempio di codice JSON e salvalo in un file denominato
request.json
:{ "masterInstanceName": "EXTERNAL_SERVER_REPLICA_NAME", "project": "PROJECT_ID", "name": "REPLICA_NAME", "region": "REPLICA_REGION", "settings": { "tier": "MACHINE_TYPE", } }
- Esegui questo comando:
curl -X POST -H "Authorization: Bearer "$(gcloud auth print-access-token) -H "Content-Type: application/json; charset=utf-8" -d @request.json "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances"
Promuovi la replica
Per promuovere la replica, segui questi passaggi:
- Promuovi la replica a un'istanza principale.
- Aggiungi repliche di lettura all'istanza.
- (Facoltativo) Configura l'istanza per l'alta disponibilità (HA).
Per evitare ulteriori tempi di riposo, puoi attivare l'HA durante la configurazione di una replica impostando
AVAILABILITY_TYPE
suREGIONAL
.
Limitazioni
Se installi estensioni sui database di origine esterni non supportate da Cloud SQL, quando esegui la migrazione dei database a un'istanza di destinazione, Cloud SQL non eseguirà la migrazione di queste estensioni. Per garantire una migrazione senza problemi, verifica che nessun oggetto o applicazione faccia riferimento alle estensioni. Prima di procedere con la migrazione, ti consigliamo di rimuovere le estensioni e tutti i riferimenti dai database di origine.
Per saperne di più sulle estensioni supportate da Cloud SQL, consulta Configurare le estensioni PostgreSQL.
Se installi l'estensione
pg_cron
sui database di origine esterni, quando esegui la migrazione dei database a un'istanza di destinazione, Cloud SQL non esegue la migrazione dell'estensione o delle impostazionicron
associate. Dopo aver eseguito la migrazione dei database e aver promosso la replica, Google consiglia di riattivare l'estensionepg_cron
su ogni database sottoposto a migrazione.
Passaggi successivi
- Scopri come utilizzare un'importazione gestita per configurare la replica da database esterni.