Database
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Database

Nhân bản cơ sở dữ liệu với PSDatabaseClone

Tác giả của khách:Sander Stad (@sqlstad)

PSDatabaseClone là một mô-đun PowerShell có khả năng tạo hình ảnh của cơ sở dữ liệu ("bản sao") và phân phối các bản sao đó cho một hoặc nhiều máy chủ.

Tại sao sử dụng mô-đun này?

Quản trị viên cơ sở dữ liệu và thực sự là bất kỳ ai phải xử lý việc cung cấp dữ liệu, đều có người dùng muốn làm việc với cơ sở dữ liệu của chúng tôi. Điều này có thể là để phát triển các giải pháp mới, trích xuất dữ liệu cho các quy trình ETL, mô phỏng các vấn đề về hiệu suất, truy xuất dữ liệu cho mục đích báo cáo, v.v.

Việc cung cấp dữ liệu cho các vị trí khác có thể là một công việc rất tẻ nhạt và hầu hết chúng ta đều dành nhiều thời gian và tài nguyên để thực hiện công việc đó.

Các giải pháp đã biết để cung cấp dữ liệu là khôi phục cơ sở dữ liệu hoặc phát triển một số kịch bản mở rộng để giải quyết vấn đề này. Các giải pháp này không phải lúc nào cũng là cách cung cấp dữ liệu hiệu quả nhất và có thể mất một khoảng thời gian đáng kể.

Bên cạnh thời gian để đưa dữ liệu đến các vị trí khác, nó cũng có thể tốn rất nhiều dung lượng ổ đĩa.

Điều gì sẽ xảy ra nếu có một cách để giảm thời gian cung cấp dữ liệu và đồng thời giảm lượng tài nguyên cần thiết? Bây giờ có một giải pháp cho điều đó và nó được gọi là PSDatabaseClone.

Cách cài đặt mô-đun

Việc cài đặt mô-đun có thể được thực hiện theo một số cách.

PowerShellGallery

Cách dễ nhất là sử dụng lệnh Install-Module . Lệnh tìm kiếm mô-đun trong Bộ sưu tập PowerShell. Thực thi mã sau để cài đặt mô-đun bằng Thư viện PowerShell:

Install-Module PSDatabaseClone

Sử dụng phương pháp này cũng giúp cập nhật mô-đun dễ dàng hơn khi phiên bản mới được phát hành. Chỉ cần sử dụng Update-Module lệnh như bên dưới để cập nhật nó lên phiên bản mới nhất:

Update-Module PSDatabaseClone

Nhân bản kho lưu trữ

Một cách khác để cài đặt mô-đun là sao chép kho lưu trữ Git vào máy cục bộ của bạn. Tôi khuyên những người muốn đóng góp cho dự án sử dụng phương pháp này.

Thực hiện lệnh sau:

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

Thao tác này sẽ tải toàn bộ kho lưu trữ xuống máy cục bộ của bạn, từ đó bạn có thể sử dụng mô-đun hoặc phát triển các tính năng mới cho nó.

Mô-đun hoạt động như thế nào?

Hình ảnh

Mục tiêu của mô-đun là sử dụng các ứng dụng bên ngoài tối thiểu nhất có thể, vì vậy mọi người đều có thể sử dụng mô-đun mà không cần phải cài đặt bất kỳ tính năng bổ sung nào. Mô-đun hoạt động bằng cách sử dụng công nghệ gốc trong Windows để tạo đĩa cứng ảo (VHD). VHD là một định dạng tệp đại diện cho một đĩa cứng và có thể chứa các khối lượng, các phân vùng có thể chứa các tệp và thư mục. VHD có thể được phân phối đến các máy chủ khác và được gắn như một đĩa bổ sung, giống như cắm vào ổ USB bên ngoài. Sau khi được kết nối, máy chủ có thể truy cập các tệp và thư mục giống như bất kỳ đĩa nào khác trên hệ thống.

Mô-đun tạo ra một VHD sẽ được gọi là hình ảnh của chúng tôi. Hình ảnh sẽ chứa tất cả các tệp và thư mục cần thiết cho cơ sở dữ liệu.

Trong quá trình tạo hình ảnh, mô-đun sẽ nhận được bản sao lưu từ cơ sở dữ liệu bạn đã chỉ định và khôi phục cơ sở dữ liệu thành VHD.

Sau khi khôi phục, VHD được đóng và không được gắn kết và bây giờ chứa tất cả các tệp cần thiết để sao chép cơ sở dữ liệu.

Hình 1:Quy trình tạo hình ảnh

Bản sao

Để tạo một bản sao, mô-đun tạo một “đĩa phân biệt” chứa các tệp và thư mục giống như đĩa mẹ, nhưng chỉ lưu delta giữa mẹ và con.

Chức năng đó ngay lập tức tiết kiệm không gian đĩa vì chỉ một phần nhỏ của kích thước cơ sở dữ liệu gốc được sử dụng cho bản sao.

Một ưu điểm khác là, vì bản sao lưu vùng đồng bằng của các thay đổi, bản thân hình ảnh không bị ảnh hưởng bởi bất kỳ thay đổi nào. Điều này có nghĩa là các bản sao khác cũng không bị ảnh hưởng.

Quá trình tạo bản sao là tạo một đĩa phân biệt bên trong một ảnh đã tạo (đĩa mẹ). Bản sao được gắn kết và cơ sở dữ liệu bên trong bản sao được gắn vào một bản sao.

Kể từ thời điểm đó, cơ sở dữ liệu sẽ hoạt động theo cách giống như cơ sở dữ liệu ban đầu. Nó chứa các đối tượng, dữ liệu và hành vi giống nhau. Bởi vì tất cả các đối tượng trong cơ sở dữ liệu giống như cơ sở dữ liệu gốc, các kế hoạch truy vấn và thống kê truy vấn sẽ hoạt động giống nhau.

Điều này mang lại cho người dùng hoặc nhà phát triển cơ hội tạo các truy vấn sẽ chạy giống như trên sản xuất như trên hệ thống phát triển của họ, giảm nguy cơ chạy các truy vấn không hiệu quả.

Tạo hình ảnh và bản sao

Tạo hình ảnh

Bước đầu tiên của quy trình là tạo một hình ảnh. Để tạo một hình ảnh, bạn có các điều kiện tiên quyết sau:

  • Bản sao nguồn
  • Bản sao đích (có thể giống với bản sao nguồn)
  • Cơ sở dữ liệu
  • Đường dẫn mạng
  • Sao lưu

Lệnh tạo hình ảnh là:New-PSDCImage .

Điều rất quan trọng là sử dụng đường dẫn mạng tới hình ảnh để các máy chủ khác có thể tìm thấy hình ảnh và sử dụng hình ảnh đó để tạo bản sao.

Khi lệnh sau được thực thi:

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

Bạn sẽ nhận được kết quả sau:

Lệnh này được thực hiện vào khoảng 9 giờ tối ngày 24 tháng 7 năm 2018, giải thích các ngày trong hình ảnh

Trong ví dụ này, lệnh xem xét phiên bản SQLDB1 cho một cơ sở dữ liệu cụ thể và cố gắng tạo một hình ảnh bằng cách sử dụng cùng một phiên bản. Nó sẽ tạo một bản sao lưu đầy đủ mới để nhận dữ liệu mới nhất.

Kết quả là một hình ảnh nằm trong mạng chia sẻ \\sqldb1\psdatabaseclone\images được gọi là DB1_20180724214146.vhdx .

Các con số trong tên của hình ảnh là dấu thời gian tại thời điểm hình ảnh được tạo.

Tạo bản sao

Bản sao phụ thuộc vào hình ảnh và cách dễ nhất để tạo bản sao từ một cơ sở dữ liệu cụ thể là để mô-đun tìm ra điều đó cho bạn.

Thực hiện lệnh sau:

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

Sẽ tạo ra một kết quả tương tự như dưới đây:

Lệnh vừa tạo một đĩa vi sai trên một phiên bản khác. Bản sao dựa trên hình ảnh mới nhất cho cơ sở dữ liệu DB1 và ​​bản sao sẽ được đặt tên là “DB1_Clone2.”

Vì chúng tôi không cung cấp đích nên lệnh sẽ tra cứu vị trí dữ liệu mặc định của phiên bản SQL Server.

Trong thư mục đó, nó sẽ tạo một thư mục con được gọi là "bản sao". Bản sao sẽ được đặt trong thư mục đó.

Truy xuất thông tin

Trong quá trình thiết lập mô-đun, bạn đã chỉ định một vị trí có thể tìm thấy tất cả các bản sao. Đây là một cơ sở dữ liệu hoặc một thư mục và cụ thể hơn là một phần chia sẻ, nơi các tệp cấu hình được ghi.

Để truy xuất thông tin, bạn có thể sử dụng các lệnh Get-PSDCImageGet-PSDCClone . Các lệnh này sẽ lấy thông tin từ kho thông tin và trả lại cho người dùng.

Thông tin hình ảnh

Để lấy thông tin hình ảnh, bạn phải sử dụng lệnh Get-PSDCCimage . Điều này sẽ cho bạn một kết quả tương tự như dưới đây:

Bạn thấy rằng có thể có nhiều hình ảnh từ cùng một cơ sở dữ liệu mà mỗi hình ảnh có thể có dữ liệu khác nhau.

Thông tin sao chép

Tương tự như lấy thông tin hình ảnh, bạn có thể lấy thông tin nhân bản. Sử dụng lệnh Get-PSDCClone và bạn sẽ nhận được kết quả tương tự như sau:

Tiếp theo là gì ?!

Điều tiếp theo với PSDatabaseClone là làm cho nó có thể xáo trộn dữ liệu trong hình ảnh để làm cho nó phù hợp với môi trường doanh nghiệp. Tất cả chúng ta đều biết về các sự cố vi phạm dữ liệu gần đây và chúng tôi muốn đảm bảo dữ liệu của mình, ít nhất là dữ liệu không có trên cơ sở, được che giấu theo cách mà không ai có thể biết phải làm gì với nó.

Bạn có thể giúp gì?

PSDatabaseClone là một mô-đun PowerShell mã nguồn mở và tất cả những ai quan tâm có thể giúp cải thiện mô-đun. Nếu bạn đã quen với việc phát triển các chức năng và / hoặc mô-đun PowerShell, bạn có thể giúp phát triển các tính năng mới, sửa lỗi (tôi chắc chắn rằng có lỗi ở đâu đó). Nếu bạn không cảm thấy thoải mái khi phát triển mã, đừng lo lắng; có rất nhiều thứ để làm.

Bạn có thể giúp kiểm tra các chức năng khác nhau và cố gắng phá vỡ chúng. Tôi, với tư cách là một người, chỉ có thể đi xa và phần lớn thời gian tôi kiểm tra dòng chảy hạnh phúc của các chương trình của mình. Bạn có thể thử nghiệm theo một cách khác và nhận được kết quả khác mà tôi chưa bao giờ nghĩ đến. Điều này sẽ giúp làm cho mô-đun tốt hơn.

Bạn cũng có thể giúp nghĩ ra các tính năng mới để thêm vào giải pháp hiện tại. Bạn có thể có một ý tưởng tuyệt vời cho chức năng mới mà tôi không thể tự mình nghĩ ra.

Nếu bạn có ý tưởng cho một tính năng mới hoặc tìm thấy lỗi, hãy truy cập trang github và tạo yêu cầu tính năng hoặc báo cáo lỗi. Nó được đánh giá rất cao.

Thông tin

Trang web:https://psdatabaseclone.org

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

Giới thiệu về tác giả

Sander đã làm việc với SQL Server từ phiên bản 2000.
Anh ấy đã làm việc trong nhiều ngành khác nhau , từ nông nghiệp, công nghiệp tài chính và chăm sóc sức khỏe.
Anh ấy đã làm việc với PowerShell kể từ phiên bản 1 và đang áp dụng tự động hóa ở những nơi anh ấy có thể.
  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mô hình dữ liệu đăng ký SaaS

  2. Xây dựng Mô hình Dữ liệu cho Hệ thống Quản lý Bãi đỗ xe

  3. Truy vấn SQL cơ bản

  4. SQL MAX () cho người mới bắt đầu

  5. 9 phương pháp hay nhất để viết truy vấn SQL