Database
 sql >> Baza danych >  >> RDS >> Database

Klonowanie baz danych za pomocą PSDatabaseClone

Gość autor:Sander Stad (@sqlstad)

PSDatabaseClone to moduł PowerShell, który ma możliwość tworzenia obrazów baz danych („klonów”) i dystrybucji tych klonów do jednego lub większej liczby hostów.

Dlaczego warto korzystać z tego modułu?

Administratorzy baz danych, a tak naprawdę każdy, kto ma do czynienia z dostarczaniem danych, mają użytkowników, którzy chcą pracować z naszymi bazami danych. Może to obejmować opracowywanie nowych rozwiązań, wyodrębnianie danych dla procesów ETL, symulowanie problemów z wydajnością, pobieranie danych do celów raportowania i tak dalej.

Udostępnianie danych do innych lokalizacji może być bardzo żmudnym zadaniem i większość z nas poświęca na to dużo czasu i zasobów.

Znane rozwiązania udostępniania danych polegają na przywracaniu baz danych lub opracowywaniu rozbudowanych skryptów w celu rozwiązania tego problemu. Te rozwiązania nie zawsze są najskuteczniejszym sposobem udostępniania danych i mogą zająć dużo czasu.

Oprócz czasu, jaki kosztuje dostarczenie danych do innych lokalizacji, może to również kosztować dużo miejsca na dysku.

Co by było, gdyby istniał sposób na skrócenie czasu potrzebnego na udostępnienie danych i jednocześnie zmniejszenie ilości potrzebnych zasobów? Teraz jest na to rozwiązanie i nazywa się PSDatabaseClone.

Jak zainstalować moduł

Instalację modułu można przeprowadzić na kilka sposobów.

PowerShellGallery

Najprostszym sposobem jest użycie polecenia Install-Module . Polecenie szuka modułu w Galerii PowerShell. Wykonaj następujący kod, aby zainstalować moduł za pomocą Galerii PowerShell:

Install-Module PSDatabaseClone

Korzystanie z tej metody ułatwia również aktualizację modułu po wydaniu nowej wersji. Po prostu użyj Update-Module polecenie jak poniżej, aby zaktualizować go do najnowszej wersji:

Update-Module PSDatabaseClone

Klonowanie repozytorium

Innym sposobem zainstalowania modułu jest sklonowanie repozytorium Git na maszynę lokalną. Osobom, które chcą przyczynić się do projektu, radziłbym skorzystać z tej metody.

Wykonaj następujące polecenie:

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

Spowoduje to pobranie całego repozytorium na komputer lokalny, z którego można korzystać z modułu lub opracowywać dla niego nowe funkcje.

Jak działa moduł?

Obrazy

Celem modułu było wykorzystanie jak najmniejszej liczby aplikacji zewnętrznych, aby każdy mógł z niego korzystać bez konieczności instalowania jakichkolwiek dodatków. Moduł działa przy użyciu natywnej technologii w systemie Windows do tworzenia wirtualnych dysków twardych (VHD). VHD to format pliku, który reprezentuje dysk twardy i może zawierać woluminy, partycje, które z kolei mogą zawierać pliki i foldery. VHD mogą być dystrybuowane do innych hostów i montowane jako dodatkowy dysk, podobnie jak podłączanie zewnętrznego dysku USB. Po podłączeniu host może uzyskać dostęp do plików i folderów jak każdy inny dysk w systemie.

Moduł tworzy VHD, który będzie naszym tzw. obrazem. Obraz będzie zawierał wszystkie pliki i foldery niezbędne dla bazy danych.

Podczas procesu tworzenia obrazu moduł pobierze kopię zapasową z określonej bazy danych i przywróci bazę danych na VHD.

Po przywróceniu dysk VHD jest zamykany i odmontowany i zawiera teraz wszystkie pliki potrzebne do sklonowania bazy danych.

Rysunek 1:Proces tworzenia obrazu

Klony

Aby utworzyć klon, moduł tworzy „dysk różnicowy”, który zawiera te same pliki i foldery, co dysk nadrzędny, ale zapisuje tylko różnicę między rodzicem a dzieckiem.

Ta funkcja natychmiast oszczędza miejsce na dysku, ponieważ dla klonu wykorzystywana jest tylko część oryginalnego rozmiaru bazy danych.

Kolejną zaletą jest to, że ponieważ klon zapisuje deltę zmian, żaden ze zmian nie ma wpływu na sam obraz. Oznacza to, że nie ma to wpływu na inne klony.

Proces tworzenia klonu polega na utworzeniu dysku różnicującego wewnątrz tworzonego obrazu (dysku nadrzędnego). Klon jest zamontowany, a baza danych wewnątrz klonu jest dołączona do instancji.

Od tego momentu baza danych działa tak samo jak pierwotna. Zawiera te same obiekty, dane i zachowania. Ponieważ wszystkie obiekty znajdują się w bazie danych, tak jak w oryginalnej bazie danych, plany zapytań i statystyki zapytań będą działać tak samo.

Daje to użytkownikowi lub programiście szansę na tworzenie zapytań, które będą działać tak samo w środowisku produkcyjnym, jak w ich systemie programistycznym, zmniejszając ryzyko uruchamiania nieefektywnych zapytań.

Tworzenie obrazów i klonów

Utwórz obraz

Pierwszym krokiem procesu jest stworzenie obrazu. Aby utworzyć obraz, musisz spełnić następujące wymagania:

  • Instancja źródłowa
  • Instancja docelowa (może być taka sama jak instancja źródłowa)
  • Baza danych
  • Ścieżka sieciowa
  • Kopia zapasowa

Polecenie, które tworzy obraz to:New-PSDCImage .

Bardzo ważne jest, aby użyć ścieżki sieciowej do obrazów, aby umożliwić innym hostom znalezienie obrazu i użycie go do utworzenia klonu.

Po wykonaniu następującego polecenia:

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

Otrzymasz następujący wynik:

To polecenie zostało wykonane 24.07.2018 około godziny 21:00, co wyjaśnia daty na obrazku

W tym przykładzie polecenie sprawdza instancję SQLDB1 pod kątem określonej bazy danych i próbuje utworzyć obraz przy użyciu tej samej instancji. Utworzy nową pełną kopię zapasową, aby uzyskać najnowsze dane.

Wynikiem jest obraz znajdujący się w udziale sieciowym \\sqldb1\psdatabaseclone\images o nazwie DB1_20180724214146.vhdx .

Liczby w nazwie obrazu to sygnatura czasowa, w której obraz został utworzony.

Tworzenie klona

Klon jest zależny od obrazu, a najłatwiejszym sposobem na utworzenie klonu z określonej bazy danych jest pozwolenie modułowi na znalezienie tego za Ciebie.

Wykonanie następującego polecenia:

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

Stworzy podobny wynik jak poniżej:

Polecenie właśnie utworzyło dysk różnicowy w innej instancji. Klon jest oparty na najnowszym obrazie bazy danych DB1, a klon zostanie nazwany „DB1_Clone2”.

Ponieważ nie podaliśmy miejsca docelowego, polecenie wyszuka domyślną lokalizację danych instancji SQL Server.

W tym katalogu utworzy podkatalog o nazwie „klon”. Klon zostanie umieszczony w tym folderze.

Pobieranie informacji

Podczas konfiguracji modułu przypisałeś lokalizację, w której można znaleźć wszystkie klony. Była to baza danych lub katalog, a dokładniej udział, w którym zapisywane są pliki konfiguracyjne.

Aby pobrać informacje, możesz użyć poleceń Get-PSDCImage i Get-PSDCClone . Te polecenia będą pobierać informacje z magazynu informacji i zwracać je z powrotem do użytkownika.

Informacje o obrazie

Aby uzyskać informacje o obrazie, musisz użyć polecenia Get-PSDCCimage . Otrzymasz wynik podobny do poniższego:

Widzisz, że może istnieć wiele obrazów z tej samej bazy danych, z których każdy może mieć inne dane.

Klonuj informacje

Podobnie jak w przypadku pobierania informacji o obrazie, możesz uzyskać informacje o klonie. Użyj polecenia Get-PSDCClone, a otrzymasz podobny wynik jak poniżej:

Co dalej?!

Następną rzeczą z PSDatabaseClone jest umożliwienie zaciemniania danych w obrazach, aby dostosować je do środowisk korporacyjnych. Wszyscy wiemy o ostatnich incydentach naruszenia bezpieczeństwa danych i chcemy mieć pewność, że nasze dane, przynajmniej te, które nie znajdują się w założeniu, są zamaskowane w taki sposób, aby nikt nie wiedział, co z nimi zrobić.

Jak możesz pomóc?

PSDatabaseClone to moduł PowerShell o otwartym kodzie źródłowym i każdy, kto jest zainteresowany, może pomóc go ulepszyć. Jeśli jesteś zaznajomiony z tworzeniem funkcji i/lub modułów PowerShell, możesz pomóc w tworzeniu nowych funkcji, naprawiać błędy (jestem pewien, że gdzieś są błędy). Jeśli nie czujesz się komfortowo w tworzeniu kodu, nie martw się; jest mnóstwo rzeczy do zrobienia.

Możesz pomóc przetestować różne funkcje i spróbować je złamać. Jako jedna osoba mogę zajść tylko tak daleko i przez większość czasu testuję szczęśliwy przebieg moich programów. Prawdopodobnie testujesz w inny sposób i uzyskujesz inne wyniki, o których nigdy bym nie pomyślała. Pomoże to ulepszyć moduł.

Możesz również pomóc pomyśleć o nowych funkcjach, które można dodać do obecnego rozwiązania. Może masz świetny pomysł na nową funkcjonalność, o której sam bym nie pomyślał.

Jeśli masz pomysł na nową funkcję lub znalazłeś błąd, wejdź na stronę github i utwórz zgłoszenie funkcji lub zgłoszenie błędu. Jest to bardzo cenione.

Informacje

Strona internetowa:https://psdatabaseclone.org

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

O autorze

Sander pracuje z SQL Server od wersji 2000.
Pracował w różnych branżach , z branży rolniczej, finansowej i opieki zdrowotnej.
Pracuje z PowerShell od wersji 1 i obejmuje automatyzację tam, gdzie może.
  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Sekwencyjne prędkości i posuwy

  2. Jak dodać pozycje rankingowe wierszy w SQL za pomocą RANK()

  3. Co to jest wstrzykiwanie SQL?

  4. CREATE TABLE w SQL – wszystko, co musisz wiedzieć o tworzeniu tabel w SQL

  5. Jak wykorzystać sztuczną inteligencję do dostrajania SQL do prawdziwie zautomatyzowanego procesu