MariaDB
 sql >> Database >  >> RDS >> MariaDB

Migrazione da Oracle Database a MariaDB - Cosa dovresti sapere

Gartner prevede che entro il 2022 il 50% dei database commerciali esistenti sarà stato convertito in database open source. Inoltre, il 70% delle nuove applicazioni interne sarà sviluppato su una piattaforma di database open source (State of the Open-Source DBMS Market, 2018).

Si tratta di numeri elevati considerando la maturità, la stabilità e la criticità del popolare software di database proprietario. Lo stesso può essere osservato nella classifica dei migliori database, dove la maggior parte dei primi dieci database sono open source.

https://db-engines.com/en/ranking

Cosa spinge le aziende a fare queste mosse?

Potrebbero esserci molte ragioni per migrare i sistemi di database. Per alcuni, il motivo principale sarà il costo della licenza e della proprietà; ma è davvero solo una questione di costi? E l'open source è abbastanza stabile da trasferire i sistemi di produzione critici in quel nuovo mondo open source?

I database open source, in particolare quelli nuovi introdotti in un'organizzazione, spesso provengono da uno sviluppatore che fa parte di un team di progetto. Viene scelto perché è gratuito (non incide sulla spesa esterna del progetto diretto) e soddisfa i requisiti tecnici del momento.

Ma l'aspetto gratuito in realtà non viene semplicemente senza alcun costo poiché devi considerare molti fattori tra cui la migrazione e il costo delle ore di manodopera. Più agevole è la migrazione, meno tempo e denaro spesi per il progetto.

Le migrazioni di database possono essere difficili soprattutto per migrazioni di database proprietari eterogenei come Oracle a PostgreSQL, Oracle a Percona o MySQL. La complessa struttura dello schema, i tipi di dati e il codice del database come PL/SQL possono essere molto diversi da quelli dei database di destinazione,
richiedendo uno schema e una fase di trasformazione del codice prima dell'inizio della migrazione dei dati.

Nel recente articolo del mio collega Paul Namuag, ha esaminato come migrare Oracle su Percona.

Questa volta daremo un'occhiata a ciò che dovresti sapere prima di migrare da Oracle a MariaDB.

MariaDB promette le funzionalità aziendali e le funzionalità di migrazione che possono aiutare a migrare i database Oracle nel mondo open source.

In questo post del blog tratteremo quanto segue:

  • Perché migrare?
  • Differenze del motore di archiviazione
  • Considerazioni sulla connettività del database
  • Semplicità di installazione e amministrazione
  • Differenze di sicurezza
  • Replica e HA
  • PL/SQL e codice database
  • Raggruppamento e ridimensionamento
  • Backup e ripristino
  • Compatibilità con il cloud
  • Considerazioni varie

Perché migrare da Oracle?

La maggior parte delle aziende eseguirà Oracle o SQL Server, o una combinazione di entrambi, con piccole sacche di database open source isolati che operano in modo indipendente. Le piccole e medie imprese tenderebbero a distribuire principalmente database open source, soprattutto per nuove applicazioni. Ma questo sta cambiando e spesso l'open source è la scelta principale anche per le grandi organizzazioni.

Un rapido confronto di questi due sistemi di database appare come segue:

  • Solo Oracle Express Edition è gratuito, ma ha funzionalità molto limitate rispetto a MariaDB. Per funzionalità complete, è necessario acquistare Oracle Standard Edition o Oracle Enterprise Edition.
  • D'altra parte, la comunità di MariaDB e MySQL stavano lavorando duramente per ridurre al minimo il potenziale gap di funzionalità. Conformità alla sicurezza, backup a caldo e molte altre funzionalità aziendali sono ora disponibili in MariaDB.

Ci sono cose che sono sempre state più flessibili in MariaDB/MySQL rispetto alle enormi configurazioni Oracle. Uno di questi è la facilità di replica e la scalabilità orizzontale del cluster.

Differenze del motore di archiviazione

Innanzitutto, iniziamo con alcune nozioni di base. Puoi ancora sentire molte leggende e miti sulle limitazioni di MySQL o MariaDB, che si riferiscono principalmente ai tempi bui in cui il motore di archiviazione principale era MyISAM.

MyISAM era il motore di archiviazione predefinito da MySQL 3.23 fino a quando non è stato sostituito da InnoDB in MariaDB 5.5. È un motore leggero e non transazionale con grandi prestazioni ma non offre il blocco a livello di riga o l'affidabilità di InnoDB.

Con InnoDB (motore di archiviazione predefinito), MariaDB offre i due blocchi standard a livello di riga, che sono i blocchi condivisi (S) e i blocchi esclusivi (X). Si ottiene un blocco condiviso per leggere una riga e consente ad altre transazioni di leggere la riga bloccata. Transazioni diverse possono anche acquisire i propri blocchi condivisi.
Il blocco particolare viene ottenuto per scrivere su una riga e impedisce alle transazioni aggiuntive di bloccare la stessa riga.

InnoDB ha sicuramente coperto il più grande divario di funzionalità transazionali tra questi due sistemi.

A causa della natura collegabile di MariaDB, offre ancora più motori di archiviazione in modo da poterlo adattare meglio a un carico di lavoro specifico. Cioè. quando lo spazio è importante, puoi utilizzare TokuDB che offre un ottimo rapporto di compressione, Spider ottimizzato per il partizionamento e lo sharding dei dati, ColumnStore per il ridimensionamento dei big data.

Tuttavia, per coloro che migrano da Oracle, la mia raccomandazione sarebbe quella di utilizzare prima il motore di archiviazione InnoDB.

Considerazioni sulla connettività

MariaDB condivide con Oracle un buon supporto per l'accesso al database, inclusi i driver ODBC e JDBC, nonché le librerie di accesso per Perl, Python e PHP. Sia MySQL che Oracle supportano oggetti binari di grandi dimensioni, tipi di dati carattere, numerici e data. Quindi non dovresti avere problemi a trovare il connettore giusto per i tuoi servizi applicativi.

MariaDB non ha il processo listener dedicato per mantenere le connessioni al database né l'indirizzo SCAN per il database in cluster come sappiamo da Oracle. Inoltre, non troverai servizi di database flessibili. Invece, dovrai configurare manualmente tra socket Unix (un modo locale e più sicuro per connettere DB - app sullo stesso server), connessioni remote (per impostazione predefinita, MariaDB non consente accessi remoti) e anche pipe e memoria disponibili su Windows solo sistemi. Per il cluster, l'indirizzo SCAN deve essere sostituito dal servizio di bilanciamento del carico. MariaDB consiglia di utilizzare l'altro prodotto MaxScale, ma puoi anche trovarne altri come ProxySQL o HAproxy che funzioneranno con MariaDB, con alcune limitazioni. Sebbene l'utilizzo di bilanciatori di carico esterni per MariaDB possa essere difficile, potresti trovare ottime funzionalità che, a titolo di confronto, non sono disponibili nel database Oracle.

Un sistema di bilanciamento del carico sarebbe anche una raccomandazione per coloro che cercano Oracle Transparent Application Failover (TAF), Oracle Firewall DB o alcune delle funzionalità di sicurezza avanzate come Oracle Connection Manager. Puoi trovare ulteriori informazioni sulla scelta del giusto sistema di bilanciamento del carico nel seguente white paper.

Sebbene queste tecnologie siano gratuite e possano essere implementate manualmente utilizzando installazioni basate su script, sistemi come ClusterControl automatizzano il processo con la loro interfaccia point-and-click. ClusterControl ti consente anche di distribuire tecnologie di memorizzazione nella cache.

Installazione e semplicità di amministrazione

L'ultima versione disponibile di Oracle DB ha aggiunto una funzionalità di installazione tanto attesa:Oracle 18c può ora essere installato su Oracle Linux utilizzando un RPM. L'installazione dedicata basata su Java è sempre stata un problema per coloro che volevano scrivere l'automazione per i loro libri di cucina o frammenti di codice Puppet. Potresti andare con l'installazione invisibile all'utente predefinita, ma il file cambiava di tanto in tanto e comunque, dovevi affrontare l'inferno delle dipendenze. L'installazione basata su RPM è stata sicuramente una buona mossa.

Allora come funziona in MariaDB?

Per coloro che si stanno spostando dal mondo Oracle, è sempre una bella sorpresa vedere quanto velocemente puoi distribuire istanze, creare nuovi database o persino impostare complessi flussi di replica. Il processo di installazione e configurazione è probabilmente la parte più agevole del processo di migrazione. Sebbene la scelta delle impostazioni giuste richieda tempo e conoscenza.

Oracle fornisce una serie di distribuzioni binarie di MySQL. Questi includono distribuzioni binarie generiche sotto forma di file tar compressi (file con estensione .tar.gz) per una serie di piattaforme e binari in pacchetti specifici della piattaforma. Sulla piattaforma Windows, puoi trovare una procedura guidata di installazione standard tramite una GUI.

L'assistente alla configurazione del database Oracle (DBCA) non è praticamente necessario poiché sarai in grado di creare un database con un comando a riga singola.

CREATE [OR REPLACE] {DATABASE | SCHEMA} [IF NOT EXISTS] db_name
    [create_specification] ...

create_specification:
    [DEFAULT] CHARACTER SET [=] charset_name
  | [DEFAULT] COLLATE [=] collation_name

Puoi anche avere un database con regole di confronto database e set di caratteri diversi nella stessa istanza MariaDB.

L'impostazione della replica serve solo ad abilitare la registrazione binaria su un master (simile al log di archiviazione in Oracle) ed eseguire il seguente comando sullo slave per collegarlo al master.

CHANGE MASTER TO
MASTER_HOST = host,
MASTER_PORT = port,
MASTER_USER = replication_user,
MASTER_PASSWORD = password,
MASTER_AUTO_POSITION = 1;

Sicurezza e conformità

Oracle fornisce una maggiore sicurezza del database.

L'autenticazione dell'utente viene eseguita in Oracle specificando ruoli globali oltre a posizione, nome utente e password. In Oracle, l'autenticazione dell'utente viene eseguita con diversi metodi di autenticazione, tra cui l'autenticazione del database, l'autenticazione esterna e l'autenticazione del proxy.

Per molto tempo i ruoli non erano disponibili in MariaDB o MySQL. MariaDB ha aggiunto ruoli con la versione 10.2 dopo che sono apparsi in MySQL 8.0.

I ruoli, un'opzione molto utilizzata nelle comuni configurazioni di Oracle DB, possono essere facilmente trasformati in MariaDB, quindi non devi perdere tempo con le regolazioni dei permessi di un singolo utente.

Crea, modifica utente, password:funziona tutto in modo simile a Oracle DB.

Per raggiungere gli standard di conformità alla sicurezza aziendale, MariaDB offre funzionalità integrate come:

  • Plugin di controllo in
  • Crittografia dei dati inattivi
  • Certificati, connessione TSS
  • PAM Plugin

Offerte di plug-in di controllo una sorta di auditing a grana fine (FGA) o AUDI SQL disponibile in Oracle. Non offre lo stesso set di funzionalità, ma di solito è abbastanza buono da soddisfare gli audit di conformità della sicurezza.

Crittografia dei dati inattivi La crittografia dei dati inattivi può essere un requisito per normative di sicurezza come HIPAA o PCI DSS. Tale crittografia può essere implementata su più livelli:puoi crittografare l'intero disco su cui sono archiviati i file. Puoi crittografare solo il database MySQL tramite le funzionalità disponibili nelle ultime versioni di MySQL o MariaDB. La crittografia può anche essere implementata nell'applicazione in modo da crittografare i dati prima di archiviarli nel database. Ogni opzione ha i suoi pro e contro:la crittografia del disco può aiutare solo quando i dischi vengono rubati fisicamente, ma i file non verrebbero crittografati su un server di database in esecuzione.

Plugin PAM estende la funzionalità di registrazione agli account utente stretti con impostazioni LDAP. In effetti, trovo che sia molto più semplice da configurare rispetto all'integrazione LDAP con Oracle Database.

Replica e HA

MariaDB è nota per la sua semplicità e flessibilità di replica. Per impostazione predefinita, puoi leggere o persino scrivere sui tuoi server standby/slave. Fortunatamente, le versioni di MySQL 10.X hanno apportato molti miglioramenti significativi alla replica, inclusi ID transazione globali, checksum degli eventi, slave multi-thread e slave/master a prova di crash per migliorare ulteriormente la replica. I DBA abituati alle letture e alle scritture della replica MySQL si aspetterebbero una soluzione simile o addirittura più semplice dal fratello maggiore, Oracle. Purtroppo non per impostazione predefinita.

L'implementazione di standby fisico standard per Oracle è chiusa per qualsiasi operazione di lettura-scrittura. In effetti, Oracle offre variazioni logiche ma presenta molte limitazioni e non è progettato per HA. La soluzione a questo problema è una funzionalità aggiuntiva a pagamento chiamata Active Data Guard, che puoi utilizzare per leggere i dati dallo standby mentre applichi i registri di ripristino.

Active Data Guard è una soluzione aggiuntiva a pagamento per il software di ripristino di emergenza gratuito Data Guard di Oracle disponibile solo per Oracle Database Enterprise Edition (licenza a costo più elevato). Fornisce l'accesso in sola lettura, applicando continuamente le modifiche inviate dal database primario. In quanto database in standby attivo, aiuta a scaricare le query di lettura, i report ei backup incrementali dal database primario. L'architettura del prodotto è progettata per consentire ai database in standby di essere isolati dagli errori che possono verificarsi nel database primario.

Una caratteristica interessante del database Oracle 12c e qualcosa che mancherebbe a Oracle DBA è la convalida del danneggiamento dei dati. I controlli di danneggiamento di Oracle Data Guard vengono eseguiti per garantire che i dati siano esattamente allineati prima che i dati vengano copiati in un database in standby. Questo meccanismo può essere utilizzato anche per ripristinare i blocchi di dati sul database primario direttamente dal database in standby.

MariaDB offre vari metodi di replica e funzionalità di replica come:

  • sincrono,
  • asincrono,
  • semisincrona

Il set di funzionalità per la replica di MariaDB è ricco. Con la replica sincrona, puoi impostare il failover senza alcuna perdita di transazione di scrittura. Per ridurre i ritardi di replica asincrona, potresti voler utilizzare la replica parallela in ordine sugli slave. Gli eventi che possono essere compressi sono gli eventi che normalmente possono avere dimensioni significative:eventi di query (per DDL e DML nella replica basata su istruzioni) ed eventi riga (per DML nella replica basata su riga). Simile ad altre opzioni di compressione, la replica compressa di MariaDB è trasparente. Come accennato in precedenza, l'intero processo è molto semplice rispetto alla replica fisica e logica di Oracle Data Guard.

PL/SQL e codice database

Ora veniamo alla parte difficile:PL/SQL.

Mentre la replica e l'HA con MariaDB regnano sovrane. Oracle è il re di PL/SQL, senza dubbio lì.

PL/SQL è il principale ostacolo alla migrazione nel mondo open source in molte organizzazioni. Ma qui MariaDB non si arrende.

MariaDB 10.3 (noto anche come MariaDB TX 3.0) ha aggiunto alcune nuove straordinarie funzionalità tra cui i costrutti SEQUENCE, i pacchetti in stile Oracle e il tipo di dati ROW, rendendo le migrazioni molto più semplici.

Con il nuovo parametro SQL_MODE =ORACLE, MariaDB è ora in grado di analizzare, a seconda dei casi, una serie di Oracle PL/SQL legacy senza riscrivere il codice.

Come possiamo trovare nella pagina della storia del cliente utilizzando la compatibilità Oracle PL/SQL di base in MariaDB TX 3.0, la Development Bank of Singapore (DBS) è stata in grado di migrare più della metà delle proprie applicazioni business-critical in soli 12 mesi da Oracle Database su MariaDB.

La nuova modalità di compatibilità aiuta con la seguente sintassi:

  • Sintassi del ciclo
  • Dichiarazione variabile
  • Costrutto di stored procedure non ANSI
  • Sintassi del cursore
  • Parametri della procedura memorizzata
  • Ereditarietà del tipo di dati (%TYPE, %ROWTYPE)
  • Eccezioni stile PL/SQL
  • Sinonimi per i tipi SQL di base (VARCHAR2, NUMBER, ...)

Ma se diamo un'occhiata alla versione precedente 10.2, alcune delle compatibilità tra Oracle e MariaDB sono apparse prima come:

  • Espressioni di tabelle comuni
  • Query SQL ricorsive
  • Funzioni Windows, NTILETE, RANK, DENESE_RANK.

L'analisi PL/SQL nativa o, in alcuni casi, l'esecuzione diretta di procedure Oracle native può ridurre notevolmente i costi di sviluppo.

Un'altra caratteristica molto utile aggiunta da SQL_MODE=Oracle sono le sequenze. L'implementazione delle sequenze in MariaDB Server 10.3 segue lo standard SQL:2003 e include la compatibilità della sintassi con Oracle.

Per creare una sequenza, viene utilizzata un'istruzione create:

CREATE SEQUENCE Sequence_1 
  START WITH 1  
  INCREMENT BY 1;

Una volta create, le sequenze possono essere utilizzate ad esempio con inserti come:

INSERT INTO database (database_id, database_name) VALUES(Sequence_1.NEXTVAL, 'MariaDB');

Raggruppamento e ridimensionamento

MariaDB è un cluster di database multimaster asincrono, attivo-attivo.

MariaDB Cluster è diverso da ciò che è noto come Oracle MySQL Cluster - NDB.

Il cluster MariaDB si basa sul plug-in di replica multi-master fornito da Codership (Galera). Dalla versione 5.5, la tecnologia Galera (wsrep API) è parte integrante di MariaDB. L'architettura del plugin Galera si basa su tre livelli principali:certificazione, replica e framework di comunicazione di gruppo.

Il livello di certificazione prepara i set di scrittura ed esegue i controlli di certificazione su di essi, garantendo che possano essere applicati.

Il livello di replica gestisce il protocollo di replica e fornisce la capacità di ordinazione totale.

Group Communication Framework implementa un'architettura plug-in che consente ad altri sistemi di connettersi tramite lo schema di backend gcomm.

La principale differenza rispetto a Oracle RAC è che ogni nodo ha dati separati. Oracle RAC viene comunemente scambiato per una soluzione HA complementare mentre i dischi si trovano solitamente nello stesso array di dischi. MariaDB non solo offre storage ridondante, ma supporta anche il clustering geolocalizzato senza la necessità di una fibra dedicata.

Backup e ripristino

Oracle offre molti meccanismi di backup inclusi backup a caldo, backup, importazione, esportazione e molti altri.

Contrariamente a MySQL, MariaDB offre uno strumento esterno per backup a caldo chiamato mariabackup. È un fork di Percona XtraBackup progettato per funzionare con tabelle crittografate e compresse ed è il metodo di backup consigliato per i database MariaDB.

MariaDB Server 10.1 ha introdotto la compressione MariaDB e la crittografia dei dati a riposo, ma le soluzioni di backup esistenti non supportavano la funzionalità di backup completa per queste funzionalità. Quindi MariaDB ha deciso di estendere XtraBackup (versione 2.3.8) e ha chiamato questa soluzione Mariabackup.

Percona e Mariabackup offrono funzionalità simili, ma se sei interessato alle differenze, puoi trovarle qui.

Ciò che MariaDB non offre è il catalogo di ripristino dei backup del database. Fortunatamente, questo può essere esteso con sistemi di terze parti come ClusterControl.

Compatibilità con il cloud

Le infrastrutture cloud stanno diventando sempre più popolari in questi giorni. Sebbene una VM cloud possa non essere affidabile come un server di livello aziendale, i principali provider di servizi cloud offrono una varietà di strumenti per aumentare la disponibilità del servizio. Puoi scegliere tra architettura EC2 o DBaaS come Amazon RDS.

Amazon RDS supporta MariaDB Server 10.3. Non supporta SQL_MODE=Oracle ma puoi comunque trovare una serie di funzionalità che semplificano la migrazione. Amazon cloud supporta attività di gestione comuni come monitoraggio, backup, distribuzioni multiple dalla A alla Z, ecc.

Un altro popolare provider di servizi cloud, Google Cloud, offre anche la versione più recente di MariaDB. Puoi distribuirlo come immagine VM certificata contenitore o libreria Bintami.

Azure offre anche la propria implementazione di MariaDB. È simile ad Amazon RDS, con backup, ridimensionamento e build in alta disponibilità. Lo SLA garantito è del 99,99%, che corrisponde a 4 m 23 secondi al mese di fermo macchina.

Considerazioni varie

Come accennato all'inizio di questo articolo, la migrazione da Oracle a MariaDB è un processo in più fasi. Un consiglio generale sarà quello di non provare a migrare tutti i database contemporaneamente. Dividere la migrazione in piccoli batch è, nella maggior parte degli scenari, l'approccio migliore.

Se non conosci la tecnologia, provala. Dovresti sentirti sicuro della piattaforma e sapere i suoi pro e contro. I test aumenteranno la fiducia e influiranno sulle tue decisioni in merito alla migrazione.

Ci sono strumenti interessanti che possono aiutarti con il processo di migrazione PL/SQL più difficile. Così interessanti sono dbconvert, AWS Schema Conversion Tool - Documentazione AWS.

Nel corso degli anni MariaDB ha acquisito il supporto e la maturità aziendale per eseguire sistemi di transazione dati critici e complessi. Con la versione recente, MariaDB ha aggiunto alcune nuove fantastiche funzionalità come la compatibilità SQL_Mode=Oracle, rendendo il processo di transizione più semplice che mai.

Infine, puoi unirti a me il 12 marzo per un webinar durante il quale ti guiderò attraverso tutto ciò che devi sapere quando si tratta di migrare dal database Oracle a MariaDB.