Questa pagina descrive come configurare e utilizzare un'importazione gestita per i dati durante la replica da un server esterno a Cloud SQL.
Devi completare tutti i passaggi descritti in questa pagina. Al termine, puoi amministrare e monitorare l'istanza di rappresentazione di origine come faresti con qualsiasi altra istanza Cloud SQL.
Prima di iniziare
Prima di iniziare, completa questi passaggi:
Verifica le impostazioni di replica
Al termine della configurazione, assicurati che la replica Cloud SQL possa eseguire la replica dal server esterno.
Le seguenti impostazioni di sincronizzazione esterna devono essere corrette.
- Connettività tra la replica Cloud SQL e il server esterno
- Privilegi utente di replica
- Compatibilità delle versioni
- La replica Cloud SQL non è già in fase di replica
Per verificare queste impostazioni, apri un terminale Cloud Shell e inserisci 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 '{
"syncMode": "SYNC_MODE",
"syncParallelLevel": "SYNC_PARALLEL_LEVEL",
"selectedObjects": "SELECTED_OBJECTS"
}' \
-X POST \
https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/REPLICA_INSTANCE_ID/verifyExternalSyncSettings
esempio
gcloud auth login
ACCESS_TOKEN="$(gcloud auth print-access-token)"
curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
--header 'Content-Type: application/json' \
--data '{
"syncMode": "online",
"syncParallelLevel": "optimal",
"selectedObjects":[{"database":"db1"}, {"database":"db2"}]
}' \
-X POST \
https://sqladmin.googleapis.com/sql/v1beta4/projects/myproject/instances/myreplica/verifyExternalSyncSettings
Queste chiamate restituiscono un elenco di tipo sql#externalSyncSettingErrorList.
Se l'elenco è vuoto, non sono presenti errori. Una risposta senza errori è simile alla seguente:
{ "kind": "sql#externalSyncSettingErrorList" }
| Proprietà | Descrizione |
|---|---|
| SYNC_MODE | Assicurati di poter mantenere sincronizzati la replica Cloud SQL e il server esterno dopo aver configurato la replica. Le modalità di sincronizzazione includono EXTERNAL_SYNC_MODE_UNSPECIFIED, ONLINE e OFFLINE. |
| SYNC_PARALLEL_LEVEL | Verifica l'impostazione che controlla la velocità con cui vengono trasferiti i dati dalle tabelle di un database. Sono disponibili i seguenti valori:
Nota: il valore predefinito di questo parametro è |
| SELECTED_OBJECTS | Un elenco di oggetti separati da virgole, che specifica i database di cui stai eseguendo la migrazione dall'istanza di rappresentazione di origine all'istanza Cloud SQL di destinazione. Se non utilizzi questo parametro o fornisci un elenco vuoto come valore del parametro, allora viene eseguita la migrazione di tutti i database dall'origine alla destinazione. |
| PROJECT_ID | L'ID del tuo Google Cloud progetto. |
| REPLICA_INSTANCE_ID | L'ID della tua replica Cloud SQL. |
Aggiorna un'istanza di rappresentazione di origine
Per aggiornare i database di cui vuoi eseguire la migrazione dall'istanza di rappresentazione di origine all'istanza Cloud SQL di destinazione, aggiorna l'elenco dei nomi dei database associati al parametro selectedObjects. Se non utilizzi questo parametro o fornisci un elenco vuoto come valore del parametro, viene eseguita la migrazione di tutti i database dall'origine alla destinazione.
source.json
{ "name": "SOURCE_NAME", "region": "REGION", "databaseVersion": "DATABASE_VERSION", "onPremisesConfiguration": { "selectedObjects": "SELECTED_OBJECTS", "username": "USERNAME", "password": "PASSWORD" } }
esempio
// example of source.json for external server that
// - initiates replication from a Cloud SQL managed import
// - doesn't use SSL/TLS
{
"name": "cloudsql-source-instance",
"region": "us-central1",
"databaseVersion": "POSTGRES_9_6",
"onPremisesConfiguration": {
"selectedObjects":[{"database":"db1"}, {"database":"db3"}],
"username": "newReplicationUser",
"password": "525#@%*@"
}
}
| Proprietà | Descrizione |
|---|---|
| SOURCE_NAME | Il nome dell'istanza di rappresentazione di origine. |
| REGION | La regione in cui si trova l'istanza di 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. |
| SELECTED_OBJECTS | Un elenco aggiornato di oggetti separati da virgole, che specifica i database di cui stai eseguendo la migrazione dall'istanza di rappresentazione di origine all'istanza Cloud SQL di destinazione. |
| USERNAME | L'account utente di replica sul server esterno. |
| PASSWORD | La password dell'account. |
Quindi, per modificare l'istanza di rappresentazione di origine in Cloud SQL, apri un terminale Cloud Shell e inserisci 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 |
|---|---|
| JSON_PATH | Il percorso del file JSON che contiene i dati della richiesta per il server esterno. |
| PROJECT_ID | L'ID del tuo Google Cloud progetto. |
| SOURCE_NAME | Il nome dell'istanza di rappresentazione di origine. |
Avvia la replica sul server esterno
Dopo aver verificato di poter eseguire la replica dal server esterno, avvia la replica. La velocità di esecuzione della replica per la procedura di importazione iniziale è fino a 500 GB all'ora. Tuttavia, questa velocità può variare in base al livello della macchina, alle dimensioni del disco dati, alla velocità effettiva della rete e alla natura del database.
curl
gcloud auth login
ACCESS_TOKEN="$(gcloud auth print-access-token)"
curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
--header 'Content-Type: application/json' \
--data '{
"syncMode": "SYNC_MODE",
"skipVerification": "SKIP_VERIFICATION",
"syncParallelLevel": "SYNC_PARALLEL_LEVEL"
}' \
-X POST \
https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/REPLICA_INSTANCE_ID/startExternalSync
esempio
gcloud auth login
ACCESS_TOKEN="$(gcloud auth print-access-token)"
curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
--header 'Content-Type: application/json' \
--data '{
"syncMode": "online",
"syncParallelLevel": "optimal"
}' \
-X POST \
https://sqladmin.googleapis.com/sql/v1beta4/projects/MyProject/instances/replica-instance/startExternalSync
| Proprietà | Descrizione |
|---|---|
| SYNC_MODE | Verifica di poter mantenere sincronizzati la replica Cloud SQL e il server esterno dopo aver configurato la replica. |
| SKIP_VERIFICATION | Se saltare o meno il passaggio di verifica integrato prima di sincronizzare i dati. Questo parametro è consigliato solo se hai già verificato le impostazioni di replica. |
| SYNC_PARALLEL_LEVEL | Fornisci un'impostazione che controlla la velocità con cui vengono trasferiti i dati dalle tabelle di un database. Sono disponibili i seguenti valori:
Nota: il valore predefinito di questo parametro è |
| PROJECT_ID | L'ID del tuo Google Cloud progetto. |
| REPLICA_INSTANCE_ID | L'ID della tua replica Cloud SQL. |
Monitoraggio della migrazione
Dopo aver avviato la replica dal server esterno, devi monitorarla. Per saperne di più, consulta Monitoraggio della replica. A questo punto puoi completare la migrazione.
Risoluzione dei problemi
Valuta le seguenti opzioni di risoluzione dei problemi:
| Problema | Risoluzione dei problemi |
|---|---|
| La replica di lettura non ha iniziato la replica durante la creazione. | Probabilmente nei file di log è presente un errore più specifico. Esamina i log in Cloud Logging per trovare l'errore effettivo. |
| Impossibile creare la replica di lettura - errore invalidFlagValue. | Uno dei flag nella richiesta non è valido. Potrebbe trattarsi di un flag fornito esplicitamente o di uno impostato su un valore predefinito.
Innanzitutto, verifica che il valore del flag Se il flag |
| Impossibile creare la replica di lettura - errore sconosciuto. | Probabilmente nei file di log è presente un errore più specifico.
Esamina i log in
Cloud Logging per trovare l'errore effettivo.
Se l'errore è: |
| Il disco è pieno. | Le dimensioni del disco dell'istanza principale possono diventare piene durante la creazione della replica. Modifica l'istanza principale per eseguire l'upgrade a dimensioni del disco maggiori. |
| Lo spazio su disco aumenta in modo significativo. | Uno slot non utilizzato attivamente per monitorare i dati fa sì che PostgreSQL mantenga indefinitamente i segmenti WAL, causando una crescita indefinita dello spazio su disco. Se utilizzi
le funzionalità di replica logica e decodifica in Cloud SQL, gli slot di replica vengono
creati ed eliminati automaticamente. Gli slot di replica inutilizzati possono essere rilevati eseguendo una query sulla
pg_replication_slots
visualizzazione di sistema e filtrando la colonna active. Gli slot
inutilizzati possono essere eliminati per rimuovere i segmenti WAL utilizzando il
pg_drop_replication_slot comando.
|
| L'istanza di replica utilizza troppa memoria. | La replica utilizza la memoria temporanea per memorizzare nella cache le operazioni di lettura richieste di frequente, il che può comportare un utilizzo di memoria maggiore rispetto all'istanza principale.
Riavvia l'istanza di replica per recuperare lo spazio di memoria temporaneo. |
| La replica è stata interrotta. | È stato raggiunto il limite massimo di spazio di archiviazione e l'aumento automatico dello spazio di archiviazione
non è abilitato.
Modifica l'istanza per abilitare |
| Il ritardo di replica è costantemente elevato. | Il carico di scrittura è troppo elevato per la replica. Il ritardo di replica
si verifica quando il thread SQL su una replica non riesce a tenere il passo con il
thread IO. Alcuni tipi di query o carichi di lavoro possono causare un ritardo di replica elevato temporaneo o
permanente per uno schema specifico. Alcune delle cause tipiche
del ritardo di replica sono:
Alcune possibili soluzioni includono:
|
| Errori durante la ricostruzione degli indici in PostgreSQL 9.6. | Ricevi un errore da PostgreSQL che ti informa che devi ricostruire un
indice specifico. Questa operazione può essere eseguita solo sull'istanza principale. Se crei una nuova istanza di replica, riceverai di nuovo lo stesso errore a breve.
Gli indici hash
non vengono propagati alle repliche nelle versioni di PostgreSQL precedenti alla 10.
Se devi utilizzare gli indici hash, esegui l'upgrade a PostgreSQL 10 o versioni successive. In caso contrario, se vuoi utilizzare anche le repliche, non utilizzare gli indici hash in PostgreSQL 9.6. |
| La query sull'istanza principale è sempre in esecuzione. | Dopo aver creato una replica, è previsto che la query SELECT * from pg_stat_activity where state = 'active' and pid = XXXX and username = 'cloudsqlreplica' venga eseguita continuamente sull'istanza principale.
|
| La creazione della replica non riesce a causa del timeout. | Le transazioni non sottoposte a commit a lunga esecuzione sull'istanza principale possono causare
il mancato completamento della creazione della replica di lettura.
Ricrea la replica dopo aver interrotto tutte le query in esecuzione. |
| Se l'istanza principale e la replica hanno dimensioni vCPU diverse, potrebbero verificarsi problemi di prestazioni delle query perché l'ottimizzatore di query tiene conto delle dimensioni vCPU. |
Per risolvere questo problema, completa i seguenti passaggi:
Se si tratta di una query specifica, modificala. Ad esempio, puoi modificare l'ordine dei join per verificare se ottieni prestazioni migliori. |
Esamina i log di replica
Quando verifichi le impostazioni di replica, vengono generati i log.
Per visualizzare questi log, procedi nel seguente modo:
Vai al visualizzatore log nella Google Cloud console.
- Seleziona la replica Cloud SQL dal menu a discesa Istanza.
- Seleziona il file di log
replication-setup.log.
Se la replica Cloud SQL non riesce a connettersi al server esterno, verifica quanto segue:
- Qualsiasi firewall sul server esterno è configurato per consentire le connessioni dall'indirizzo IP in uscita della replica Cloud SQL .
- La configurazione SSL/TLS è corretta.
- L'utente di replica, l'host e la password sono corretti.
Passaggi successivi
- Scopri di più sull'aggiornamento di un'istanza.
- Scopri di più sulla gestione delle repliche.
- Scopri di più sul monitoraggio delle istanze.
- Scopri di più sulla promozione della replica Cloud SQL.