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 della 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 replicarsi dal server esterno.
Le seguenti impostazioni di sincronizzazione esterna devono essere corrette.
- Connettività tra la replica di Cloud SQL e il server esterno
- Privilegi utente per la 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:
arricciatura
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"
}' \
-X POST \
https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/REPLICA_INSTANCE_ID/verifyExternalSyncSettings
un 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/myreplica/verifyExternalSyncSettings
Queste chiamate restituiscono un elenco di tipo sql#externalSyncSettingErrorList
.
Se l'elenco è vuoto, non ci sono errori. Una risposta senza errori sarà simile alla seguente:
{ "kind": "sql#externalSyncSettingErrorList" }
Proprietà | Descrizione |
---|---|
SYNC_MODE | Assicurati di poter mantenere sincronizzati la replica Cloud SQL e il server esterno dopo la configurazione della 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 delle tabelle di un database. Sono disponibili i seguenti valori:
Nota: il valore predefinito di questo parametro è |
PROJECT_ID | L'ID del tuo progetto Google Cloud. |
REPLICA_INSTANCE_ID | L'ID della tua replica Cloud SQL. |
Avvia la replica sul server esterno
Dopo aver verificato di poter replicare dal server esterno, avvia la replica. La velocità di esecuzione della replica per il processo di importazione iniziale è fino a 500 GB all'ora. Tuttavia, questa velocità può variare in base al livello di macchina, alle dimensioni del disco dati, alla velocità effettiva di rete e alla natura del database.
arricciatura
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
un 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 la configurazione della replica. |
SKIP_VERIFICATION | Indica se saltare 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à di trasferimento dei dati delle tabelle di un database. Sono disponibili i seguenti valori:
Nota: il valore predefinito di questo parametro è |
PROJECT_ID | L'ID del tuo progetto Google Cloud. |
REPLICA_INSTANCE_ID | L'ID della tua replica Cloud SQL. |
Monitoraggio della migrazione
Una volta avviata la replica dal server esterno, devi monitorarla. Per saperne di più, consulta Monitoraggio della replica. Puoi quindi completare la migrazione.
Risolvere i problemi
Prendi in considerazione le seguenti opzioni per la risoluzione dei problemi:
Problema | Risoluzione dei problemi |
---|---|
La replica di lettura non ha avviato la replica al momento della creazione. | È probabile che i file di log contengano un errore più specifico. Ispeziona i log in Cloud Logging per trovare l'errore effettivo. |
Impossibile creare la replica di lettura: errore non validoFlagValue. | Uno dei flag nella richiesta non è valido. Potrebbe essere un flag che hai fornito esplicitamente o un flag impostato su un valore predefinito.
Innanzitutto, verifica che il valore del flag Se il flag |
Impossibile creare la replica di lettura: errore sconosciuto. | È probabile che i file di log contengano un errore più specifico.
Ispeziona i log in Cloud Logging per trovare l'errore effettivo.
Se l'errore è: |
Lo spazio sul disco è esaurito. | La dimensione del disco dell'istanza principale può diventare piena durante la creazione della replica. Modifica l'istanza principale per eseguirne l'upgrade a una dimensione del disco più grande. |
Lo spazio su disco aumenta in modo significativo. | Uno slot che non viene utilizzato attivamente per monitorare i dati fa sì che PostgreSQL trattiene i segmenti WAL per un tempo indeterminato, causando un'aumento infinito dello spazio su disco. Se utilizzi le funzionalità di replica e decodifica logica in Cloud SQL, gli slot di replica vengono creati e eliminati automaticamente. Per rilevare gli slot di replica inutilizzati, puoi eseguire una query sulla visualizzazione di sistema di pg_replication_slots e applicare un filtro sulla colonna active . Gli slot inutilizzati possono essere eliminati per rimuovere i segmenti WAL utilizzando il comando pg_drop_replication_slot .
|
L'istanza di replica utilizza troppa memoria. | La replica utilizza la memoria temporanea per memorizzare nella cache le operazioni di lettura più richieste, il che può portare a utilizzare più memoria rispetto all'istanza principale.
Riavvia l'istanza di replica per recuperare lo spazio di memoria temporaneo. |
Replica 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 della replica è costantemente elevato. | Il carico di scrittura è troppo elevato per essere gestito dalla replica. Il ritardo della replica si verifica quando il thread SQL su una replica non è in grado di stare al passo con il thread di IO. Alcuni tipi di query o carichi di lavoro possono causare un ritardo di replica elevato, temporaneo o permanente, per un determinato schema. Alcune delle cause più comuni del ritardo di replica sono:
Ecco alcune possibili soluzioni:
|
Errori durante la ricostruzione degli indici in PostgreSQL 9.6. | Ricevi un errore da PostgreSQL che ti informa che devi ricreare un determinato indice. Questa operazione può essere eseguita solo sull'istanza principale. Se crei una nuova istanza di replica, a breve riceverai di nuovo lo stesso errore.
Gli indici hash non vengono propagati alle repliche nelle versioni PostgreSQL precedenti alla 10.
Se devi utilizzare gli indici hash, esegui l'upgrade a PostgreSQL 10 e versioni successive. Altrimenti, 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, la query SELECT * from pg_stat_activity where state = 'active' and pid = XXXX and username = 'cloudsqlreplica' dovrebbe essere eseguita continuamente sull'istanza principale.
|
La creazione della replica non riesce a causa del timeout. | Le transazioni non impegnate a lunga esecuzione nell'istanza principale possono causare la mancata creazione della replica di lettura.
Ricrea la replica dopo aver arrestato tutte le query in esecuzione. |
Se l'istanza principale e la replica hanno dimensioni vCPU diverse, potrebbero verificarsi problemi di prestazioni delle query, poiché lo strumento di ottimizzazione delle query prende in considerazione le dimensioni delle vCPU. |
Per risolvere il problema, completa la seguente procedura:
Se si tratta di una query specifica, modifica la query. Ad esempio, puoi cambiare l'ordine dei join per vedere se ottieni un rendimento migliore. |
Esamina i log di replica
Quando verifichi le impostazioni di replica, vengono generati i log.
Per visualizzare questi log:
Vai al visualizzatore log nella console Google Cloud.
- 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, conferma quanto segue:
- Qualsiasi firewall sul server esterno è configurato in modo da consentire le connessioni dall'indirizzo IP in uscita della replica Cloud SQL.
- La configurazione SSL/TLS è corretta.
- L'utente, l'host e la password di replica 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 di Cloud SQL.