Database
 sql >> Teknologi Basis Data >  >> RDS >> Database

Kloning Database dengan PSDatabaseClone

Penulis Tamu :Sander Stad (@sqlstad)

PSDatabaseClone adalah modul PowerShell yang memiliki kemampuan untuk membuat gambar database ("klon") dan mendistribusikan klon tersebut ke satu atau beberapa host.

Mengapa menggunakan modul ini?

Administrator basis data, dan siapa pun yang harus berurusan dengan penyediaan data, memiliki pengguna yang ingin bekerja dengan basis data kami. Ini bisa untuk mengembangkan solusi baru, mengekstrak data untuk proses ETL, mensimulasikan masalah kinerja, mengambil data untuk tujuan pelaporan, dan sebagainya.

Penyediaan data ke lokasi lain bisa menjadi tugas yang sangat membosankan dan kebanyakan dari kita menghabiskan banyak waktu dan sumber daya untuk melakukan tugas itu.

Solusi yang diketahui untuk menyediakan data adalah dengan memulihkan database atau mengembangkan beberapa skrip ekstensif untuk memecahkan masalah ini. Solusi ini tidak selalu merupakan cara penyediaan data yang paling efisien dan dapat memakan banyak waktu.

Selain waktu yang dibutuhkan untuk mendapatkan data ke lokasi lain, juga dapat menghabiskan banyak ruang disk.

Bagaimana jika ada cara untuk mengurangi jumlah waktu yang diperlukan untuk menyediakan data dan, pada saat yang sama, mengurangi jumlah sumber daya yang dibutuhkan? Sekarang ada solusi untuk itu dan itu disebut PSDatabaseClone.

Cara memasang modul

Pemasangan modul dapat dilakukan dengan beberapa cara.

PowerShellGallery

Cara termudah adalah dengan menggunakan perintah Install-Module . Perintah mencari modul di Galeri PowerShell. Jalankan kode berikut untuk menginstal modul menggunakan Galeri PowerShell:

Install-Module PSDatabaseClone

Menggunakan metode ini juga memudahkan pembaruan modul saat versi baru dirilis. Cukup gunakan Update-Module perintah seperti di bawah ini untuk memperbaruinya ke versi terbaru:

Update-Module PSDatabaseClone

Mengkloning repositori

Cara lain untuk menginstal modul adalah dengan mengkloning repositori Git ke mesin lokal Anda. Saya menyarankan orang yang ingin berkontribusi pada proyek untuk menggunakan metode ini.

Jalankan perintah berikut:

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

Ini akan mengunduh seluruh repositori ke mesin lokal Anda dari mana Anda dapat menggunakan modul atau mengembangkan fitur baru untuknya.

Bagaimana cara kerja modul?

Gambar

Tujuan modul ini adalah untuk menggunakan aplikasi eksternal seminimal mungkin, sehingga semua orang dapat menggunakan modul tanpa harus menginstal tambahan apa pun. Modul ini bekerja dengan menggunakan teknologi asli di Windows untuk membuat hard disk virtual (VHD). VHD adalah format file yang mewakili hard disk dan dapat berisi volume, partisi yang pada gilirannya dapat berisi file dan folder. VHD dapat didistribusikan ke host lain dan dipasang sebagai disk tambahan, seperti mencolokkan drive USB eksternal. Setelah terhubung, host dapat mengakses file dan folder seperti disk lain pada sistem.

Modul membuat VHD yang akan menjadi apa yang disebut gambar kita. Gambar akan berisi semua file dan folder yang diperlukan untuk database.

Selama proses pembuatan gambar, modul akan mendapatkan cadangan dari database yang telah Anda tentukan dan mengembalikan database ke dalam VHD.

Setelah pemulihan, VHD ditutup dan dilepas dan sekarang berisi semua file yang diperlukan untuk mengkloning database.

Gambar 1:Proses pembuatan gambar

Klon

Untuk membuat klon, modul membuat “disk pembeda” yang berisi file dan folder yang sama dengan disk induk, tetapi hanya menyimpan delta antara induk dan anak.

Fungsionalitas itu segera menghemat ruang disk karena hanya sebagian kecil dari ukuran database asli yang digunakan untuk kloning.

Keuntungan lainnya adalah, karena klon menyimpan delta perubahan, gambar itu sendiri tidak terpengaruh oleh perubahan apa pun. Ini berarti klon lain juga tidak terpengaruh.

Proses membuat klon adalah membuat disk pembeda di dalam gambar yang dibuat (disk induk). Klon dipasang dan database di dalam kloning dilampirkan ke sebuah instance.

Sejak saat itu, database beroperasi dengan cara yang sama seperti aslinya. Ini berisi objek, data, dan perilaku yang sama. Karena semua objek ada di database seperti database asli, rencana kueri dan statistik kueri akan bertindak sama.

Ini memberi pengguna atau pengembang kesempatan untuk membuat kueri yang akan berjalan sama pada produksi seperti pada sistem pengembangan mereka, mengurangi risiko menjalankan kueri yang tidak efisien.

Membuat gambar dan kloning

Buat gambar

Langkah pertama dari proses ini adalah membuat gambar. Untuk membuat gambar, Anda memiliki prasyarat berikut:

  • Contoh sumber
  • Instance tujuan (bisa sama dengan instance sumber)
  • Basis Data
  • Jalur jaringan
  • Cadangan

Perintah yang membuat gambar adalah:New-PSDCImage .

Sangat penting untuk menggunakan jalur jaringan ke gambar untuk memungkinkan host lain menemukan gambar dan menggunakannya untuk membuat tiruan.

Ketika perintah berikut dijalankan:

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

Anda akan mendapatkan hasil berikut:

Perintah ini dijalankan pada 24-07-2018 sekitar jam 9 malam, yang menjelaskan tanggal pada gambar

Dalam contoh ini perintah melihat contoh SQLDB1 untuk database tertentu dan mencoba membuat gambar menggunakan contoh yang sama. Ini akan membuat cadangan lengkap baru untuk mendapatkan data terbaru.

Hasilnya adalah gambar yang terletak di jaringan berbagi \\sqldb1\psdatabaseclone\images disebut DB1_20180724214146.vhdx .

Angka-angka dalam nama gambar adalah stempel waktu saat gambar itu dibuat.

Membuat tiruan

Kloning bergantung pada gambar dan cara termudah untuk membuat kloning dari database tertentu adalah dengan membiarkan modul mengetahuinya untuk Anda.

Jalankan perintah berikut:

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

Akan membuat hasil serupa seperti di bawah ini:

Perintah baru saja membuat disk diferensial pada instance lain. Kloning didasarkan pada gambar terbaru untuk database DB1, dan kloning akan diberi nama “DB1_Clone2.”

Karena kami tidak menyediakan tujuan, perintah akan mencari lokasi data default dari instance SQL Server.

Di dalam direktori itu akan membuat subdirektori yang disebut "klon". Klon akan ditempatkan di dalam folder itu.

Mengambil informasi

Selama penyiapan modul, Anda menetapkan lokasi di mana semua klon dapat ditemukan. Ini bisa berupa database atau direktori, dan lebih khusus lagi sebuah share, tempat file konfigurasi ditulis.

Untuk mengambil informasi Anda dapat menggunakan perintah Get-PSDCImage dan Get-PSDCClone . Perintah ini akan mengambil informasi dari penyimpanan informasi dan mengembalikannya ke pengguna.

Informasi gambar

Untuk mendapatkan informasi gambar Anda harus menggunakan perintah Get-PSDCCimage . Ini akan memberi Anda hasil yang serupa seperti di bawah ini:

Anda melihat bahwa mungkin ada beberapa gambar dari database yang sama yang masing-masing dapat memiliki data yang berbeda.

Informasi klon

Mirip dengan mengambil informasi gambar, Anda bisa mendapatkan informasi kloning. Gunakan perintah Get-PSDCClone dan Anda akan mendapatkan hasil yang sama seperti di bawah ini:

Apa selanjutnya?!

Hal berikutnya dengan PSDatabaseClone adalah memungkinkan untuk mengaburkan data dalam gambar agar cocok untuk lingkungan perusahaan. Kita semua tahu tentang insiden pelanggaran data akhir-akhir ini dan kami ingin memastikan data kami, setidaknya data yang tidak ada di lokasi, disembunyikan sedemikian rupa sehingga tidak ada yang tahu apa yang harus dilakukan dengannya.

Bagaimana Anda bisa membantu?

PSDatabaseClone adalah modul PowerShell open source dan semua orang yang tertarik dapat membantu meningkatkan modul. Jika Anda terbiasa mengembangkan fungsi dan/atau modul PowerShell, Anda dapat membantu mengembangkan fitur baru, memperbaiki bug (saya yakin ada bug di suatu tempat). Jika Anda tidak nyaman mengembangkan kode, jangan khawatir; ada banyak hal yang harus dilakukan.

Anda dapat membantu menguji berbagai fungsi dan mencoba memecahkannya. Saya, sebagai satu orang, hanya bisa melangkah sejauh ini dan sebagian besar waktu saya menguji aliran bahagia dari program saya. Anda mungkin menguji dengan cara yang berbeda dan mendapatkan hasil lain yang tidak akan pernah saya pikirkan. Ini akan membantu membuat modul menjadi lebih baik.

Anda juga dapat membantu memikirkan fitur baru untuk ditambahkan ke solusi saat ini. Anda mungkin memiliki ide bagus untuk fungsionalitas baru yang tidak dapat saya pikirkan sendiri.

Jika Anda memiliki ide untuk fitur baru atau menemukan bug, buka halaman github dan buat permintaan fitur atau laporan bug. Ini sangat dihargai.

Informasi

Situs web:https://psdatabaseclone.org

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

Tentang Penulis

Sander telah bekerja dengan SQL Server sejak versi 2000.
Dia telah bekerja di berbagai industri , dari pertanian, industri keuangan, dan perawatan kesehatan.
Dia telah bekerja dengan PowerShell sejak versi 1 dan merangkul otomatisasi di mana pun dia bisa.

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Masukkan DML Dengan Variabel Bind:MENGGUNAKAN Klausul Eksekusi Pernyataan Segera

  2. Membangun Model Data untuk Sistem Manajemen Tempat Parkir

  3. Membandingkan Lapisan Abstraksi Database PHP dan Plugin CRUD

  4. Menulis Ulang Kueri untuk Meningkatkan Kinerja

  5. Ketuk dan Parkir:Model Data Aplikasi Parkir