sql >> Databáze >  >> RDS >> MariaDB

Migrace z databáze Oracle na MariaDB – co byste měli vědět

Gartner předpovídá, že do roku 2022 bude 50 % stávajících komerčních databází převedeno na open source databáze. Ještě více, 70 % nových interních aplikací bude vyvíjeno na open source databázové platformě (State of the Open-Source DBMS Market, 2018).

To jsou vysoká čísla s ohledem na vyspělost, stabilitu a kritičnost oblíbeného, ​​proprietárního databázového softwaru. Totéž lze pozorovat v žebříčku nejlepších databází, kde většina z deseti nejlepších databází je open source.

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

Co nutí společnosti dělat takové kroky?

Důvodů pro migraci databázových systémů může být mnoho. Pro některé budou hlavním důvodem náklady na licenci a vlastnictví; ale je to opravdu jen o ceně? A je open source dostatečně stabilní, aby přesunul kritické produkční systémy do tohoto nového open source světa?

Databáze s otevřeným zdrojovým kódem, zejména ty nové přivedené do organizace, často pocházejí od vývojáře v projektovém týmu. Je vybrán, protože je zdarma (neovlivňuje přímé externí výdaje projektu) a splňuje současné technické požadavky.

Ale bezplatný aspekt ve skutečnosti nepřichází jednoduše bez nákladů, protože musíte vzít v úvahu mnoho faktorů včetně migrace a nákladů na pracovní hodiny. Čím hladší migrace, tím méně času a peněz vynaložených na projekt.

Migrace databází mohou být náročné zejména pro heterogenní migrace proprietárních databází, jako je Oracle na PostgreSQL, Oracle na Percona nebo MySQL. Složitá struktura schématu, datové typy a databázový kód, jako je PL/SQL, se mohou značně lišit od těch cílových databází,
vyžadují před zahájením migrace dat krok transformace schématu a kódu.

V nedávném článku mého kolegy Paula Namuaga zkoumal, jak migrovat Oracle na Percona.

Tentokrát se podíváme na to, co byste měli vědět před migrací z Oracle na MariaDB.

MariaDB slibuje podnikové funkce a funkce migrace, které mohou pomoci migrovat databáze Oracle do světa open source.

V tomto příspěvku na blogu se budeme zabývat následujícím:

  • Proč migrovat?
  • Rozdíly v modulu úložiště
  • Úvahy o připojení k databázi
  • Jednoduchost instalace a správy
  • Rozdíly v zabezpečení
  • Replikace a HA
  • PL/SQL a kód databáze
  • Shlukování a škálování
  • Zálohování a obnovení
  • Kompatibilita s cloudem
  • Různé úvahy

Proč migrovat z Oracle?

Většina podniků bude provozovat Oracle nebo SQL Server, nebo kombinaci obou, s malými kapsami izolovaných open source databází fungujících nezávisle. Malé a střední podniky by měly tendenci nasazovat především databáze s otevřeným zdrojovým kódem, zejména pro nové aplikace. Ale to se mění a často je open source hlavní volbou i pro velké organizace.

Rychlé srovnání těchto dvou databázových systémů vypadá následovně:

  • Pouze Oracle Express Edition je zdarma, ale ve srovnání s MariaDB má velmi omezené funkce. Pro rozsáhlé funkce je třeba zakoupit buď Oracle Standard Edition nebo Oracle Enterprise Edition.
  • Na druhou stranu MariaDB a komunita MySQL usilovně pracovaly na minimalizaci mezery mezi potenciálními funkcemi. V MariaDB je nyní k dispozici bezpečnost, zálohování za chodu a mnoho dalších podnikových funkcí.

Jsou věci, které byly v MariaDB/MySQL vždy flexibilnější než v masivních nastaveních Oracle. Jedním z nich je snadná replikace a horizontální škálovatelnost clusteru.

Rozdíly úložiště

Nejprve začněme s některými základy. Stále můžete slyšet spoustu legend a mýtů týkajících se omezení MySQL nebo MariaDB, které většinou odkazují na temné časy, kdy hlavním úložištěm byl MyISAM.

MyISAM byl výchozím úložištěm od MySQL 3.23, dokud nebyl nahrazen InnoDB v MariaDB 5.5. Je to lehký, netransakční motor se skvělým výkonem, ale nenabízí zamykání na úrovni řádků ani spolehlivost InnoDB.

S InnoDB (výchozí modul úložiště) MariaDB nabízí dva standardní zámky na úrovni řádků, což jsou sdílené zámky (S) a exkluzivní zámky (X). Pro čtení řádku je získán sdílený zámek a umožňuje ostatním transakcím číst zamčený řádek. Různé transakce mohou také získat své vlastní sdílené zámky.
Konkrétní zámek se získá pro zápis do řádku a zabrání dalším transakcím v zamykání stejného řádku.

InnoDB rozhodně pokryl největší mezeru v transakčních funkcích mezi těmito dvěma systémy.

Díky zásuvné povaze MariaDB nabízí ještě více úložných modulů, takže jej můžete lépe přizpůsobit konkrétnímu pracovnímu zatížení. Tj. když záleží na prostoru, můžete použít TokuDB, který nabízí skvělý kompresní poměr, Spider optimalizovaný pro dělení a sdílení dat, ColumnStore pro škálování velkých dat.

Nicméně pro ty, kteří migrují z Oracle, bych doporučil nejprve použít úložiště InnoDB.

Úvahy o připojení

MariaDB sdílí s Oracle dobrou podporu pro přístup k databázím včetně ovladačů ODBC a JDBC a také přístupových knihoven pro Perl, Python a PHP. MySQL i Oracle podporují binární velké objekty, znakové, číselné a datové typy dat. Takže byste neměli mít žádné problémy s nalezením správného konektoru pro vaše aplikační služby.

MariaDB nemá vyhrazený proces naslouchání pro udržování databázových připojení nori SCAN adresy pro klastrovanou databázi, jak to známe z Oracle. Nenajdete ani flexibilní databázové služby. Místo toho budete muset ručně nakonfigurovat mezi Unix socket (místní, nejbezpečnější způsob připojení DB - aplikace na stejném serveru), vzdálená připojení (ve výchozím nastavení MariaDB nepovoluje vzdálené přihlášení) a také potrubí a paměť dostupnou ve Windows. pouze systémy. U clusteru je třeba adresu SCAN nahradit nástrojem pro vyrovnávání zatížení. MariaDB doporučuje používat jejich další produkt MaxScale, ale můžete také najít další, jako je ProxySQL nebo HAproxy, které budou pracovat s MariaDB, s určitými omezeními. I když může být použití externích load balancerů pro MariaDB obtížné, můžete najít skvělé funkce, které pro srovnání nejsou dostupné v databázi Oracle.

Nástroj pro vyrovnávání zatížení by byl také doporučením pro ty, kteří hledají Oracle Transparent Application Failover (TAF), Oracle Firewall DB nebo některé pokročilé bezpečnostní funkce, jako je Oracle Connection Manager. Více o výběru správného zařízení pro vyrovnávání zátěže naleznete v následujícím dokumentu.

Zatímco tyto technologie jsou zdarma a lze je nasadit ručně pomocí instalací založených na skriptech, systémy jako ClusterControl automatizují proces pomocí rozhraní typu point-and-click. ClusterControl vám také umožňuje nasadit technologie ukládání do mezipaměti.

Jednoduchost instalace a správy

Nejnovější dostupná verze Oracle DB přidala dlouho očekávanou funkci instalace:Oracle 18c lze nyní nainstalovat na Oracle Linux pomocí RPM. Vyhrazená instalace založená na Javě byla vždy problémem pro ty, kteří chtěli psát automatizaci pro své kuchařky nebo úryvky kódu Puppet. Mohli jste jít s předdefinovanou tichou instalací, ale soubor se čas od času měnil a přesto jste se museli vypořádat s peklem závislostí. Instalace založená na RPM byla rozhodně dobrým krokem.

Jak to tedy funguje v MariaDB?

Pro ty, kteří přecházejí ze světa Oracle, je vždy příjemným překvapením vidět, jak rychle můžete nasazovat instance, vytvářet nové databáze nebo dokonce nastavovat složité replikační toky. Proces instalace a konfigurace je pravděpodobně nejhladší částí procesu migrace. Ačkoli výběr správného nastavení vyžaduje čas a znalosti.

Oracle poskytuje sadu binárních distribucí MySQL. Patří mezi ně generické binární distribuce ve formě komprimovaných souborů tar (soubory s příponou .tar.gz) pro řadu platforem a binární soubory v balíčcích specifických pro platformu. Na platformě Windows můžete najít standardního průvodce instalací prostřednictvím GUI.

Asistent konfigurace databáze Oracle (DBCA) v zásadě není potřeba, protože budete moci vytvořit databázi pomocí jediného příkazu.

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

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

Ve stejné instanci MariaDB můžete mít také databázi s různými kolacemi databází a znakovými sadami.

Nastavení replikace slouží pouze k povolení binárního protokolování na hlavním serveru (podobně jako archivní protokol v Oracle) a spuštění následujícího příkazu na podřízeném zařízení pro připojení k hlavnímu serveru.

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

Zabezpečení a dodržování předpisů

Oracle poskytuje vylepšené zabezpečení databáze.

Autentizace uživatele se v Oracle provádí zadáním globálních rolí kromě umístění, uživatelského jména a hesla. V Oracle se autentizace uživatele provádí různými metodami ověřování, včetně ověřování databáze, externího ověřování a ověřování proxy.

Po dlouhou dobu nebyly role dostupné v MariaDB nebo MySQL. MariaDB přidala role s verzí 10.2 poté, co se objevily v MySQL 8.0.

Role, možnost, která se hojně používá v běžných nastaveních Oracle DB, lze snadno transformovat v MariaDB, takže nemusíte ztrácet čas úpravami oprávnění jednoho uživatele.

Vytvořit, změnit uživatele, hesla:to vše funguje podobně jako Oracle DB.

Pro dosažení standardů shody podnikového zabezpečení nabízí MariaDB vestavěné funkce jako:

  • Audit plugin v
  • Šifrování dat v klidu
  • Certifikáty, TSS připojení
  • Plugin PAM

Nabídky modulu auditu druh jemného auditování (FGA) nebo AUDI SQL dostupný v Oracle. Nenabízí stejnou sadu funkcí, ale obvykle je dost dobrý na to, aby vyhověl auditům shody zabezpečení.

Šifrování dat v klidu Šifrování dat v klidu může být požadavkem bezpečnostních předpisů, jako je HIPAA nebo PCI DSS. Takové šifrování lze implementovat na více úrovních – šifrovat můžete celý disk, na kterém jsou soubory uloženy. Pomocí funkcí dostupných v nejnovějších verzích MySQL nebo MariaDB můžete šifrovat pouze databázi MySQL. Šifrování může být také implementováno v aplikaci tak, že zašifruje data před uložením do databáze. Každá možnost má své pro a proti:šifrování disku může pomoci pouze v případě fyzické krádeže disků, ale soubory by na běžícím databázovém serveru nebyly zašifrovány.

Plugin PAM rozšiřuje funkce protokolování na úzké uživatelské účty s nastavením LDAP. Ve skutečnosti mi připadá mnohem jednodušší nastavit než integrace LDAP s databází Oracle.

Replikace a HA

MariaDB je dobře známá svou jednoduchostí a flexibilitou replikace. Ve výchozím nastavení můžete číst nebo dokonce zapisovat na své pohotovostní/podřízené servery. Naštěstí verze MySQL 10.X přinesly do Replication mnoho významných vylepšení, včetně globálních ID transakcí, kontrolních součtů událostí, vícevláknových podřízených zařízení a podřízených/masterů bezpečných při havárii, aby byla replikace ještě lepší. DBA zvyklí na čtení a zápis replikace MySQL by očekávali podobné nebo dokonce jednodušší řešení od svého většího bratra, společnosti Oracle. Bohužel ne ve výchozím nastavení.

Standardní implementace fyzického pohotovostního režimu pro Oracle je uzavřena pro jakékoli operace čtení a zápisu. Ve skutečnosti Oracle nabízí logické variace, ale má mnoho omezení a není určen pro HA. Řešením tohoto problému je další placená funkce nazvaná Active Data Guard, kterou můžete použít ke čtení dat z pohotovostního režimu, zatímco používáte opakování protokolů.

Active Data Guard je placené doplňkové řešení k bezplatnému softwaru Oracle pro obnovu po havárii Data Guard, který je k dispozici pouze pro Oracle Database Enterprise Edition (nejnákladnější licence). Poskytuje přístup pouze pro čtení, přičemž neustále aplikuje změny odeslané z primární databáze. Jako aktivní pohotovostní databáze pomáhá snižovat zatížení čtených dotazů, sestav a přírůstkových záloh z primární databáze. Architektura produktu je navržena tak, aby umožňovala izolovat záložní databáze od selhání, ke kterým může dojít v primární databázi.

Vzrušující funkce databáze Oracle 12c a něco, co by Oracle DBA postrádalo, je ověřování poškození dat. Před zkopírováním dat do záložní databáze se provádějí kontroly poškození Oracle Data Guard, aby bylo zajištěno, že jsou data v přesném zarovnání. Tento mechanismus lze také použít k obnovení datových bloků na primárním zařízení přímo z pohotovostní databáze.

MariaDB nabízí různé metody replikace a replikační funkce jako:

  • synchronní,
  • asynchronní,
  • semisynchronní

Sada funkcí pro replikaci MariaDB je bohatá. Se synchronní replikací můžete nastavit převzetí služeb při selhání bez ztráty transakcí zápisu. Chcete-li snížit zpoždění asynchronní replikace, možná budete chtít použít paralelní replikaci In-order na podřízených zařízeních. Události, které lze komprimovat, jsou události, které normálně mohou mít významnou velikost:události dotazu (pro DDL a DML v replikaci založené na příkazech) a události řádku (pro DML v replikaci založené na řádcích). Podobně jako u jiných možností komprese je komprimovaná replikace MariaDB transparentní. Jak již bylo zmíněno, celý proces je ve srovnání s fyzickou a logickou replikací Oracle Data Guard velmi snadný.

PL/SQL a kód databáze

Nyní se dostáváme k nejtěžší části:PL/SQL.

Zatímco replikace a HA s MariaDB kralují. Oracle je králem PL/SQL, o tom není pochyb.

PL/SQL je hlavní překážkou migrace do světa open source v mnoha organizacích. Ale MariaDB se zde nevzdává.

MariaDB 10.3 (také známá jako MariaDB TX 3.0) přidala několik úžasných nových funkcí včetně konstrukcí SEQUENCE, balíčků ve stylu Oracle a datového typu ROW – což výrazně usnadňuje migraci.

S novým parametrem SQL_MODE =ORACLE je MariaDB nyní schopna analyzovat, v závislosti na případu, spoustu starších Oracle PL/SQL bez přepisování kódu.

Jak můžeme zjistit na stránce příběhu zákazníků využívajících základní kompatibilitu Oracle PL/SQL v MariaDB TX 3.0, Development Bank of Singapore (DBS) byla schopna migrovat více než polovinu svých kriticky důležitých aplikací za pouhých 12 měsíců od společnosti Oracle. Databáze do MariaDB.

Nový režim kompatibility pomáhá s následující syntaxí:

  • Smyčková syntaxe
  • Prohlášení o proměnné
  • Konstrukt uložené procedury mimo ANSI
  • Syntaxe kurzoru
  • Parametry uložené procedury
  • Dědičnost typu dat (%TYPE, %ROWTYPE)
  • Výjimky stylu PL/SQL
  • Synonyma pro základní typy SQL (VARCHAR2, NUMBER, …)

Ale pokud se podíváme na starší verzi 10.2, některá kompatibilita mezi Oracle a MariaDB se objevila dříve, jako:

  • Běžné tabulkové výrazy
  • Rekurzivní dotazy SQL
  • Funkce systému Windows, NTILETE, RANK, DENESE_RANK.

Nativní analýza PL/SQL nebo v některých případech přímé provádění nativních procedur Oracle může výrazně snížit náklady na vývoj.

Další velmi užitečnou funkcí přidanou SQL_MODE=Oracle jsou sekvence. Implementace sekvencí v MariaDB Server 10.3 se řídí standardem SQL:2003 a zahrnuje kompatibilitu syntaxe s Oracle.

K vytvoření sekvence se používá příkaz create:

CREATE SEQUENCE Sequence_1 
  START WITH 1  
  INCREMENT BY 1;

Když vytvořené sekvence mohou být použity například s inserty jako:

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

Shlukování a škálování

MariaDB je asynchronní, aktivní-aktivní, multi-master databázový cluster.

MariaDB Cluster se liší od toho, co je známé jako Oracle's MySQL Cluster – NDB.

Cluster MariaDB je založen na multi-master replikačním pluginu poskytovaném Codership (Galera). Od verze 5.5 je nedílnou součástí MariaDB technologie Galera (wsrep API). Architektura pluginu Galera stojí na třech základních vrstvách:certifikace, replikace a skupinová komunikace.

Certifikační vrstva připraví sady zápisů a provede na nich certifikační kontroly, čímž zaručí, že je lze použít.

Replikační vrstva spravuje replikační protokol a poskytuje celkovou schopnost objednávání.

Group Communication Framework implementuje architekturu zásuvných modulů, která umožňuje ostatním systémům připojit se prostřednictvím backendového schématu gcomm.

Hlavní rozdíl od Oracle RAC je v tom, že každý uzel má oddělená data. Oracle RAC je běžně mylně považován za doplňkové řešení HA, zatímco disky jsou obvykle ve stejném diskovém poli. MariaDB nabízí nejen redundantní úložiště, ale také podporuje geograficky umístěné clustery bez potřeby vyhrazeného vlákna.

Zálohování a obnovení

Oracle nabízí mnoho mechanismů zálohování včetně zálohování za chodu, zálohování, importu, exportu a mnoha dalších.

Na rozdíl od MySQL nabízí MariaDB externí nástroj pro horké zálohy zvaný mariabackup. Je to fork Percona XtraBackup navržený pro práci se šifrovanými a komprimovanými tabulkami a je doporučenou metodou zálohování pro databáze MariaDB.

MariaDB Server 10.1 představil MariaDB Compression a Data-at-Rest Encryption, ale stávající řešení zálohování nepodporovala plnou zálohovací kapacitu pro tyto funkce. MariaDB se tedy rozhodla rozšířit XtraBackup (verze 2.3.8) a nazvala toto řešení Mariabackup.

Percona a Mariabackup nabízejí podobné funkce, ale pokud vás zajímají rozdíly, najdete je zde.

Co MariaDB nenabízí, je katalog obnovy záloh vaší databáze. Naštěstí to lze rozšířit pomocí systémů třetích stran, jako je ClusterControl.

Kompatibilita cloudu

Cloudové infrastruktury jsou v dnešní době stále populárnější. Přestože cloudový VM nemusí být tak spolehlivý jako podnikový server, hlavní poskytovatelé cloudu nabízejí různé nástroje pro zvýšení dostupnosti služeb. Můžete si vybrat mezi architekturou EC2 nebo DBaaS jako Amazon RDS.

Amazon RDS podporuje MariaDB Server 10.3. Nepodporuje SQL_MODE=Oracle, ale stále můžete najít sadu funkcí, které usnadňují migraci. Cloud Amazon podporuje běžné úlohy správy, jako je monitorování, zálohování, nasazení více A-Z atd.

Další populární poskytovatel cloudu, Google Cloud, také nabízí nejnovější verzi MariaDB. Můžete jej nasadit jako kontejner nebo bitovou kopii virtuálního počítače s certifikací knihovny Bintami.

Azure také nabízí vlastní implementaci MariaDB. Je to podobné jako u Amazon RDS s vysokou dostupností záloh, škálování a sestavení. Garantovaná SLA je 99,99 %, což odpovídá 4 m 23 sekund za měsíc prostojů.

Různé úvahy

Jak bylo zmíněno na samém začátku tohoto článku, migrace Oracle na MariaDB je vícefázový proces. Obecnou radou bude nepokoušet se migrovat všechny databáze najednou. Rozdělení migrace do malých dávek je ve většině scénářů nejlepší přístup.

Pokud se v technologii nevyznáte, vyzkoušejte ji. Měli byste se s platformou cítit sebevědomě a vědět, jaké jsou její výhody a nevýhody. Testování zvýší důvěru a ovlivní vaše rozhodnutí ohledně migrace.

Existují zajímavé nástroje, které vám mohou pomoci s nejobtížnějším procesem migrace PL/SQL. Tak zajímavé jsou dbconvert, AWS Schema Conversion Tool - AWS Documentation.

V průběhu let MariaDB získala Enterprise podporu a vyspělost pro provozování kritických a komplexních systémů pro transakce s daty. S nejnovější verzí MariaDB přidala několik skvělých nových funkcí, jako je kompatibilita SQL_Mode=Oracle, díky čemuž je proces přechodu jednodušší než kdykoli předtím.

Konečně se ke mně můžete připojit 12. března na webináři, během kterého vás provedu vším, co potřebujete vědět, pokud jde o migraci z databáze Oracle do MariaDB.


  1. Vytvoření webové aplikace od nuly pomocí Python Flask a MySQL:Část 3

  2. Proces upgradu krok za krokem na R12.2 Upgrade část -2 (hlavní upgrade ovladače pro R12.2.0)

  3. Jak používat MySQL s Deno a Oak

  4. Nastavit výchozí hodnotu celočíselného sloupce SQLite