sql >> Databáze >  >> RDS >> PostgreSQL

Nejlepší nástroje s otevřeným zdrojovým kódem pro migrace PostgreSQL

Migrace databáze je proces migrace dat z jedné nebo více zdrojových databází do jedné nebo více cílových databází pomocí služby nebo nástroje. Existují různé typy migrací. Můžete migrovat z technologie na jinou, do jiného datového centra nebo do cloudu, nebo dokonce na stejném místě a se stejnou technologií na jiný stroj. Nejlepší nástroj pro migraci PostgreSQL závisí na typu migrace a požadavcích, jako je dostupnost nebo tolerance prostojů, a někdy je těžké najít ten nejlepší nástroj pro tuto práci.

V tomto blogu zmíníme některé open-source nástroje pro migraci PostgreSQL s krátkým přehledem každé možnosti.

Nástroje pro migraci zálohování a obnovení

Toto by mohl být nejjednodušší způsob migrace dat, ale také nejpomalejší z hlediska cíle doby obnovy (RTO). Použití této metody znamená, že si vezmete zálohu ze své aktuální databáze, nejspíše logickou zálohu, pokud ji chcete obnovit v jiné verzi nebo infrastruktuře, zkopírujete výpis a obnovíte ji na novém serveru. V závislosti na množství dat to může trvat hodně času, ale je to základní způsob migrace databáze. Podívejme se na některé nástroje.

pgdump/pgdumpall

pg_dump je nástroj pro zálohování jedné databáze PostgreSQL. Vytváří konzistentní zálohy, i když je databáze používána souběžně, protože neblokuje ostatní uživatele. Chcete-li zálohovat celý cluster nebo zálohovat globální objekty, které jsou společné pro všechny databáze v clusteru (jako jsou role a tabulkové prostory), musíte místo toho použít pg_dumpall.

Výpisy mohou být zobrazeny ve formátu skriptu nebo archivu. Výpisy skriptů jsou soubory ve formátu prostého textu obsahující příkazy SQL potřebné k rekonstrukci databáze do stavu, ve kterém byla v době, kdy byla uložena. Lze jej použít k rekonstrukci databáze na jiných strojích, jiných architekturách nebo dokonce na jiných databázových produktech SQL.

pg_basebackup

pg_basebackup se používá k vytvoření základní zálohy běžícího databázového clusteru PostgreSQL. Záloha se provádí bez ovlivnění ostatních databázových klientů a lze ji použít jak pro PITR (Point-In-Time-Recovery), tak jako výchozí bod záložního serveru Streaming Replication. Vytváří přesnou kopii souborů databázového clusteru a zároveň zajišťuje, aby se server automaticky přepnul do režimu zálohování a z něj. Zálohuje se vždy celý databázový cluster; není možné zálohovat jednotlivé databáze nebo databázové objekty.

pgBackRest

pgBackRest je nástroj pro zálohování s otevřeným zdrojovým kódem, který vytváří fyzické zálohy s určitými vylepšeními ve srovnání s klasickým nástrojem pg_basebackup. Pomocí pgBackRest můžete provést počáteční kopii databáze pro replikaci datových proudů pomocí existující zálohy, nebo můžete použít možnost delta k přestavbě starého záložního serveru.

Některé z nejdůležitějších funkcí pgBackRest jsou:

  • Paralelní zálohování a obnovení
  • Místní nebo vzdálené ovládání
  • Úplné, přírůstkové a rozdílové zálohy
  • Otočení zálohy a vypršení platnosti archivu
  • Kontrola integrity zálohy
  • Obnovení zálohy
  • Delta Restore
  • Šifrování

Nástroje pro migraci PostgreSQL

Místo použití nástroje pro zálohování existují různé nástroje, které tuto migraci provádějí rychleji a různými metodami. Může používat přístup ETL nebo dokonce konfigurovat replikaci mezi různými databázovými technologiemi pomocí stejného konceptu extrahovat - transformovat - načíst. Podívejme se na některé z těchto nástrojů.

pg_chameleon

pg_chameleon je replika systému MySQL na PostgreSQL. Dokáže se připojit k replikačnímu protokolu MySQL a replikovat změny dat v PostgreSQL. Ať už uživatel potřebuje nastavit trvalou repliku mezi MySQL a PostgreSQL, nebo provést migraci enginu, pg_chameleon je pro tento úkol dobrá volba.

Hlavní funkce jsou:

  • Přečtěte si z více schémat MySQL a obnovte je do cílové databáze PostgreSQL
  • Nastavte PostgreSQL, aby fungoval jako slave MySQL
  • Základní podpora DDL (CREATE/DROP/ALTER TABLE, DROP PRIMÁRNÍ KLÍČ/KRUNCATE, PŘEJMENOVÁNÍ)
  • Tabulky, které generují chyby, jsou z repliky automaticky vyloučeny
  • Možnost aktualizovat jednotlivé tabulky nebo jednotlivá schémata
  • Odpojte repliku od MySQL pro podporu migrace
  • Přepsání typu dat
  • Démonizovaný proces init_replica
  • Démonizovaný proces repliky se dvěma samostatnými podprocesy, jedním pro čtení a jedním pro přehrávání

pgloader

pgloader načítá data z různých zdrojů do PostgreSQL. Dokáže transformovat data, která čte za běhu, a před načtením a po načtení odesílá nezpracované SQL. Ke streamování dat na server používá protokol COPY PostgreSQL a spravuje chyby vyplněním dvojice souborů odmítnut.dat a zamítnutí.log.

Díky možnosti načítání dat přímo z databázového zdroje podporuje pgloader také migraci z jiných produktů na PostgreSQL. V tomto provozním režimu pgloader zpracovává jak schéma, tak datovou část migrace v jediném bezobslužném příkazu, což umožňuje implementovat kontinuální migraci.

Hlavní funkce jsou:

  • Podporováno mnoho zdrojových formátů, jako jsou soubory CSV, db3 a IBM IXF
  • Transformace dat za chodu
  • Projekce plného pole
  • Čtení z komprimovaných souborů (zip, tar a gzip)
  • Podpora HTTP(S)
  • Zjištění cílového schématu
  • Při chybě zastavit/obnovit další možnosti
  • Před/Post SQL příkazy
  • Migrace jedním příkazem
  • Objevování schématu
  • Uživatelem definovaná pravidla casting
  • Částečné migrace včetně/bez tabulek
  • Pouze schéma nebo data
  • Materializované pohledy nebo přepisování schématu za běhu
  • Nepřetržitá migrace

Ora2Pg

Ora2Pg je bezplatný nástroj používaný k migraci databáze Oracle nebo MySQL na schéma kompatibilní s PostgreSQL. Připojí vaši aktuální databázi, naskenuje ji a extrahuje její strukturu nebo data, poté vygeneruje SQL skripty, které můžete načíst do své databáze PostgreSQL.

Hlavní funkce jsou:

  • Exportujte celé schéma databáze (tabulky, pohledy, sekvence, indexy) s jedinečným, primárním, cizím klíčem a omezeními kontroly
  • Exportovat granty/privilegia pro uživatele a skupiny
  • Exportovat rozsah/seznam oddílů a pododdílů
  • Exportujte výběr tabulky (zadáním názvů tabulek).
  • Exportovat předdefinované funkce, spouštěče, procedury, balíčky a těla balíčků
  • Exportujte úplná data nebo postupujte podle klauzule WHERE
  • Plná podpora objektu Oracle BLOB jako PG BYTEA
  • Exportujte pohledy Oracle jako tabulky PG
  • Exportovat uživatelem definované typy Oracle
  • Poskytnout základní automatický převod kódu PLSQL na PLPGSQL
  • Exportujte tabulky Oracle jako cizí tabulky obalu dat
  • Exportovat materializované zobrazení
  • Zobrazit podrobnou zprávu o obsahu databáze Oracle
  • Posouzení nákladů na migraci databáze Oracle
  • Posouzení úrovně obtížnosti migrace databáze Oracle
  • Posouzení nákladů na migraci kódu PL/SQL ze souboru
  • Posouzení nákladů na migraci dotazů Oracle SQL uložených v souboru
  • Generujte soubory XML ktr pro použití s ​​Penthalo Data Integrator (Kettle)
  • Exportujte lokátor Oracle a prostorové geometrie do PostGis
  • Exportovat DBLINK jako Oracle FDW
  • Exportovat SYNONYMA jako zobrazení
  • Exportovat DIRECTORY jako externí tabulku nebo adresář pro příponu external_file
  • Plný export MySQL stejně jako databáze Oracle

Existuje více dostupných možností ETL, jako je Pentaho nebo Talen, ale ty jsou více orientovány na integraci dat nebo správu dat než na migraci, takže je zde nebudeme popisovat, abychom se vyhnuli rozsáhlému příspěvku na blogu. Více informací naleznete zde.

Logická replikace PostgreSQL pro migrace

Logická replikace je metoda replikace datových objektů a jejich změn na základě jejich replikační identity (obvykle primární klíč). Je založen na režimu publikování a odběru, kde jeden nebo více odběratelů odebírá jednu nebo více publikací v uzlu vydavatele.

Publikace je sada změn generovaných z tabulky nebo skupiny tabulek (označovaná také jako replikační sada). Uzel, kde je definována publikace, se nazývá vydavatel. Předplatné je následnou stranou logické replikace. Uzel, kde je definováno předplatné, se označuje jako předplatitel a definuje připojení k jiné databázi a sadě publikací (jedné nebo více), ke kterým se chce přihlásit. Předplatitelé získávají data z publikací, které odebírají.

Tuto metodu lze použít pro migraci nebo upgrade vaší PostgreSQL databáze.

Další informace naleznete v příslušném příspěvku na blogu o upgradu PostgreSQL s nulovými prostoji.

Závěr

Migrace je obtížný a riskantní úkol, protože přesouváte nebo transformujete data z jednoho (nebo více) zdrojů do cíle (nebo více než jednoho), a je ještě horší, pokud je vaším cílem jiný motor. Budete tedy muset mít dobrý plán s podrobnými kroky a samozřejmě testovací prostředí pro testování všech fází migrace. V tomto blogu jsme zmínili některé nástroje, které vám pomohou s tímto úkolem, a nejlepší volba bude záviset na vašich požadavcích na dostupnost vašeho systému.


  1. 3 způsoby, jak najít řádky, které obsahují velká písmena v SQLite

  2. Jak funguje funkce QUOTENAME() v SQL Server (T-SQL)

  3. Automatizace databáze pomocí Puppet:Nasazení MySQL &MariaDB Galera Cluster

  4. YEAR() Příklady – MySQL