sql >> Databáze >  >> RDS >> Database

Klonování databází pomocí PSDatabaseClone

Autor hosta:Sander Stad (@sqlstad)

PSDatabaseClone je modul PowerShellu, který má schopnost vytvářet obrazy databází ("klony") a distribuovat tyto klony jednomu nebo více hostitelům.

Proč používat tento modul?

Správci databází a opravdu každý, kdo má co do činění s poskytováním dat, má uživatele, kteří chtějí pracovat s našimi databázemi. Může to být vývoj nových řešení, extrahování dat pro procesy ETL, simulace problémů s výkonem, získávání dat pro účely hlášení atd.

Poskytování dat na jiná místa může být velmi únavný úkol a většina z nás tráví tímto úkolem spoustu času a zdrojů.

Známým řešením poskytování dat je obnova databází nebo vývoj nějakého rozsáhlého skriptování k vyřešení tohoto problému. Tato řešení nejsou vždy tím nejefektivnějším způsobem poskytování dat a mohou zabrat značnou dobu.

Kromě času, který stojí přesun dat na jiná místa, může také stát hodně místa na disku.

Co kdyby existoval způsob, jak zkrátit dobu potřebnou k poskytování dat a zároveň snížit množství potřebných zdrojů? Nyní pro to existuje řešení a nazývá se PSDatabaseClone.

Jak modul nainstalovat

Instalace modulu může být provedena několika způsoby.

PowerShellGallery

Nejjednodušší způsob je pomocí příkazu Install-Module . Příkaz hledá modul v galerii PowerShell. Chcete-li modul nainstalovat pomocí galerie PowerShell, spusťte následující kód:

Install-Module PSDatabaseClone

Použití této metody také usnadňuje aktualizaci modulu při vydání nové verze. Stačí použít Update-Module příkaz jako níže pro aktualizaci na nejnovější verzi:

Update-Module PSDatabaseClone

Klonování úložiště

Dalším způsobem instalace modulu je klonování úložiště Git na váš místní počítač. Doporučil bych lidem, kteří chtějí přispět na projekt, aby tuto metodu použili.

Proveďte následující příkaz:

git clone https://github.com/sanderstad/PSDatabaseClone.git

Tím se stáhne celé úložiště na váš místní počítač, ze kterého můžete modul používat nebo pro něj vyvíjet nové funkce.

Jak modul funguje?

Obrázky

Cílem modulu bylo využívat co nejmenší množství externích aplikací, takže modul může používat každý, aniž by musel instalovat nějaké doplňky. Modul funguje pomocí nativní technologie ve Windows k vytváření virtuálních pevných disků (VHD). VHD je formát souboru, který představuje pevný disk a může obsahovat svazky, oddíly, které zase mohou obsahovat soubory a složky. VHD lze distribuovat na jiné hostitele a připojit jako další disk, podobně jako připojení externí jednotky USB. Po připojení může hostitel přistupovat k souborům a složkám jako jakýkoli jiný disk v systému.

Modul vytvoří VHD, které bude naším takzvaným obrazem. Obrázek bude obsahovat všechny soubory a složky, které jsou pro databázi nezbytné.

Během procesu vytváření bitové kopie získá modul zálohu z databáze, kterou jste zadali, a obnoví databázi na VHD.

Po obnovení se VHD zavře a odpojí a nyní obsahuje všechny soubory potřebné ke klonování databáze.

Obrázek 1:Proces vytváření obrázku

Klony

K vytvoření klonu modul vytvoří „rozlišovací disk“, který obsahuje stejné soubory a složky jako nadřazený disk, ale uloží pouze rozdíl mezi nadřazeným a podřízeným diskem.

Tato funkce okamžitě šetří místo na disku, protože pro klon je použit pouze zlomek původní velikosti databáze.

Další výhodou je, že vzhledem k tomu, že klon ukládá delta změn, není obraz samotný žádnou ze změn ovlivněn. To znamená, že ostatní klony také nejsou ovlivněny.

Proces vytváření klonu spočívá ve vytvoření rozdílového disku uvnitř vytvořeného obrazu (rodičovského disku). Klon je připojen a databáze uvnitř klonu je připojena k instanci.

Od tohoto okamžiku funguje databáze stejným způsobem, jako by fungovala ta původní. Obsahuje stejné objekty, data a chování. Protože všechny objekty jsou v databázi jako původní databáze, budou plány dotazů a statistiky dotazů fungovat stejně.

To dává uživateli nebo vývojáři možnost vytvářet dotazy, které poběží stejně v produkci jako v jejich vývojovém systému, čímž se snižuje riziko spouštění neefektivních dotazů.

Vytváření obrázků a klonů

Vytvořte obrázek

Prvním krokem procesu je vytvoření obrázku. Chcete-li vytvořit obrázek, musíte splnit následující předpoklady:

  • Instance zdroje
  • Instance cíle (může být stejná jako zdrojová instance)
  • Databáze
  • Síťová cesta
  • Záloha

Příkaz, který vytvoří obrázek, je:New-PSDCImage .

Je velmi důležité použít síťovou cestu k obrázkům, aby ostatní hostitelé mohli obrázek najít a použít k vytvoření klonu.

Když je proveden následující příkaz:

New-PSDCImage -SourceInstance SQLDB1 -DestinationInstance SQLDB1 -ImageNetworkPath \\sqldb1\psdatabaseclone\images -Database DB1 -CreateFullBackup

Získáte následující výsledek:

Tento příkaz byl proveden 24. 7. 2018 kolem 21:00, což vysvětluje data na obrázku

V tomto příkladu se příkaz podívá na instanci SQLDB1 pro konkrétní databázi a pokusí se vytvořit obraz pomocí stejné instance. Vytvoří novou plnou zálohu pro získání nejnovějších dat.

Výsledkem je obrázek umístěný ve sdílené síťové složce \\sqldb1\psdatabaseclone\images s názvem DB1_20180724214146.vhdx .

Čísla v názvu obrázku jsou časovým razítkem, kdy byl obrázek vytvořen.

Vytvoření klonu

Klon je závislý na obrázku a nejjednodušší způsob, jak vytvořit klon z konkrétní databáze, je nechat modul, aby to zjistil za vás.

Provedení následujícího příkazu:

New-PSDCClone -SqlInstance SQLDB3 -Database DB1 -CloneName DB1_Clone2 -LatestImage

Vytvoří podobný výsledek jako níže:

Příkaz právě vytvořil rozdílový disk na jiné instanci. Klon je založen na nejnovějším obrazu databáze DB1 a klon se bude jmenovat „DB1_Clone2.“

Protože jsme nezadali cíl, příkaz vyhledá výchozí umístění dat instance SQL Server.

V tomto adresáři vytvoří podadresář s názvem „klon“. Klon bude umístěn do této složky.

Načítání informací

Během nastavování modulu jste přiřadili umístění, kde lze nalézt všechny klony. Jednalo se buď o databázi, nebo adresář, konkrétněji o sdílenou složku, kam se zapisují konfigurační soubory.

Chcete-li získat informace, můžete použít příkazy Get-PSDCImage a Get-PSDCClone . Tyto příkazy načtou informace z úložiště informací a vrátí je zpět uživateli.

Informace o obrázku

Chcete-li získat informace o obrázku, musíte použít příkaz Get-PSDCCimage . To vám dá výsledek podobný níže:

Vidíte, že může existovat více obrázků ze stejné databáze, z nichž každý může mít jiná data.

Informace o klonování

Podobně jako při získávání informací o obrázku můžete získat informace o klonu. Použijte příkaz Get-PSDCClone a dostanete podobný výsledek jako níže:

Co bude dál?!

Další věcí s PSDatabaseClone je umožnit znejasnit data v obrazech, aby byly vhodné pro podniková prostředí. Všichni víme o incidentech narušení dat v poslední době a chceme se ujistit, že naše data, alespoň data, která nejsou na místě, jsou maskována takovým způsobem, aby nikdo nevěděl, co s nimi dělat.

Jak můžete pomoci?

PSDatabaseClone je modul PowerShell s otevřeným zdrojovým kódem a každý, kdo má zájem, může pomoci modul vylepšit. Pokud jste obeznámeni s vývojem funkcí a/nebo modulů PowerShellu, můžete pomoci s vývojem nových funkcí, opravit chyby (jsem si jistý, že někde chyby jsou). Pokud vám vývoj kódu nevyhovuje, nedělejte si starosti; je tu spousta věcí na práci.

Můžete pomoci otestovat různé funkce a pokusit se je prolomit. Já, jako jeden člověk, mohu zajít jen tak daleko a většinou testuji šťastný tok svých programů. Pravděpodobně testujete jiným způsobem a získáte jiné výsledky, které by mě nikdy nenapadly. To pomůže modul zlepšit.

Můžete také pomoci vymýšlet nové funkce, které můžete přidat k aktuálnímu řešení. Možná máte skvělý nápad na novou funkcionalitu, kterou bych sám nemohl vymyslet.

Pokud máte nápad na novou funkci nebo jste našli chybu, přejděte na stránku github a vytvořte žádost o funkci nebo zprávu o chybě. Velmi si toho vážíme.

Informace

Web:https://psdatabaseclone.org

Github:https://github.com/sanderstad/PSDatabaseClone

O autorovi

Sander pracuje se serverem SQL Server od verze 2000.
Pracoval v různých odvětvích , ze zemědělství, finančního průmyslu a zdravotnictví.
S PowerShell pracuje od verze 1 a automatizaci využívá všude, kde může.
  1. Migrace vašeho projektu Django na Heroku

  2. POSTGRESQL cizí klíč odkazující na primární klíče dvou různých tabulek

  3. MySQL JDBC Driver 5.1.33 – Problém s časovým pásmem

  4. Seřadit posledních N řádků v databázi?