Cloud SQL
ABC

Google Cloud SQL Cloud SQL e' un servizio in Cloud di Google per ospitare database. Cloud SQL e' tra i piu' conosciuti servizi di Cloud Database per completezza dell'offerta, ricchezza di funzionalita', e presenza sul mercato.

Con Cloud SQL possono essere ospitati database di tecnologie differenti (MySQL, PostgreSQL, MS-SQL) con dimensioni facilmente adattabili e scalabili a tutte le necessita'. Su Cloud SQL sono disponibili una serie di servizi di gestione (eg. backup, monitoring, security, upgrade) che semplificano le incombenze del DBA con evidenti risparmi e minori rischi.

I vantaggi dei database in Cloud sono tali che da piu' esperti e' stato previsto un forte trend di crescita delle basi dati in Cloud.

Questo documento introduttivo presenta alcuni aspetti di Cloud SQL: Introduzione, Database Engine, Versioni supportate, Machine type, Installazione e configurazione, Gestione, Monitoring, Regioni, AZ ed HA.

L'argomento e' molto ampio e richiederebbe una trattazione molto piu' lunga di questa paginetta... per maggiori informazioni e' sicuramente utile l'ottima documentazione online, disponibile anche in italiano, di cui abbiamo riportato i principali link nei paragrafi seguenti.

Introduzione

Cloud SQL fornisce i servizi di database gestito in Cloud.

Il servizio di Cloud SQL utilizza una piattaforma comune dal punto di vista del networking, della accessi, delle API (Application Program Interface), degli altri servizi Cloud di Google. Con Cloud SQL non si hanno a disposizione VM (Virtual Machine) complete ma unicamente basi dati gia' installate e configurate. Inoltre sono disponibili una serie di servizi integrati (installazione, backup, update/upgrade, monitoring, tuning/sizing, ...) che riducono in modo significativo le attivita' del DBA.

Tutte le basi dati vengono gestite in modo semplice e consistente dalla console grafica oppure con la CLI oppure con le API.
Il DBA del cliente ha un accesso amministrativo alla base dati ma in realta' non non e' un superutente come su un sistema locale. Non potendo accedere al sistema operativo sottostante non si ha la possibilita' di eseguire controlli da linea di comando, lanciare script, impostare crontab, ... mentre e' necessario utilizzare le interfacce preposte per questi compiti. Anche accedendo alla base dati i GRANT non sono sono totali perche' i diritti piu' elevati sono riservati alle utenze di gestione di Cloud SQL. Anche se puo' sembrare un limite in realta' con gli utenti amministrativi e' possibile eseguire tutte le normali attivita' di gestione e semplicemente non e' piu' necessaria alcuna attivita' sistemistica esterna al database.

Oltre ad una gestione semplificata l'altro grande vantaggio e' la scalabilita' della piattaforma che puo' crescere o diminuire a seconda delle esigenze consentendo risparmi spesso molto significativi.

Riassumendo ecco l'elenco dei servizi forniti da Cloud SQL ed importanti per chi si occupa del TCO: scalabilita', alta affidabilita', backup, installazione DBMS, patch DBMS, installazione OS, patch OS, manutenzione server, rete/storage/elettricita'/condizionamento/...

Database Engine

Con Cloud SQL sono disponibili i seguenti database:

In realta' l'offerta di database su Google Cloud e' molto piu' ampia perche' oltre a Cloud SQL sono disponibili database sviluppati da Google per il cloud come Spanner, BigQuery, AlloyDB. Importante e' il recente accordo per fornire anche Oracle con un'implementazione multicloud. Ma sono disponibili molteplici altri servizi sul Cloud di Google come il database colonnare ClickHouse, PostgresML, ...
Insomma le alternative disponibili per i servizi database in GCP sono veramente parecchie.

In questa paginetta vedremo le caratteristiche del servizio Cloud SQL AlloyDB!

Which GCP Database Should I Use?

(Fonte: Google)

In ogni caso MySQL, PostgreSQL e SQL Server sono tra i piu' diffusi database relazionali... ma quali versioni sono disponibili? Continuate a leggere!

Orientarsi nel labirinto delle versioni disponibili e supportate per ogni database non e' semplice. Ogni vendor ha le sue modalita' con tempi di rilascio differenti e modalita' di upgrade specifiche. Cloud SQL rende disponibili con regolarita' gli aggiornamenti scegliendo quelli piu' significativi e, qualche volta, introducendo ulteriori patch.
Cloud SQL semplifica il compito del DBA rendendo disponibili i principali update ed automatizzando la loro applicazione, naturalmente a seconda del database engine e del tipo di upgrade. Poiche' e' piu' facile da fare da interfaccia grafica che da descrivere non riportatiamo ulteriori dettagli...

La tabella seguente riporta le versioni attualmente supportate di ogni database engine su Cloud SQL:

(Sources: Cloud SQL Home DB Versions Release Notes )

Database
Supported Versions
Date from
Notes
MySQL 5.6.51, 5.7.44. 8.0.18, 8.0.26, 8.0.27, 8.0.28, 8.0.29 (dep.), 8.0.30, 8.0.31 (default), 8.0.32, 8.0.33, 8.0.34, 8.0.35, 8.0.36, 8.0.37 2016-08
PostgreSQL 9.6.24, 10.23, 11.22, 12.19, 13.15, 14.12, 15.7, 16.3 (default)2017-05
SQL Server SQL Server 2017 CU31, SQL Server 2019 CU26 (default), SQL Server 2022 CU12 - Standard (default), Enterprise, Express, Web2019-10

Naturalmente la tabella e' in costante variazione... controllate questo documento per gli ultimi aggiornamenti di Cloud SQL ed anche dei diversi motori di database: MySQL, PostgreSQL, SQL Server.

Ora sappiamo cosa offre Cloud SQL, ma su che macchina verra' installato il nostro database? Continuate a leggere!

Machine Type

La dimensione conta. Lo sanno tutti e piu' e' grande piu' si paga.

Cloud SQL viene offerto in due edition per fornire il livello richiesto di prestazioni ed affidabilita'.

Con Cloud SQL Enterprise Edition vengono forniti sistemi general-purpose fino a 96 vCPU e 624GB di RAM con uno SLA del 99.95%. Con Cloud SQL Enterprise Plus Edition vengono forniti sistemi performance-optimized o memeory-optimized fino a 128 vCPU e 864GB di RAM, una data cache su dischi locali SSD, il tutto con uno SLA del 99.99%. Le configurazioni disponibili sono ottimizzate per i database con rapporti CPU/RAM e stack ben bilanciati.

La scelta dell'edition e del machine tipe dipende dai requisiti ma e' molto semplice scalare se necessario.

Dal punto di vista di dimensionamento dello storage... con Cloud SQL e' molto semplice: si scala fino a 64TB [NdA tranne che sui modelli piu' limitati di machine types: con i shared-core si arriva fino a circa 3TB].

Ora sappiamo cosa offre Cloud SQL, ma come si installa un nuovo database? Continuate a leggere!

Installazione e configurazione

L'installazione di un DB Engine su Cloud SQL non richiede alcuna competenza tecnica specifica e si effettua solo con qualche click (le competenze servono... ma non per installare ;-). Anche la configurazione iniziale della base dati, che tipicamente richiede conoscenze specifiche sul motore, e' molto semplificata. Infatti Cloud SQL imposta in automatico i principali parametri di tuning in modo ottimizzato a seconda dell'Instance Type scelto.

Cloud SQL - Choose Database Engine

Scelto il motore di database si specificano ulteriori opzioni, per molte delle quali sono gia' adatti i default, e si lancia la creazione dell'istanza: Cloud SQL - Create Database Instance

L'impostazione dei Flag ed un sizing preciso richiedono competenze DBA, ma in molti casi le impostazioni di default sono adeguate per la maggioranza delle configurazioni [NdA inoltre la flessibilita' nella scelta machine type e la scalabilita' dello storage aiutano a correggere eventuali errori].

Naturalmente non mi sono fidato... quindi ho controllato i principali parametri di tuning dei database (MySQL, PostgreSQL) e bisogna ammettere che i tecnici di Google hanno fatto un ottimo lavoro... sono veramente pochi i casi in cui e' necessario personalizzare le configurazioni.
Rispetto alle versioni on-premise cambiano alcuni parametri e sopratutto la modalita' di configurazione che risulta molto semplice ed uniforme per tutte le basi dati. I piu' esperti noteranno che alcuni parametri non sono configurabili ma questo e' perche' vengono calcolati in base al machine type: ad esempio shared_buffer di PostgreSQL dipendono dalle risorse disponibili sul sistema ed in particolare dalla memoria. Per effettuare la configurazione di un'istanza Cloud SQL non e' necessario modificare alcun file. Le configurazioni si effettuano in modo molto semplice con i Flag:

Cloud SQL Advanced configuration       Cloud SQL New Flag

Con PostgreSQL oltre ai Flag sono naturalmente disponibili le extension che si attivano direttamente da SQL. L'elenco delle extension disponibili e' molto ampio perche' oltre alle piu' utili estensioni core (eg. ) sono incluse estensioni che facilitano l'utilizzo in cloud (eg. )

Per accedere alla base dati si utilizzano i programmi client piu' tipici del motore scelto senza particolari differenze rispetto ad un'installazione on-premises. Dal punto di vista del networking viene utilizzato il Virtual Private Cloud (VPC). E' sufficiente utilizzare l'indirizzo di Endpoint e la porta corretta per connettersi alla base dati anche se e' consigliato l'utilizzo di un proxy.

Accessi

La configurazione degli accessi di rete e' costituita principalmente dal VPC (Virtual Private Cloud) assegnato all'utente. Se l'istanza deve essere acceduta da Internet viene associato un auth proxy, un gateway, definita una route table, le ACL, ... Sono argomenti che non trattiamo in questa paginetta che e' rivolta alle basi dati, ma che comunque sono facilmente configurabili con i wizard della console.

Dal punto di vista dell'accesso applicativo alla base dati non presenta differenze rispetto all'utilizzo di un'istanza on premises! Ad esempio con Postgres:

psql testdb --user=test --host=
Password for user test: 
psql (13.3, server 14.7)
SSL connection (protocol: TLSv1.2, cipher: ECDHE-RSA-AES256-GCM-SHA384, bits: 256, compression: off)

In pratica e' sufficiente utilizzare l'endopoint dell'istanza come host nella stringa di connessione. La stessa cosa vale per tutti gli Engine Cloud SQL: indirizzo e porta sono sufficienti per il collegamento.

Superpoteri

Conoscete SYS/SYSTEM/postgres/root/... Dimenticateli! Siamo in Cloud ed e' tutto diverso...

Non c'e' alcun accesso al sistema operativo: i file di configurazione non si utilizzano e vengono utilizzati i Flag, i file di log sono accessibili solo da console o da CLI.
L'utente amministrativo definito per l'utente non e' un superadmin. Questo utente e' quello del DBA con tutti i privilegi necessari per amministrare l'istanza. Non puo' accedere al file system, non ha accesso alle viste piu' interne, ... i dettagli dipendono dall'Engine ma in generale sono notevoltemente ridotte le possibilita' sistemistiche mentre sono garantite tutte le funzionalita' applicative.
Tutti gli altri utenti applicativi (schema owner, end user, ...) vengono creati normalmente da SQL seguendo le best pratices dell'Engine utilizzato.

E' consigliato utilizzare per ogni DBA un accesso IAM (Identity and Access Management).

Gestione

Cloud SQL - Management Menu La gestione di un'istanza Cloud SQL e' differente rispetto a quella di un'istanza on-premises ma e' anche terribilmente semplice!

Le principali opzioni sono tutte a portata di click.
Per avviare un'istanza dalla console di gestione scegliere Databases quindi scegliere l'istanza di interesse e da Actions scegliere Start.

Si utilizza la stessa semplice interfaccia praticamente con le stesse funzionalita' per tutti i database. La console permette di effettuare tutte le normali attivita' di gestione compresa la modifica di un'istanza e l'ugrade di una minor release.

Cloud SQL - Management

Quando la modifica richiede un riavvio e' possibile eseguirlo immediatamente oppure farlo eseguire automaticamente alla successiva finestra di manutenzione.
Nota: per default un'istanza non puo' essere cancellata. Per farlo e' necessario abilitare una specifica opzione che e' stata introdotta per evitare cancellazioni non volute.

Le stesse funzionalita' sono richiamabili anche da CLI ed API.

Monitoring

Sono molteplici le possibilita' di monitoraggio dei servizi Cloud SQL. Ma gli strumenti piu' utili sono il System Insights: Cloud SQL - System Insights Ed il Query Insights: Cloud SQL - Query Insights

La maggioranza delle metriche del database sono specifiche del motore ma sono disponibili anche alcune metriche non native ovvero aggiunte da Google a quelle standard del database.

Per completezza va infine ricordato che sono disponibili ulteriori strumenti di monitoraggio...

Quando il gioco si fa duro... allora entrano in gioco le competenze verticali sui singoli database: serve un DBA Postgres per un DB Postgres ed un DBA MySQL per un DB MySQL! La raccolta dei dati ogni minuto e la scelta delle metriche a volte non sono sufficienti per alcune diagnosi fini sulla base dati. In questi rari casi e' possibile utilizzare gli strumenti di gestione tipici della base dati o query ad hoc per indirizzare e risolvere il problema.
E' comunque innegabile che gli strumenti di monitoraggio forniti da Cloud SQL sono molto completi e di semplice interpretazione.

Alta affidabilita'

Per vedere come e' implementata l'HA (High Availability, ovvero l'alta affidabilita') su Cloud SQL abbiamo bisogno di qualche nozione sull'architettura e sulla nomeclatura utilizzate.

Per ottimizzare gli accessi Google ha una serie di impianti distribuiti in tutto il mondo. Come i servizi compute Google Cloud Platform (GCP) anche i servizi Cloud SQL vengono erogati nelle diverse Region disponibili (eg. us-east1 in South Carolina, us-centra1 in Iowa, us-west1 in Oregon, europe-west8 in Italia a Milano, europe-west12 in Italia a Torino, ...). I servizi presenti ed i prezzi variano leggermente da Region a Region ma sopratutto la latenza di accesso e' differente a seconda della distanza ed e' quindi importante scegliere con attenzione dove allocare i propri ambienti. Google Regions

(Fonte: Google)

In ogni Region sono presenti piu' Availability Zones (AZs) che sono implementate con alimentazioni, reti, strutture indipendenti per garantire un'elevata alta affidabilita'.
Per fornire una maggiore affidabilita' dei servizi e' opportuno che le repliche dei database siano definite su AZ diverse e, quando possibile, su Region differenti.

Varie ed eventuali

Oltre a questa paginetta possono essere utili i documenti su Cloud SQL for PostgreSQL ed AlloyDB.

Sicuramente interessante e' il confronto tra Cloud SQL Google Cloud SQL, descritto in questa paginetta, ed Amazon RDS Amazon RDS.

Il documento Your server stinks! e' sempre aggiornato sui rilasci delle release dei diversi database (MySQL, PostgreSQL, SQL Server) e di Cloud SQL.
E' recente l'accordo [NdA 2024-06] per l'integrazione con database Oracle.


Titolo: Cloud SQL ABC
Livello: Medio (2/5)
Data: 14 Febbraio 2024 ❤️
Versione: 1.0.1 - 31 Ottobre 2024 🎃
Autore: mail [AT] meo.bogliolo.name