sql >> Databasteknik >  >> RDS >> PostgreSQL

De bästa verktygen med öppen källkod för PostgreSQL-migrering

Databasmigrering är processen att migrera data från en eller flera källdatabaser till en eller flera måldatabaser med hjälp av en tjänst eller ett verktyg. Det finns olika typer av migrationer. Du kan migrera från en teknik till en annan, till ett annat datacenter eller till molnet, eller till och med på samma plats och samma teknik till en annan maskin. Det bästa verktyget för en PostgreSQL-migrering beror på typen av migrering och krav som tillgänglighet eller stilleståndstolerans, och ibland är det svårt att hitta det bästa verktyget för att göra jobbet.

I den här bloggen kommer vi att nämna några verktyg med öppen källkod för PostgreSQL-migreringar med en kort översikt över varje alternativ.

Migreringsverktyg för säkerhetskopiering och återställning

Detta kan vara det enklaste sättet att utföra en datamigrering, men också det långsammaste sättet när det gäller Recovery Time Objective (RTO). Att använda den här metoden innebär att du tar en säkerhetskopia från din nuvarande databas, troligen en logisk säkerhetskopia om du vill återställa den i en annan version eller infrastruktur, kopiera dumpen och återställa den på den nya servern. Beroende på mängden data kan det ta mycket tid, men det är det grundläggande sättet att migrera din databas. Låt oss se några verktyg för detta.

pgdump/pgdumpall

pg_dump är ett verktyg för att säkerhetskopiera en enda PostgreSQL-databas. Den gör konsekventa säkerhetskopior även om databasen används samtidigt, eftersom den inte blockerar andra användare. För att säkerhetskopiera ett helt kluster, eller för att säkerhetskopiera globala objekt som är gemensamma för alla databaser i ett kluster (som roller och tabellutrymmen), måste du istället använda pg_dumpall.

Dumpar kan matas ut i skript- eller arkivfilformat. Skriptdumpar är vanliga textfiler som innehåller de SQL-kommandon som krävs för att rekonstruera databasen till det tillstånd den var i när den sparades. Den kan användas för att rekonstruera databasen på andra maskiner, andra arkitekturer eller till och med på andra SQL-databasprodukter.

pg_basebackup

pg_basebackup används för att ta en bassäkerhetskopiering av ett körande PostgreSQL-databaskluster. Säkerhetskopieringen tas utan att påverka andra databasklienter och kan användas för både PITR (Point-In-Time-Recovery) och som startpunkt för en Streaming Replication standby-server. Den gör en exakt kopia av databasklustrets filer samtidigt som den ser till att servern automatiskt sätts i och ur säkerhetskopieringsläge. Säkerhetskopiering tas alltid av hela databasklustret; det är inte möjligt att säkerhetskopiera enskilda databaser eller databasobjekt.

pgBackRest

pgBackRest är ett säkerhetskopieringsverktyg med öppen källkod som skapar fysiska säkerhetskopior med vissa förbättringar jämfört med det klassiska verktyget pg_basebackup. Du kan använda pgBackRest för att utföra en första databaskopia för strömmande replikering genom att använda en befintlig säkerhetskopia, eller så kan du använda deltaalternativet för att bygga om en gammal standby-server.

Några av de viktigaste pgBackRest-funktionerna är:

  • Parallell säkerhetskopiering och återställning
  • Lokal eller fjärranvändning
  • Fullständiga, inkrementella och differentiella säkerhetskopior
  • Säkerhetskopieringsrotation och arkiveringstid
  • Kontroll av säkerhetskopieringsintegritet
  • Backup CV
  • Deltaåterställning
  • Kryptering

PostgreSQL-migreringsverktyg

Istället för att använda ett säkerhetskopieringsverktyg finns det olika verktyg för att utföra denna migrering på ett snabbare sätt, med olika metoder. Den kan använda en ETL-metod, eller till och med konfigurera replikering mellan olika databastekniker med samma koncept om Extrahera - Transformera - Ladda. Låt oss se några av dessa verktyg.

pg_chameleon

pg_chameleon är ett MySQL till PostgreSQL-repliksystem. Den kan ansluta till MySQL-replikeringsprotokollet och replikera dataändringarna i PostgreSQL. Oavsett om användaren behöver ställa in en permanent replika mellan MySQL och PostgreSQL, eller utföra en motormigrering, är pg_chameleon ett bra alternativ för uppgiften.

De viktigaste funktionerna är:

  • Läs från flera MySQL-scheman och återställ dem till en måldatabas för PostgreSQL
  • Ställ in PostgreSQL för att fungera som en MySQL-slav
  • Grundläggande DDL-stöd (SKAPA/SLÄPP/ÄNDRA TABELL, SLÄPP PRIMARY KEY/TRUNCATE, RENAME)
  • Tabeller som genererar fel exkluderas automatiskt från repliken
  • Möjlighet att uppdatera enstaka tabeller eller enstaka scheman
  • Koppla bort repliken från MySQL för migreringsstöd
  • Åsidosättning av datatyp
  • Daemoniserad init_replica-process
  • Demoniserad replikprocess med två separata underprocesser, en för läsning och en för repris

pgloader

pgloader laddar data från olika källor till PostgreSQL. Den kan transformera data den läser i farten och skickar rå SQL före och efter laddningen. Den använder COPY PostgreSQL-protokollet för att strömma data till servern och hanterar fel genom att fylla i ett par reject.dat- och reject.log-filer.

Tack vare att man kan ladda data direkt från en databaskälla, stöder pgloader även migrering från andra produkter till PostgreSQL. I det här driftsläget hanterar pgloader både schema- och datadelarna av migreringen, i ett enda obemannat kommando, vilket gör det möjligt att implementera kontinuerlig migrering.

De viktigaste funktionerna är:

  • Många källformat som stöds, som CSV-, db3- och IBM IXF-filer
  • Omvandling av data i farten
  • Fullfältsprojektioner
  • Läser från komprimerade filer (zip, tar och gzip)
  • HTTP(S)-stöd
  • Display för målschema
  • Stopp/återuppta nästa alternativ vid fel
  • Pre/Post SQL-kommandon
  • Enkommandomigrering
  • Schema upptäckt
  • Användardefinierade castingregler
  • Delvis migrering inklusive/exkluderar tabeller
  • Endast schema eller data
  • Materialiserade vyer eller omskrivning av schemat i farten
  • Kontinuerlig migrering

Ora2Pg

Ora2Pg är ett gratis verktyg som används för att migrera en Oracle- eller MySQL-databas till ett PostgreSQL-kompatibelt schema. Den ansluter din nuvarande databas, skannar den och extraherar dess struktur eller data, den genererar sedan SQL-skript som du kan ladda in i din PostgreSQL-databas.

De viktigaste funktionerna är:

  • Exportera fullständigt databasschema (tabeller, vyer, sekvenser, index), med unika, primära, främmande nyckel och kontrollbegränsningar
  • Exportera tillstånd/privilegier för användare och grupper
  • Exportera intervall-/listapartitioner och underpartitioner
  • Exportera ett tabellval (genom att ange tabellnamnen).
  • Exportera fördefinierade funktioner, utlösare, procedurer, paket och paketkroppar
  • Exportera fullständig data eller följ en WHERE-klausul
  • Fullt stöd för Oracle BLOB-objekt som PG BYTEA
  • Exportera Oracle-vyer som PG-tabeller
  • Exportera användardefinierade Oracle-typer
  • Ge en grundläggande automatisk konvertering av PLSQL-kod till PLPGSQL
  • Exportera Oracle-tabeller som främmande dataomslagstabeller
  • Exportera materialiserad vy
  • Visa en detaljerad rapport om innehållet i en Oracle-databas
  • Utvärdering av migreringskostnad för en Oracle-databas
  • Utvärdering av migrationssvårighetsnivå av en Oracle-databas
  • Migreringskostnadsbedömning av PL/SQL-kod från en fil
  • Utvärdering av migreringskostnad av Oracle SQL-frågor lagrade i en fil
  • Generera XML ktr-filer som ska användas med Penthalo Data Integrator (Kettle)
  • Exportera Oracle locator och rumsliga geometrier till PostGis
  • Exportera DBLINK som Oracle FDW
  • Exportera SYNONYMER som vyer
  • Exportera DIRECTORY som en extern tabell eller katalog för extern_filtillägg
  • Fullständig MySQL-export precis som Oracle-databas

Det finns fler tillgängliga ETL-alternativ, som Pentaho eller Talen, men de är mer inriktade på dataintegration eller datahantering än migrering, så vi kommer inte att beskriva dem här för att undvika ett omfattande blogginlägg. Du kan hitta mer information här.

PostgreSQL logisk replikering för migrering

Logisk replikering är en metod för att replikera dataobjekt och deras ändringar, baserat på deras replikeringsidentitet (vanligtvis en primärnyckel). Den är baserad på ett publicerings- och prenumerationsläge, där en eller flera prenumeranter prenumererar på en eller flera publikationer på en förlagsnod.

En publikation är en uppsättning ändringar som genereras från en tabell eller en grupp av tabeller (även kallad en replikeringsuppsättning). Noden där en publikation definieras kallas utgivare. Ett abonnemang är nedströmssidan av logisk replikering. Noden där en prenumeration definieras kallas abonnenten, och den definierar kopplingen till en annan databas och uppsättning publikationer (en eller flera) som den vill prenumerera på. Prenumeranter hämtar data från de publikationer de prenumererar på.

Denna metod kan användas för att migrera eller uppgradera din PostgreSQL-databas.

För mer information kan du hänvisa till motsvarande blogginlägg om att uppgradera PostgreSQL utan driftstopp.

Slutsats

Migreringar är en svår och riskabel uppgift, eftersom du flyttar eller omvandlar data från en (eller flera) källor till ett mål (eller mer än en), och det är ännu värre om ditt mål är en annan motor. Så du måste ha en bra plan, med detaljerade steg, och naturligtvis en testmiljö för att testa alla stadier av migreringen. I den här bloggen nämnde vi några verktyg för att hjälpa till med denna uppgift, och det bästa valet beror på dina krav på tillgängligheten för ditt system.


  1. SQL Server SMO klagar över att DLL saknas

  2. Varför använder inte Postgres indexet?

  3. Begäran misslyckades med HTTP-status 401:Obehörig I SSRS

  4. Kan du dela/explodera ett fält i en MySQL-fråga?