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 in questa pagina. Al termine, puoi gestire e monitorare l'istanza di rappresentazione di origine come faresti con qualsiasi altra istanza Cloud SQL.
Prima di iniziare
Prima di iniziare, completa i seguenti 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"
}' \
-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"
}' \
-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 è 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à di trasferimento dei dati dalle tabelle di un database. Sono disponibili i seguenti valori:
Nota:il valore predefinito per questo parametro è |
PROJECT_ID | L'ID del tuo progetto Google Cloud. |
REPLICA_INSTANCE_ID | L'ID della replica Cloud SQL. |
Avvia la replica sul server esterno
Dopo aver verificato che puoi 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 di dati, al throughput 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 la configurazione della replica. |
SKIP_VERIFICATION | 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 dalle tabelle di un database. Sono disponibili i seguenti valori:
Nota:il valore predefinito per questo parametro è |
PROJECT_ID | L'ID del tuo progetto Google Cloud. |
REPLICA_INSTANCE_ID | L'ID della replica Cloud SQL. |
Monitoraggio della migrazione
Una volta avviata la replica dal server esterno, devi monitorarla. Per scoprire di più, consulta Monitorare la replica. A questo punto puoi completare la migrazione.
Risoluzione dei problemi
Valuta le seguenti opzioni per la risoluzione dei problemi:
Problema | Risoluzione dei problemi |
---|---|
La replica di lettura non è stata avviata al momento della creazione. | Probabilmente è presente un errore più specifico nei file di log. Esamina i log in Cloud Logging per trovare l'errore effettivo. |
Impossibile creare la replica di lettura: errore invalidFlagValue. | Uno degli indicatori nella richiesta non è valido. Potrebbe trattarsi di un flag fornito esplicitamente o di un flag impostato su un valore predefinito.
Innanzitutto, controlla che il valore del flag Se il flag |
Impossibile creare la replica di lettura - errore sconosciuto. | Probabilmente è presente un errore più specifico nei file di log.
Esamina i log in Cloud Logging per trovare l'errore effettivo.
Se l'errore è: |
Lo spazio sul disco è esaurito. | Le dimensioni del disco dell'istanza principale possono esaurirsi durante la creazione della replica. Modifica l'istanza principale per eseguirne l'upgrade a una dimensione del disco maggiore. |
Lo spazio su disco aumenta in modo significativo. | Uno slot non utilizzato attivamente per monitorare i dati fa sì che PostgreSQL trattenga i segmenti WAL a tempo indeterminato, causando un aumento illimitato dello spazio su disco. Se utilizzi le funzionalità di decodifica e replica logica in Cloud SQL, gli slot di replica vengono creati e eliminati automaticamente. Gli slot di replica inutilizzati possono essere rilevati eseguendo una query sulla visualizzazione di sistema
pg_replication_slots
e applicando un filtro alla colonna active . Gli slot inutilizzati possono essere eliminati per rimuovere i segmenti WAL utilizzando il comando pg_drop_replication_slot .
|
L'istanza replica utilizza troppa memoria. | La replica utilizza memoria temporanea per memorizzare nella cache le operazioni di lettura spesso richieste, il che può portare a utilizzare più memoria dell'istanza principale.
Riavvia l'istanza replica per recuperare lo spazio di memoria temporaneo. |
La replica è stata interrotta. | È stato raggiunto il limite di spazio di archiviazione massimo e l'aumento automatico dello spazio di archiviazione non è abilitato.
Modifica l'istanza per attivare |
Il ritardo nella replica è costantemente elevato. | Il carico di scrittura è troppo elevato per la replica. Il ritardo nella replica si verifica quando il thread SQL su una replica non è in grado di stare al passo con il thread I/O. Alcuni tipi di query o carichi di lavoro possono causare un ritardo elevato della replica temporaneo o permanente per un determinato schema. Ecco alcune delle cause più comuni del ritardo nella replica:
Ecco alcune possibili soluzioni:
|
Errori durante la ricostruzione degli indici in PostgreSQL 9.6. | PostgreSQL ti comunica che devi ricostruire un
determinato indice. Questa operazione può essere eseguita solo nell'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 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, la query SELECT * from pg_stat_activity where state = 'active' and pid = XXXX and username = 'cloudsqlreplica' dovrebbe essere eseguita continuamente nell'istanza principale.
|
La creazione della replica non riesce a causa di un timeout. | Le transazioni non committate di lunga durata nell'istanza principale possono causare la mancata 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 delle query prende in considerazione le dimensioni vCPU. |
Per risolvere il problema, svolgi i seguenti passaggi:
Se si tratta di una query specifica, modificala. Ad esempio, puoi modificare l'ordine delle unioni per verificare se il rendimento migliora. |
Esamina i log di replica
Quando verifichi le impostazioni di replica, vengono generati i log.
Per visualizzare questi log, segui questi passaggi:
Vai al visualizzatore log nella console Google Cloud.
- Seleziona la replica Cloud SQL dal menu a discesa Instance (Instanza).
- Seleziona il file log
replication-setup.log
.
Se la replica Cloud SQL non riesce a connettersi al server esterno, conferma quanto segue:
- Qualsiasi firewall sul server esterno sia configurato per 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 siano 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 come promuovere la replica Cloud SQL.