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

Migrering fra Oracle-database til MariaDB - hvad du bør vide

Gartner forudser, at i 2022 vil 50 % af eksisterende kommercielle databaser være blevet konverteret til open source-databaser. Endnu mere vil 70 % af de nye interne applikationer blive udviklet på en open source-databaseplatform (State of the Open-Source DBMS Market, 2018).

Disse er høje tal i betragtning af modenheden, stabiliteten og kritikaliteten af ​​populær, proprietær databasesoftware. Det samme kan observeres i topdatabasen, hvor de fleste af de ti bedste databaser er open source.

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

Hvad presser virksomheder til at gøre sådanne tiltag?

Der kan være mange grunde til at migrere databasesystemer. For nogle vil hovedårsagen være omkostningerne ved licens og ejerskab; men handler det i virkeligheden kun om omkostningerne? Og er open source stabil nok til at flytte kritiske produktionssystemer til den nye open source verden?

Open source-databaser, især nye, der bringes ind i en organisation, kommer ofte fra en udvikler på et projekthold. Det er valgt, fordi det er gratis (påvirker ikke det direkte projekts eksterne udgifter) og opfylder de tekniske krav i øjeblikket.

Men det gratis aspekt kommer faktisk ikke bare uden omkostninger, da du skal overveje mange faktorer, herunder migreringen og omkostningerne til mandetimer. Jo glattere migreringen er, jo mindre tid og penge bruges på projektet.

Databasemigrationer kan være udfordrende, især for heterogene proprietære databasemigreringer såsom Oracle til PostgreSQL, Oracle til Percona eller MySQL. Den komplekse skemastruktur, datatyper og databasekode som PL/SQL kan være meget anderledes end måldatabaserne,
det kræver et skema- og kodetransformationstrin, før datamigreringen starter.

I den nylige artikel af min kollega Paul Namuag undersøgte han, hvordan man migrerer Oracle til Percona.

Denne gang vil vi tage et kig på, hvad du bør vide, før du migrerer fra Oracle til MariaDB.

MariaDB lover virksomhedens funktioner og migreringsfunktioner, som kan hjælpe med at migrere Oracle-databaser til open source-verdenen.

I dette blogindlæg vil vi dække følgende:

  • Hvorfor migrere?
  • Forskelle i lagermotorer
  • Overvejelser om databaseforbindelse
  • Simpel installation og administration
  • Sikkerhedsforskelle
  • Replikering og HA
  • PL/SQL og databasekode
  • Klyngning og skalering
  • Sikkerhedskopiering og gendannelse
  • Skykompatibilitet
  • Forskellige overvejelser

Hvorfor migrere fra Oracle?

De fleste virksomheder vil køre Oracle eller SQL Server, eller en kombination af begge, med små lommer af isolerede open source-databaser, der fungerer uafhængigt. Små og mellemstore virksomheder vil have en tendens til at implementere primært open source-databaser, især til nye applikationer. Men dette ændrer sig, og ofte er open source det vigtigste valg selv for store organisationer.

En hurtig sammenligning af disse to databasesystemer ser ud som følger:

  • Kun Oracle Express Edition er gratis, men den har meget begrænsede funktioner sammenlignet med MariaDB. For omfattende funktioner skal enten Oracle Standard Edition eller Oracle Enterprise Edition købes.
  • På den anden side arbejdede MariaDB og MySQL-fællesskabet hårdt på at minimere den potentielle funktionskløft. Sikkerhedsoverholdelse, hot backups og mange andre virksomhedsfunktioner er nu tilgængelige i MariaDB.

Der er ting, der altid var mere fleksible i MariaDB/MySQL end i massive Oracle-opsætninger. En af dem er den nemme replikering og horisontal klyngeskalerbarhed.

Storage Engine-forskelle

Lad os først starte med nogle grundlæggende ting. Du kan stadig høre en masse legender og myter om MySQL- eller MariaDB-begrænsninger, som for det meste refererer til de mørke tider, hvor den primære lagermotor var MyISAM.

MyISAM var standardlagermaskinen fra MySQL 3.23, indtil den blev erstattet af InnoDB i MariaDB 5.5. Det er en let, ikke-transaktionel motor med stor ydeevne, men tilbyder ikke række-niveau-låsning eller pålideligheden af ​​InnoDB.

Med InnoDB (default storage engine) tilbyder MariaDB de to standard låse på rækkeniveau, som er delte låse(S) og eksklusive låse(X). En delt lås opnås til at læse en række og tillader andre transaktioner at læse den låste række. Forskellige transaktioner kan også erhverve deres egne delte låse.
Den bestemte lås opnås for at skrive til en række og forhindrer yderligere transaktioner i at låse den samme række.

InnoDB har helt klart dækket det største transaktionelle funktionsgab mellem disse to systemer.

På grund af den pluggbare natur af MariaDB tilbyder den endnu flere lagermotorer, så du bedre kan justere den til en specifik arbejdsbelastning. dvs. når plads betyder noget, kan du gå med TokuDB, som tilbyder fantastisk komprimeringsforhold, Spider optimeret til partitionering og datasharding, ColumnStore til big data-skalering.

Ikke desto mindre, for dem, der migrerer fra Oracle, vil min anbefaling være at gå først med InnoDB-lagringsmotoren.

Forbindelsesovervejelser

MariaDB deler med Oracle god support til databaseadgang, herunder ODBC- og JDBC-drivere, samt adgangsbiblioteker til Perl, Python og PHP. MySQL og Oracle understøtter begge binære store objekter, karakter-, numeriske og datodatatyper. Så du burde ikke have nogen problemer med at finde den rigtige forbindelse til dine applikationstjenester.

MariaDB har ikke den dedikerede lytterproces til at vedligeholde databaseforbindelser nori SCAN-adresse for den klyngede database, som vi kender fra Oracle. Du finder heller ikke fleksible databasetjenester. I stedet skal du konfigurere manuelt mellem Unix-socket (en lokal, mest sikker måde at forbinde DB - app på den samme server), fjernforbindelser (som standard tillader MariaDB ikke fjernlogin) og også pipe og hukommelse tilgængelig på Windows kun systemer. For klyngen skal SCAN-adressen udskiftes af belastningsbalanceren. MariaDB anbefaler at bruge deres andet produkt MaxScale, men du kan også finde andre som ProxySQL eller HAproxy, der vil fungere med MariaDB, med nogle begrænsninger. Selvom det kan være svært at bruge eksterne load balancere til MariaDB, kan du finde fantastiske funktioner, som til sammenligning ikke er tilgængelige i Oracle-databasen.

En belastningsbalancer vil også være en anbefaling til dem, der leder efter Oracle Transparent Application Failover (TAF), Oracle Firewall DB eller nogle af de avancerede sikkerhedsfunktioner som Oracle Connection Manager. Du kan finde mere om at vælge den rigtige load balancer i følgende hvidbog.

Selvom disse teknologier er gratis og kan implementeres manuelt ved hjælp af script-baserede installationer, automatiserer systemer som ClusterControl processen med deres peg-og-klik-grænseflade. ClusterControl lader dig også implementere caching-teknologier.

Simpel installation og administration

Den seneste tilgængelige Oracle DB-version tilføjede en længe ventet installationsfunktion:Oracle 18c kan nu installeres på Oracle Linux ved hjælp af en RPM. Dedikeret Java-baseret installation var altid et problem for dem, der ønskede at skrive automatisering til deres kogebøger eller Puppet-kodestykker. Du kunne gå med foruddefineret lydløs installation, men filen ændrede sig fra tid til anden, og stadig var du nødt til at håndtere afhængighedshelvede. RPM-baseret installation var bestemt et godt træk.

Så hvordan fungerer det i MariaDB?

For dem, der flytter fra Oracle-verdenen, er det altid en dejlig overraskelse at se, hvor hurtigt du kan implementere forekomster, oprette nye databaser eller endda opsætte komplekse replikeringsforløb. Installation og konfigurationsprocessen er sandsynligvis den glatteste del af migreringsprocessen. Selvom det kræver tid og viden at vælge de rigtige indstillinger.

Oracle leverer et sæt binære distributioner af MySQL. Disse omfatter generiske binære distributioner i form af komprimerede tar-filer (filer med en .tar.gz-udvidelse) til en række platforme og binære filer i platformsspecifikke pakker. På Windows-platformen kan du finde en standardinstallationsguide via en GUI.

Oracle-databasekonfigurationsassistenten (DBCA) er som udgangspunkt ikke nødvendig, da du vil være i stand til at oprette en database med en enkelt linjekommando.

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

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

Du kan også have en database med forskellige databasesamlinger og tegnsæt under den samme MariaDB-instans.

Replikeringsopsætning er bare at aktivere binær logning på en master (svarende til arkivlog i Oracle) og køre følgende kommando på slaven for at vedhæfte den til masteren.

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

Sikkerhed og overholdelse

Oracle giver forbedret databasesikkerhed.

Brugergodkendelse udføres i Oracle ved at specificere globale roller ud over placering, brugernavn og adgangskode. I Oracle udføres brugergodkendelse ved hjælp af forskellige godkendelsesmetoder, herunder databasegodkendelse, ekstern godkendelse og proxygodkendelse.

I lang tid var roller ikke tilgængelige i MariaDB eller MySQL. MariaDB tilføjede roller med version 10.2, efter at de dukkede op i MySQL 8.0.

Roller, en mulighed, der er meget brugt i almindelige Oracle DB-opsætninger, kan nemt transformeres i MariaDB, så du ikke behøver at spilde tid på justeringer af enkeltbrugertilladelser.

Opret, skift bruger, adgangskoder:Det hele fungerer på samme måde som Oracle DB.

For at opnå standarder for overholdelse af virksomhedssikkerhed tilbyder MariaDB indbyggede funktioner som:

  • Revisionsplugin
  • Kryptering af data-at-rest
  • Certifikater, TSS-forbindelse
  • PAM-plugin

Revisionsplugin-tilbud en slags finkornet revision (FGA) eller AUDI SQL tilgængelig i Oracle. Det tilbyder ikke det samme sæt funktioner, men normalt er det godt nok til at imødekomme revisioner af sikkerhedsoverholdelse.

Kryptering af data-at-rest Data i hvile kryptering kan være et krav for sikkerhedsbestemmelser som HIPAA eller PCI DSS. En sådan kryptering kan implementeres på flere niveauer - du kan kryptere hele disken, hvorpå filerne er gemt. Du kan kun kryptere MySQL-databasen gennem funktionalitet, der er tilgængelig i de seneste versioner af MySQL eller MariaDB. Kryptering kan også implementeres i applikationen, så den krypterer dataene, før de lagres i databasen. Hver mulighed har sine fordele og ulemper:diskkryptering kan kun hjælpe, når diske bliver stjålet fysisk, men filerne vil ikke blive krypteret på en kørende databaseserver.

PAM-plugin udvider logningsfunktionalitet til stramme brugerkonti med LDAP-indstillinger. Faktisk finder jeg det meget nemmere at konfigurere end LDAP-integration med Oracle-database.

Replikering og HA

MariaDB er kendt for sin replikeringsenkelhed og fleksibilitet. Som standard kan du læse eller endda skrive til dine standby-/slaveservere. Heldigvis bragte MySQL 10.X-versioner mange væsentlige forbedringer til replikering, herunder globale transaktions-id'er, hændelseskontrolsummer, multi-threaded slaves og crash-sikre slaver/mastere til at gøre replikering endnu bedre. DBA'er, der er vant til at læse og skrive MySQL-replikering, ville forvente en lignende eller endda enklere løsning fra sin storebror, Oracle. Desværre ikke som standard.

Den fysiske standard-standby-implementering for Oracle er lukket for alle læse-skrive-operationer. Faktisk tilbyder Oracle logisk variation, men det har mange begrænsninger, og det er ikke designet til HA. Løsningen på dette problem er en ekstra betalt funktion kaldet Active Data Guard, som du kan bruge til at læse data fra standby, mens du anvender redo-logs.

Active Data Guard er en betalt tilføjelsesløsning til Oracles gratis Data Guard-katastrofegendannelsessoftware, der kun er tilgængelig for Oracle Database Enterprise Edition (den højeste prislicens). Den leverer skrivebeskyttet adgang, mens den løbende anvender ændringer sendt fra den primære database. Som en aktiv standby-database hjælper den med at aflæse læseforespørgsler, rapportering og trinvise sikkerhedskopier fra den primære database. Produktets arkitektur er designet til at tillade standby-databaser at blive isoleret fra fejl, der kan opstå i den primære database.

En spændende funktion ved Oracle database 12c og noget, som Oracle DBA ville savne, er valideringen af ​​datakorruption. Korruptionstjek af Oracle Data Guard udføres for at sikre, at data er i nøjagtig justering, før data kopieres til en standby-database. Denne mekanisme kan også bruges til at gendanne datablokke på den primære direkte fra standby-databasen.

MariaDB tilbyder forskellige replikeringsmetoder og replikeringsfunktioner som:

  • synkron,
  • asynkron,
  • semi-synkron

Funktionssættet til MariaDB-replikering er rigt. Med synkron replikering kan du opsætte failover uden tab af skrivetransaktion. For at reducere asynkrone replikationsforsinkelser kan du ønske at gå med In-order paralleliseret replikering på slaver. De hændelser, der kan komprimeres, er de hændelser, der normalt kan være af betydelig størrelse:Forespørgselshændelser (for DDL og DML i sætningsbaseret replikering) og rækkehændelser (for DML i rækkebaseret replikering). I lighed med andre komprimeringsmuligheder er MariaDB-komprimeret replikering gennemsigtig. Som nævnt før, er hele processen meget let sammenlignet med Oracle Data Guard fysisk og logisk replikering.

PL/SQL og databasekode

Nu kommer vi til den svære del:PL/SQL.

Mens replikering og HA med MariaDB regerer. Oracle er kongen af ​​PL/SQL, ingen tvivl der.

PL/SQL er den største hindring for migrering til open source-verdenen i mange organisationer. Men MariaDB giver ikke op her.

MariaDB 10.3 (også kendt som MariaDB TX 3.0) har tilføjet nogle fantastiske nye funktioner, herunder SEQUENCE-konstruktioner, pakker i Oracle-stil og ROW-datatypen – hvilket gør migreringer meget nemmere.

Med den nye parameter SQL_MODE =ORACLE er MariaDB nu i stand til at parse, afhængigt af sagen, en masse af den ældre Oracle PL/SQL uden at omskrive koden.

Som vi kan finde på deres kundehistorieside ved hjælp af kerne Oracle PL/SQL-kompatibilitet i MariaDB TX 3.0, har Development Bank of Singapore (DBS) været i stand til at migrere mere end halvdelen af ​​deres forretningskritiske applikationer på kun 12 måneder fra Oracle Database til MariaDB.

Den nye kompatibilitetstilstand hjælper med følgende syntaks:

  • Sløjfesyntaks
  • Variabelerklæring
  • Ikke-ANSI Stored Procedure Construct
  • Markørsyntaks
  • Lagrede procedureparametre
  • Datatypearv (%TYPE, %ROWTYPE)
  • PL/SQL-undtagelser
  • Synonymer for grundlæggende SQL-typer (VARCHAR2, NUMBER, …)

Men hvis vi tager et kig på den ældre version 10.2, så noget af kompatibiliteten mellem Oracle og MariaDB før som:

  • Almindelige tabeludtryk
  • Rekursive SQL-forespørgsler
  • Windows-funktioner, NTILETE, RANK, DENESE_RANK.

Native PL/SQL-parsing eller i nogle tilfælde kan direkte eksekvering af native Oracle-procedurer i høj grad reducere udviklingsomkostningerne.

En anden meget nyttig funktion tilføjet af SQL_MODE=Oracle er sekvenser. Implementeringen af ​​sekvenser i MariaDB Server 10.3 følger SQL:2003-standarden og inkluderer syntakskompatibilitet med Oracle.

For at oprette en sekvens bruges en create-sætning:

CREATE SEQUENCE Sequence_1 
  START WITH 1  
  INCREMENT BY 1;

Når oprettede sekvenser kan bruges for eksempel med inserts som:

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

Klynger og skalering

MariaDB er en asynkron, aktiv-aktiv, multi-master databaseklynge.

MariaDB Cluster adskiller sig fra det, der er kendt som Oracles MySQL Cluster - NDB.

MariaDB-klyngen er baseret på multi-master-replikeringsplugin'et leveret af Codership (Galera). Siden version 5.5 er Galera-teknologien (wsrep API) en integreret del af MariaDB. Galera plugin-arkitekturen står på tre kernelag:certificering, replikering og gruppekommunikationsramme.

Certificeringslaget forbereder skrivesættene og udfører certificeringstjek på dem, hvilket garanterer, at de kan anvendes.

Replikeringslaget administrerer replikeringsprotokollen og giver den samlede bestillingskapacitet.

Group Communication Framework implementerer en plugin-arkitektur, som tillader andre systemer at oprette forbindelse via gcomm-backend-skema.

Den største forskel fra Oracle RAC er, at hver node har adskilte data. Oracle RAC bliver almindeligvis forvekslet som en komplementær HA-løsning, mens diske normalt er i det samme diskarray. MariaDB tilbyder ikke kun redundant lagring, men det understøtter også geo-placeret clustering uden behov for dedikeret fiber.

Sikkerhedskopiering og gendannelse

Oracle tilbyder mange sikkerhedskopieringsmekanismer, herunder hot backup, backup, import, eksport og mange andre.

I modsætning til MySQL tilbyder MariaDB et eksternt værktøj til hot backup kaldet mariabackup. Det er en gaffel af Percona XtraBackup designet til at arbejde med krypterede og komprimerede tabeller og er den anbefalede backupmetode til MariaDB-databaser.

MariaDB Server 10.1 introducerede MariaDB-komprimering og Data-at-Rest-kryptering, men de eksisterende backup-løsninger understøttede ikke fuld backup-kapacitet for disse funktioner. Så MariaDB besluttede at udvide XtraBackup (version 2.3.8) og gav denne løsning navnet Mariabackup.

Percona og Mariabackup tilbyder lignende funktionaliteter, men hvis du er interesseret i forskelle, kan du finde dem her.

Hvad MariaDB ikke tilbyder, er gendannelseskataloget for dine databasesikkerhedskopier. Heldigvis kan dette udvides med tredjepartssystemer som ClusterControl.

Cloud-kompatibilitet

Cloud-infrastrukturer bliver stadig mere populære i disse dage. Selvom en cloud-VM måske ikke er så pålidelig som en server i virksomhedskvalitet, tilbyder de vigtigste cloud-udbydere en række værktøjer til at øge servicetilgængeligheden. Du kan vælge mellem EC2-arkitektur eller DBaaS som Amazon RDS.

Amazon RDS understøtter MariaDB Server 10.3. Det understøtter ikke SQL_MODE=Oracle, men du kan stadig finde et sæt funktioner, der gør det nemmere at migrere. Amazon cloud understøtter almindelige administrationsopgaver som overvågning, sikkerhedskopier, multi A-Z implementeringer osv.

En anden populær cloud-udbyder, Google Cloud, tilbyder også den seneste MariaDB-version. Du kan implementere det som et container- eller Bintami-bibliotek-certificeret VM-image.

Azure tilbyder også sin egen implementering af MariaDB. Det ligner Amazon RDS, med sikkerhedskopier, skalering og builds i høj tilgængelighed. Den garanterede SLA er 99,99 %, hvilket svarer til 4 m 23 sekunders nedetid pr. måned.

Forskellige overvejelser

Som nævnt i begyndelsen af ​​denne artikel, er Oracle til MariaDB-migrering en flertrinsproces. Et generelt råd vil være ikke at forsøge at migrere alle databaserne på én gang. At opdele migreringen i små partier er i de fleste scenarier den bedste fremgangsmåde.

Hvis du ikke er fortrolig med teknologien, så prøv det. Du skal føle dig sikker på platformen og vide, at den er fordele og ulemper. Test vil opbygge tillid, og det påvirker dine beslutninger med hensyn til migrering.

Der er interessante værktøjer, som kan hjælpe dig med den sværeste PL/SQL-migreringsproces. Så interessante er dbconvert, AWS Schema Conversion Tool - AWS Documentation.

Gennem årene har MariaDB opnået Enterprise-support og modenhed til at køre kritiske og komplekse datatransaktionssystemer. Med den seneste version har MariaDB tilføjet nogle fantastiske nye funktioner såsom SQL_Mode=Oracle-kompatibilitet, hvilket gør overgangsprocessen nemmere end nogensinde før.

Endelig kan du slutte dig til mig den 12. marts til et webinar, hvor jeg vil lede dig gennem alt, hvad du behøver at vide, når det kommer til at migrere fra Oracle-databasen til MariaDB.


  1. SQL-fejl:Forkert syntaks nær søgeordet 'Bruger'

  2. Find duplikerede poster i MySQL

  3. JSON_MERGE_PRESERVE() – Flet flere JSON-dokumenter i MySQL

  4. 3 metoder til at forbinde MDF-fil til SQL Server