Database
 sql >> база данни >  >> RDS >> Database

Клониране на бази данни с PSDatabaseClone

Гост автор:Sander Stad (@sqlstad)

PSDatabaseClone е модул на PowerShell, който има способността да създава изображения на бази данни („клонинги“) и да разпространява тези клонинги до един или повече хостове.

Защо да използвате този модул?

Администраторите на бази данни и наистина всеки, който трябва да се занимава с предоставяне на данни, има потребители, които искат да работят с нашите бази данни. Това може да бъде разработване на нови решения, извличане на данни за ETL процеси, симулиране на проблеми с производителността, извличане на данни за целите на отчитането и т.н.

Предоставянето на данни на други места може да бъде много досадна задача и повечето от нас прекарват много време и ресурси за изпълнение на тази задача.

Известни решения за предоставяне на данни е чрез възстановяване на бази данни или разработване на някои обширни скриптове за решаване на този проблем. Тези решения не винаги са най-ефективният начин за предоставяне на данни и може да отнеме значително време.

Освен времето, което струва да се доставят данните до други места, това може да струва и много дисково пространство.

Ами ако има начин да се намали количеството време, необходимо за предоставяне на данните, и в същото време да се намали количеството необходими ресурси? Сега има решение за това и то се нарича PSDatabaseClone.

Как да инсталирам модула

Монтажът на модула може да се извърши по няколко начина.

PowerShellGallery

Най-лесният начин е да използвате командата Install-Module . Командата търси модула в галерията на PowerShell. Изпълнете следния код, за да инсталирате модула с помощта на PowerShell Gallery:

Install-Module PSDatabaseClone

Използването на този метод също така улеснява актуализирането на модула, когато бъде пусната нова версия. Просто използвайте Update-Module команда като по-долу, за да я актуализирате до най-новата версия:

Update-Module PSDatabaseClone

Клониране на хранилището

Друг начин за инсталиране на модула е чрез клониране на Git хранилището на вашата локална машина. Бих посъветвал хората, които искат да допринесат за проекта, да използват този метод.

Изпълнете следната команда:

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

Това ще изтегли цялото хранилище на вашата локална машина, от която можете да използвате модула или да разработите нови функции за него.

Как работи модулът?

Изображения

Целта на модула беше да използва възможно най-малко външни приложения, така че всеки да може да използва модула, без да се налага да инсталира никакви екстри. Модулът работи, като използва естествена технология в Windows за създаване на виртуални твърди дискове (VHD). VHD е файлов формат, който представлява твърд диск и може да съдържа томове, дялове, които от своя страна могат да съдържат файлове и папки. VHD дисковете могат да се разпространяват до други хостове и да се монтират като допълнителен диск, подобно на включване на външно USB устройство. Веднъж свързан, хостът може да има достъп до файловете и папките като всеки друг диск в системата.

Модулът създава VHD, който ще бъде нашето така наречено изображение. Изображението ще съдържа всички файлове и папки, които са необходими за базата данни.

По време на процеса на създаване на изображение, модулът ще получи резервно копие от базата данни, която сте посочили, и ще възстанови базата данни във VHD.

След възстановяването VHD се затваря и демонтира и вече съдържа всички файлове, необходими за клониране на базата данни.

Фигура 1:Процес на създаване на изображение

Клонинги

За да създаде клонинг, модулът създава „дифференциращ диск“, който съдържа същите файлове и папки като родителския диск, но запазва само делтата между родител и дете.

Тази функционалност незабавно спестява дисково пространство, тъй като само част от размера на оригиналната база данни се използва за клонинга.

Друго предимство е, че тъй като клонингът запазва делтата на промените, самото изображение не се влияе от нито една от промените. Това означава, че други клонинги също не са засегнати.

Процесът на създаване на клонинг е да се създаде диференциращ диск вътре в създадено изображение (родителски диск). Клонът е монтиран и базата данни вътре в клонинга е прикачена към екземпляр.

От този момент нататък базата данни работи по същия начин, по който би била оригиналната. Той съдържа същите обекти, данни и поведение. Тъй като всички обекти са в базата данни като оригиналната база данни, плановете на заявките и статистическите данни за заявките ще действат по същия начин.

Това дава на потребителя или разработчика възможност да създава заявки, които ще работят по същия начин в производството, както в тяхната система за разработка, намалявайки риска от изпълнение на неефективни заявки.

Създаване на изображения и клонинги

Създайте изображение

Първата стъпка от процеса е да създадете изображение. За да създадете изображение, имате следните предпоставки:

  • Изходен екземпляр
  • Целеви екземпляр (може да бъде същият като изходния екземпляр)
  • База данни
  • Мрежов път
  • Архивиране

Командата, която създава изображението е:New-PSDCImage .

Много е важно да използвате мрежов път към изображенията, за да дадете възможност на други хостове да намерят изображението и да го използват за създаване на клонинг.

Когато се изпълни следната команда:

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

Ще получите следния резултат:

Тази команда беше изпълнена на 2018-07-24 около 21:00 часа, което обяснява датите в изображението

В този пример командата разглежда екземпляра SQLDB1 за конкретна база данни и се опитва да създаде изображение, използвайки същия екземпляр. Той ще създаде нов пълен архив, за да получите най-новите данни.

Резултатът е изображение, разположено в мрежовото споделяне \\sqldb1\psdatabaseclone\images наречен DB1_20180724214146.vhdx .

Числата в името на изображението са времева марка, в която е създадено изображението.

Създаване на клонинг

Клонирането зависи от изображението и най-лесният начин да създадете клонинг от конкретна база данни е да оставите модула да разбере това вместо вас.

Изпълнение на следната команда:

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

Ще създаде подобен резултат като по-долу:

Командата току-що създаде диференциален диск на друг екземпляр. Клонирането се основава на най-новото изображение за база данни DB1 и клонингът ще бъде наречен “DB1_Clone2.”

Тъй като не предоставихме дестинация, командата ще търси местоположението на данните по подразбиране на екземпляра на SQL Server.

В тази директория той ще създаде поддиректория, наречена „клонинг“. Клонирането ще бъде поставено в тази папка.

Извличане на информация

По време на настройката на модула сте задали място, където могат да бъдат намерени всички клонинги. Това беше или база данни, или директория, и по-точно споделен ресурс, където са записани конфигурационните файлове.

За да извлечете информацията, можете да използвате командите Get-PSDCImage и Get-PSDCClone . Тези команди ще извлекат информацията от хранилището за информация и ще я върнат обратно на потребителя.

Информация за изображението

За да получите информацията за изображението, трябва да използвате командата Get-PSDCCimage . Това ще ви даде резултат, подобен на по-долу:

Виждате, че може да има множество изображения от една и съща база данни, всяко от които може да има различни данни.

Информация за клониране

Подобно на извличането на информация за изображението, можете да получите информация за клонинг. Използвайте командата Get-PSDCClone и ще получите подобен резултат като по-долу:

Какво следва?!

Следващото нещо с PSDatabaseClone е да направи възможно обфускирането на данните в изображенията, за да ги направи подходящи за корпоративни среди. Всички знаем за инцидентите с пробив на данни напоследък и искаме да сме сигурни, че нашите данни, поне данните, които не са на място, са маскирани по такъв начин, че никой да не знае какво да прави с тях.

Как можете да помогнете?

PSDatabaseClone е модул на PowerShell с отворен код и всеки, който се интересува, може да помогне за подобряването на модула. Ако сте запознати с разработването на функции и/или модули на PowerShell, можете да помогнете при разработването на нови функции, да коригирате грешки (сигурен съм, че някъде има грешки). Ако не ви е удобно да разработвате кода, не се притеснявайте; има много неща за правене.

Можете да помогнете да тествате различните функции и да се опитате да ги разбиете. Аз, като един човек, мога да стигна само дотук и през повечето време тествам щастливия поток на моите програми. Вероятно тествате по различен начин и получавате други резултати, за които никога не бих се сетил. Това ще помогне за подобряване на модула.

Можете също така да помогнете за измислянето на нови функции, които да добавите към текущото решение. Може да имате страхотна идея за нова функционалност, за която не бих могъл да измисля сам.

Ако имате идея за нова функция или сте открили грешка, отидете на страницата на github и създайте заявка за функция или доклад за грешка. Това е високо оценено.

Информация

Уебсайт:https://psdatabaseclone.org

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

За автора

Сандер работи със SQL Server от версия 2000 г.
Той е работил в различни индустрии , от селското стопанство, финансовата индустрия и здравеопазването.
Той работи с PowerShell от версия 1 и използва автоматизацията, където може.
  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Вземете човешки подход към управлението на данните

  2. 3 неприятни I/O статистики, които изостават от производителността на SQL заявки

  3. Решения за читатели за предизвикателството на специалните острови

  4. SQL вътрешно присъединяване

  5. Миграция на SQL бази данни с команден ред