sql >> Database >  >> RDS >> MariaDB

Migreren van Oracle Database naar MariaDB - wat u moet weten

Gartner voorspelt dat in 2022 50% van de bestaande commerciële databases zal zijn omgezet naar open source databases. Sterker nog, 70% van de nieuwe interne applicaties zal worden ontwikkeld op een open source databaseplatform (State of the Open-Source DBMS Market, 2018).

Dit zijn hoge aantallen gezien de volwassenheid, stabiliteit en kritiekheid van populaire, propriëtaire databasesoftware. Hetzelfde kan worden waargenomen in de hoogste databaseranglijst, waar de meeste van de top tien databases open source zijn.

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

Wat drijft bedrijven om dergelijke stappen te zetten?

Er kunnen veel redenen zijn om databasesystemen te migreren. Voor sommigen zullen de kosten van licentie en eigendom de belangrijkste reden zijn; maar gaat het echt alleen om de kosten? En is open source stabiel genoeg om kritieke productiesystemen naar die nieuwe open source wereld te verplaatsen?

Open source-databases, vooral nieuwe die in een organisatie worden binnengebracht, zijn vaak afkomstig van een ontwikkelaar in een projectteam. Het is gekozen omdat het gratis is (geen invloed op de externe uitgaven van het directe project) en voldoet aan de technische vereisten van het moment.

Maar het gratis aspect komt niet zomaar zonder kosten, aangezien u met veel factoren rekening moet houden, waaronder de migratie en de kosten van manuren. Hoe soepeler de migratie, hoe minder tijd en geld er aan het project wordt besteed.

Databasemigraties kunnen een uitdaging zijn, vooral voor heterogene propriëtaire databasemigraties zoals Oracle naar PostgreSQL, Oracle naar Percona of MySQL. De complexe schemastructuur, gegevenstypen en databasecode zoals PL/SQL kunnen behoorlijk verschillen van die van de doeldatabases,
waarvoor een schema- en codetransformatiestap nodig is voordat de gegevensmigratie begint.

In het recente artikel van mijn collega Paul Namuag onderzocht hij hoe Oracle naar Percona kan worden gemigreerd.

Deze keer bekijken we wat u moet weten voordat u migreert van Oracle naar MariaDB.

MariaDB belooft de bedrijfsfuncties en migratiefuncties die kunnen helpen bij het migreren van Oracle-databases naar de open source-wereld.

In deze blogpost behandelen we het volgende:

  • Waarom migreren?
  • Verschillen in opslagengine
  • Overwegingen voor databaseconnectiviteit
  • Eenvoud van installatie en beheer
  • Beveiligingsverschillen
  • Replicatie en HA
  • PL/SQL en databasecode
  • Clustering en schalen
  • Back-up en herstel
  • Cloud-compatibiliteit
  • Diverse overwegingen

Waarom migreren van Oracle?

De meeste ondernemingen zullen Oracle of SQL Server gebruiken, of een combinatie van beide, met kleine zakjes geïsoleerde open source databases die onafhankelijk werken. Kleine tot middelgrote bedrijven zouden overwegend open source databases inzetten, vooral voor nieuwe toepassingen. Maar dit is aan het veranderen, en vaak is open source de belangrijkste keuze, zelfs voor grote organisaties.

Een snelle vergelijking van deze twee databasesystemen ziet er als volgt uit:

  • Alleen Oracle Express Edition is gratis, maar heeft zeer beperkte functies in vergelijking met MariaDB. Voor uitgebreide functies moet Oracle Standard Edition of Oracle Enterprise Edition worden aangeschaft.
  • Aan de andere kant werkten de MariaDB- en MySQL-gemeenschap hard om de potentiële kloof tussen functies te minimaliseren. Beveiligingscompliance, hot-back-ups en vele andere zakelijke functies zijn nu beschikbaar in MariaDB.

Er zijn dingen die altijd flexibeler waren in MariaDB/MySQL dan in enorme Oracle-configuraties. Een daarvan is het gemak van replicatie en horizontale schaalbaarheid van clusters.

Verschillen in opslagengine

Laten we eerst beginnen met enkele basisprincipes. Je kunt nog steeds veel legendes en mythen horen over MySQL- of MariaDB-beperkingen, die meestal verwijzen naar de donkere tijden toen MyISAM de belangrijkste opslagengine was.

MyISAM was de standaard opslagengine van MySQL 3.23 totdat het werd vervangen door InnoDB in MariaDB 5.5. Het is een lichte, niet-transactionele engine met geweldige prestaties, maar biedt geen vergrendeling op rijniveau of de betrouwbaarheid van InnoDB.

Met InnoDB (standaard opslagengine) biedt MariaDB de twee standaard sloten op rijniveau, namelijk gedeelde sloten (S) en exclusieve sloten (X). Een gedeeld slot wordt verkregen om een ​​rij te lezen en laat andere transacties toe om de vergrendelde rij te lezen. Verschillende transacties kunnen ook hun eigen gedeelde vergrendelingen verkrijgen.
De specifieke vergrendeling wordt verkregen om naar een rij te schrijven en voorkomt dat aanvullende transacties dezelfde rij vergrendelen.

InnoDB heeft zeker de grootste lacune in transactiefuncties tussen deze twee systemen gedicht.

Vanwege het pluggable karakter van MariaDB biedt het nog meer storage-engines, zodat u het beter kunt aanpassen aan een specifieke workload. D.w.z. als ruimte belangrijk is, kun je kiezen voor TokuDB, dat een geweldige compressieverhouding biedt, Spider geoptimaliseerd voor partitionering en data-sharding, ColumnStore voor schalen van big data.

Desalniettemin, voor degenen die migreren vanuit Oracle, zou mijn aanbeveling zijn om eerst te gaan met de InnoDB-opslagengine.

Overwegingen met betrekking tot connectiviteit

MariaDB deelt met Oracle goede ondersteuning voor databasetoegang, inclusief ODBC- en JDBC-stuurprogramma's, evenals toegangsbibliotheken voor Perl, Python en PHP. MySQL en Oracle ondersteunen beide binaire grote objecten, karakter-, numerieke en datumgegevenstypen. U zou dus geen problemen moeten hebben met het vinden van de juiste connector voor uw applicatieservices.

MariaDB heeft niet het speciale listenerproces om de databaseverbindingen te onderhouden met het nori SCAN-adres voor de geclusterde database zoals we die kennen van Oracle. Ook vindt u er geen flexibele databasediensten. In plaats daarvan moet u handmatig configureren tussen Unix-socket (een lokale, meest veilige manier om verbinding te maken met DB - app op dezelfde server), externe verbindingen (standaard staat MariaDB geen externe aanmeldingen toe) en ook pijp en geheugen beschikbaar op Windows alleen systemen. Voor het cluster moet het SCAN-adres worden vervangen door de load balancer. MariaDB raadt het gebruik van hun andere product MaxScale aan, maar je kunt ook andere vinden, zoals ProxySQL of HAproxy, die met MariaDB werken, met enkele beperkingen. Hoewel het gebruik van externe load balancers voor MariaDB moeilijk kan zijn, kunt u geweldige functies vinden die, ter vergelijking, niet beschikbaar zijn in de Oracle-database.

Een load balancer zou ook een aanbeveling zijn voor diegenen die op zoek zijn naar Oracle Transparent Application Failover (TAF), Oracle Firewall DB of enkele van de geavanceerde beveiligingsfuncties zoals Oracle Connection Manager. In de volgende whitepaper vindt u meer informatie over het kiezen van de juiste load balancer.

Hoewel deze technologieën gratis zijn en handmatig kunnen worden geïmplementeerd met behulp van scriptgebaseerde installaties, automatiseren systemen zoals ClusterControl het proces met hun aanwijzen-en-klik-interface. Met ClusterControl kunt u ook caching-technologieën implementeren.

Eenvoud van installatie en beheer

De nieuwste beschikbare Oracle DB-versie voegde een langverwachte installatiefunctie toe:Oracle 18c kan nu worden geïnstalleerd op Oracle Linux met behulp van een RPM. Toegewijde op Java gebaseerde installatie was altijd een probleem voor degenen die automatisering wilden schrijven voor hun kookboeken of Puppet-codefragmenten. Je zou kunnen gaan met een vooraf gedefinieerde stille installatie, maar het bestand veranderde van tijd tot tijd en toch had je te maken met de afhankelijkheidshel. Installatie op basis van RPM was zeker een goede zet.

Dus hoe werkt het in MariaDB?

Voor degenen die de Oracle-wereld verlaten, is het altijd een leuke verrassing om te zien hoe snel je instances kunt implementeren, nieuwe databases kunt maken of zelfs complexe replicatiestromen kunt opzetten. Het installatie- en configuratieproces is waarschijnlijk het soepelste deel van het migratieproces. Hoewel het kiezen van de juiste instellingen tijd en kennis kost.

Oracle biedt een set binaire distributies van MySQL. Deze omvatten generieke binaire distributies in de vorm van gecomprimeerde tar-bestanden (bestanden met de extensie .tar.gz) voor een aantal platforms en binaire bestanden in platformspecifieke pakketten. Op het Windows-platform vindt u een standaard installatiewizard via een GUI.

De Oracle-databaseconfiguratie-assistent (DBCA) is in principe niet nodig, omdat u een database kunt maken met een enkele regelopdracht.

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

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

U kunt ook een database hebben met verschillende database-sorteringen en tekensets onder dezelfde MariaDB-instantie.

Replicatie-instellingen zijn alleen om binaire logboekregistratie op een master in te schakelen (vergelijkbaar met archieflogboek in Oracle) en de volgende opdracht op de slave uit te voeren om deze aan de master te koppelen.

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

Beveiliging en naleving

Oracle biedt verbeterde databasebeveiliging.

Gebruikersauthenticatie wordt in Oracle uitgevoerd door naast locatie, gebruikersnaam en wachtwoord ook globale rollen op te geven. In Oracle wordt gebruikersauthenticatie uitgevoerd door verschillende authenticatiemethoden, waaronder database-authenticatie, externe authenticatie en proxy-authenticatie.

Lange tijd waren rollen niet beschikbaar in MariaDB of MySQL. MariaDB heeft rollen toegevoegd met versie 10.2 nadat ze in MySQL 8.0 verschenen.

Rollen, een optie die veel wordt gebruikt in veelgebruikte Oracle DB-setups, kunnen eenvoudig worden getransformeerd in MariaDB, zodat u geen tijd hoeft te verspillen aan het aanpassen van toestemmingen voor één gebruiker.

Aanmaken, wijzigen gebruiker, wachtwoorden:het werkt allemaal op dezelfde manier als Oracle DB.

Om nalevingsnormen voor bedrijfsbeveiliging te bereiken, biedt MariaDB ingebouwde functies zoals:

  • Audit-plug-in in
  • Encryptie van data-at-rest
  • Certificaten, TSS-verbinding
  • PAM-plug-in

Audit plugin-aanbiedingen een soort fijnmazige auditing (FGA) of AUDI SQL die beschikbaar is in Oracle. Het biedt niet dezelfde set functies, maar meestal is het goed genoeg om te voldoen aan audits op het gebied van beveiligingsnaleving.

Encryptie van data-at-rest Versleuteling van gegevens in rust kan een vereiste zijn voor beveiligingsvoorschriften zoals HIPAA of PCI DSS. Een dergelijke versleuteling kan op meerdere niveaus worden geïmplementeerd - u kunt de hele schijf versleutelen waarop de bestanden zijn opgeslagen. U kunt alleen de MySQL-database versleutelen via functionaliteit die beschikbaar is in de nieuwste versies van MySQL of MariaDB. Versleuteling kan ook in de toepassing worden geïmplementeerd, zodat de gegevens worden versleuteld voordat ze in de database worden opgeslagen. Elke optie heeft zijn voor- en nadelen:schijfversleuteling kan alleen helpen wanneer schijven fysiek worden gestolen, maar de bestanden zouden niet worden versleuteld op een actieve databaseserver.

PAM-plug-in breidt de logfunctie uit naar strakke gebruikersaccounts met LDAP-instellingen. Ik vind het zelfs veel gemakkelijker in te stellen dan LDAP-integratie met Oracle Database.

Replicatie &HA

MariaDB staat bekend om de eenvoud en flexibiliteit van de replicatie. Standaard kunt u lezen of zelfs schrijven naar uw stand-by/slave-servers. Gelukkig brachten MySQL 10.X-versies veel belangrijke verbeteringen aan replicatie, waaronder globale transactie-ID's, gebeurteniscontrolesommen, multi-threaded slaves en crashveilige slaves/masters om replicatie nog beter te maken. DBA's die gewend zijn aan MySQL-replicatie, lezen en schrijven, verwachten een vergelijkbare of zelfs eenvoudigere oplossing van zijn grotere broer, Oracle. Helaas niet standaard.

De standaard fysieke standby-implementatie voor Oracle is gesloten voor alle lees-schrijfbewerkingen. Oracle biedt in feite logische variatie, maar het heeft veel beperkingen, en het is niet ontworpen voor HA. De oplossing voor dit probleem is een extra betaalde functie genaamd Active Data Guard, die u kunt gebruiken om gegevens uit de stand-bymodus te lezen terwijl u redo-logs toepast.

Active Data Guard is een betaalde add-on-oplossing voor Oracle's gratis Data Guard-software voor noodherstel die alleen beschikbaar is voor Oracle Database Enterprise Edition (licentie met de hoogste kosten). Het biedt alleen-lezen toegang, terwijl het continu wijzigingen toepast die vanuit de primaire database zijn verzonden. Als actieve standby-database helpt het leesquery's, rapportage en incrementele back-ups van de primaire database te ontlasten. De architectuur van het product is ontworpen om stand-by-databases te isoleren van storingen die kunnen optreden in de primaire database.

Een opwindende functie van Oracle-database 12c en iets dat Oracle DBA zou missen, is de validatie van gegevenscorruptie. Er worden corruptiecontroles van Oracle Data Guard uitgevoerd om ervoor te zorgen dat de gegevens exact zijn uitgelijnd voordat de gegevens naar een stand-by-database worden gekopieerd. Dit mechanisme kan ook worden gebruikt om gegevensblokken op de primaire database rechtstreeks vanuit de standby-database te herstellen.

MariaDB biedt verschillende replicatiemethoden en replicatiefuncties zoals:

  • synchroon,
  • asynchroon,
  • semi-synchroon

De functieset voor MariaDB-replicatie is rijk. Met synchrone replicatie kunt u een failover instellen zonder verlies van schrijftransacties. Om asynchrone replicatievertragingen te verminderen, kunt u in-order parallelle replicatie op slaves gebruiken. De gebeurtenissen die kunnen worden gecomprimeerd, zijn de gebeurtenissen die normaal gesproken een aanzienlijke omvang kunnen hebben:querygebeurtenissen (voor DDL en DML bij replicatie op basis van instructies) en rijgebeurtenissen (voor DML bij replicatie op basis van rijen). Net als bij andere compressie-opties is MariaDB gecomprimeerde replicatie transparant. Zoals eerder vermeld, is het hele proces heel eenvoudig in vergelijking met fysieke en logische replicatie van Oracle Data Guard.

PL/SQL en databasecode

Nu komen we bij het moeilijke deel:PL/SQL.

Terwijl replicatie en HA met MariaDB oppermachtig zijn. Oracle is ongetwijfeld de koning van PL/SQL.

PL/SQL is in veel organisaties het belangrijkste obstakel voor migratie naar de open source-wereld. Maar MariaDB geeft hier niet op.

MariaDB 10.3 (ook bekend als MariaDB TX 3.0) heeft een aantal geweldige nieuwe functies toegevoegd, waaronder SEQUENCE-constructies, Oracle-achtige pakketten en het ROW-gegevenstype, waardoor migraties veel eenvoudiger worden.

Met de nieuwe parameter SQL_MODE =ORACLE kan MariaDB nu, afhankelijk van het geval, een deel van de legacy Oracle PL/SQL ontleden zonder de code te herschrijven.

Zoals we kunnen vinden op hun klantverhaalpagina met behulp van de belangrijkste Oracle PL/SQL-compatibiliteit in MariaDB TX 3.0, heeft de Development Bank of Singapore (DBS) in slechts 12 maanden meer dan de helft van hun bedrijfskritieke applicaties kunnen migreren van Oracle Database naar MariaDB.

De nieuwe compatibiliteitsmodus helpt met de volgende syntaxis:

  • Lussyntaxis
  • Variabele declaratie
  • Constructie van niet-ANSI opgeslagen procedure
  • Cursorsyntaxis
  • Opgeslagen procedureparameters
  • Overerving van gegevenstype (%TYPE, %ROWTYPE)
  • Uitzonderingen in PL/SQL-stijl
  • Synoniemen voor Basic SQL Types (VARCHAR2, NUMBER, …)

Maar als we kijken naar de oudere versie 10.2, verscheen een deel van de compatibiliteit tussen Oracle en MariaDB eerder, zoals:

  • Veelvoorkomende tabeluitdrukkingen
  • Recursieve SQL-query's
  • Windows-functies, NTELETE, RANK, DENESE_RANK.

Native PL/SQL-parsing of in sommige gevallen directe uitvoering van native Oracle-procedures kan de ontwikkelingskosten aanzienlijk verlagen.

Een andere zeer nuttige functie die is toegevoegd door SQL_MODE=Oracle zijn sequenties. De implementatie van sequenties in MariaDB Server 10.3 volgt de SQL:2003-standaard en omvat syntaxiscompatibiliteit met Oracle.

Om een ​​reeks te maken, wordt een create-statement gebruikt:

CREATE SEQUENCE Sequence_1 
  START WITH 1  
  INCREMENT BY 1;

Wanneer aangemaakte sequenties bijvoorbeeld kunnen worden gebruikt met invoegingen zoals:

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

Clustering en schalen

MariaDB is een asynchrone, actief-actieve, multi-master databasecluster.

MariaDB Cluster verschilt van wat bekend staat als Oracle's MySQL Cluster - NDB.

MariaDB-cluster is gebaseerd op de multi-master replicatie-plug-in die wordt geleverd door Codership (Galera). Sinds versie 5.5 is de Galera-technologie (wsrep API) een integraal onderdeel van MariaDB. De architectuur van de Galera-plug-in berust op drie kernlagen:certificering, replicatie en kader voor groepscommunicatie.

De certificeringslaag bereidt de schrijfsets voor en voert de certificeringscontroles daarop uit, zodat ze kunnen worden toegepast.

De replicatielaag beheert het replicatieprotocol en biedt de totale bestelmogelijkheid.

Group Communication Framework implementeert een plug-in-architectuur waarmee andere systemen verbinding kunnen maken via het gcomm-backend-schema.

Het belangrijkste verschil met Oracle RAC is dat elk knooppunt afzonderlijke gegevens heeft. Oracle RAC wordt vaak aangezien als een aanvullende HA-oplossing, terwijl schijven zich meestal in dezelfde schijfarray bevinden. MariaDB biedt niet alleen redundante opslag, maar ondersteunt ook geografisch gelokaliseerde clustering zonder de noodzaak van speciale glasvezel.

Back-up en herstel

Oracle biedt vele back-upmechanismen, waaronder hotback-up, back-up, import, export en vele andere.

In tegenstelling tot MySQL biedt MariaDB een externe tool voor hot-back-ups, mariabackup genaamd. Het is een fork van Percona XtraBackup, ontworpen om te werken met versleutelde en gecomprimeerde tabellen en is de aanbevolen back-upmethode voor MariaDB-databases.

MariaDB Server 10.1 introduceerde MariaDB Compression en Data-at-Rest Encryption, maar de bestaande back-upoplossingen ondersteunden geen volledige back-upmogelijkheden voor deze functies. Dus besloot MariaDB XtraBackup (versie 2.3.8) uit te breiden en noemde deze oplossing Mariabackup.

Percona en Mariabackup bieden vergelijkbare functionaliteiten, maar als u geïnteresseerd bent in verschillen, kunt u ze hier vinden.

Wat MariaDB niet biedt, is de herstelcatalogus van uw databaseback-ups. Gelukkig kan dit worden uitgebreid met systemen van derden zoals ClusterControl.

Cloudcompatibiliteit

Cloudinfrastructuren worden tegenwoordig steeds populairder. Hoewel een cloud-VM misschien niet zo betrouwbaar is als een enterprise-grade server, bieden de belangrijkste cloudproviders een verscheidenheid aan tools om de servicebeschikbaarheid te vergroten. Je kunt kiezen tussen EC2-architectuur of DBaaS zoals Amazon RDS.

Amazon RDS ondersteunt MariaDB Server 10.3. Het ondersteunt SQL_MODE=Oracle niet, maar u kunt nog steeds een reeks functies vinden die het migreren gemakkelijker maken. Amazon cloud ondersteunt veelvoorkomende beheertaken zoals monitoring, back-ups, multi-AZ-implementaties, enz.

Een andere populaire cloudprovider, Google Cloud, biedt ook de meest recente MariaDB-versie. U kunt het implementeren als een container of een door Bintami-bibliotheek gecertificeerd VM-image.

Azure biedt ook een eigen implementatie van MariaDB. Het is vergelijkbaar met Amazon RDS, met de back-ups, schaling en builds in hoge beschikbaarheid. De gegarandeerde SLA is 99,99%, wat overeenkomt met 4 m 23 seconden per maand downtime.

Diverse overwegingen

Zoals vermeld in het allereerste begin van dit artikel, is de migratie van Oracle naar MariaDB een proces in meerdere fasen. Een algemeen advies is om niet te proberen alle databases in één keer te migreren. Het verdelen van de migratie in kleine batches is in de meeste scenario's de beste aanpak.

Als u niet bekend bent met de technologie, probeer het dan eens. U moet vertrouwen hebben in het platform en weten wat de voor- en nadelen zijn. Testen wekt vertrouwen en heeft invloed op uw beslissingen met betrekking tot migratie.

Er zijn interessante tools die u kunnen helpen bij het moeilijkste PL/SQL-migratieproces. Zo interessant zijn dbconvert, AWS Schema Conversion Tool - AWS-documentatie.

In de loop der jaren heeft MariaDB Enterprise-ondersteuning en volwassenheid gekregen om kritieke en complexe datatransactiesystemen uit te voeren. Met de recente versie heeft MariaDB een aantal geweldige nieuwe functies toegevoegd, zoals SQL_Mode=Oracle-compatibiliteit, waardoor het overgangsproces eenvoudiger dan ooit tevoren is.

Tot slot kun je op 12 maart deelnemen aan een webinar waarin ik je alles zal vertellen wat je moet weten als het gaat om het migreren van de Oracle-database naar MariaDB.


  1. Door Oracle ondersteunde versiesmatrix

  2. MongoDB Basics:Role-Based Access Control (RBAC) configureren

  3. Hoe de datum en tijd op te maken in MySQL

  4. Hoe Postgres JSONB-gegevenstype gebruiken met JPA?