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

Di chuyển cơ sở dữ liệu hệ thống trong cụm chuyển đổi dự phòng máy chủ SQL

Gần đây, tôi được giao cho một dự án - khách hàng của chúng tôi đã mua một SAN mới và họ muốn chúng tôi thay thế cái cũ bằng một SAN mới. Cơ sở dữ liệu người dùng và hệ thống đã sử dụng SAN, trong khi đó, hệ điều hành và SQL đã được cài đặt trên các đĩa cục bộ của máy chủ. May mắn cho chúng tôi .. !! Ý tưởng là chuyển cơ sở dữ liệu người dùng và hệ thống hiện có sang một SAN mới và giữ thời gian chết ở mức tối thiểu nhất có thể. Vì vậy, để giảm thiểu thời gian chết, thay vì cài đặt lại OS và SQL, chúng tôi quyết định sử dụng phương pháp sau.

  1. Đính kèm SAN mới vào máy chủ hiện có, tạo các ổ đĩa mới trên đó và thêm các ổ đĩa đó vào phiên bản cụm chuyển đổi dự phòng hiện có.
  2. Dừng SQL Server, sao chép cơ sở dữ liệu chính, mô hình và msdb trên các ổ đĩa mới và khởi động các dịch vụ SQL.
  3. Di chuyển cơ sở dữ liệu Người dùng sang ổ đĩa mới và xóa SAN cũ.

Trong bài viết trước của tôi, tôi đã giải thích quy trình từng bước của việc thêm bộ nhớ mới vào một cụm chuyển đổi dự phòng hiện có. Hơn nữa, tôi đã trình diễn quy trình chuyển cơ sở dữ liệu người dùng sang ổ đĩa mới.

Trong bài viết này, tôi sẽ trình bày quá trình di chuyển cơ sở dữ liệu hệ thống sang các ổ đĩa mới mà tôi đã sử dụng trong dự án của mình. Trong bài viết trước của tôi, chúng tôi đã thêm ổ đĩa vào một cụm chuyển đổi dự phòng hiện có và trong bài viết này, chúng tôi sẽ sử dụng cùng một ổ đĩa. Nhãn âm lượng của ổ đĩa là “ E:\ ”, Vì vậy tôi đã tạo một thư mục có tên là“ SystemDatabases ”Trong E:\ lái xe. Xem hình ảnh sau:

Hiện tại, cơ sở dữ liệu hệ thống nằm trên “ F:\ MSSQL14.MSSQLSERVER \ MSSQL \ DATA " danh mục. Chúng tôi muốn chuyển các cơ sở dữ liệu này sang “ E:\ SystemDatabases " danh mục. Không giống như cơ sở dữ liệu người dùng, việc di chuyển cơ sở dữ liệu hệ thống không phải là một quá trình đơn giản. Chúng ta phải làm theo đúng trình tự và các bước nếu không phiên bản SQL sẽ không bắt đầu.

Trước tiên, hãy xem lại vị trí hiện tại của cơ sở dữ liệu hệ thống. Thực hiện truy vấn sau để lấy vị trí hiện tại của cơ sở dữ liệu hệ thống.

USE MASTER

GO

SELECT DB_NAME(DATABASE_ID) AS [DATABASE NAME], 

       NAME AS [LOGICAL NAME], 

       PHYSICAL_NAME AS [FILE PATH] 

 FROM SYS.MASTER_FILES 

 WHERE DATABASE_ID < 4

Sau đây là kết quả:

DatabaseName Logical Name File Path

-------------- ------------------- --------------------------------------------

master master F:\MSSQL14.MSSQLSERVER\MSSQL\DAT\master.mdf

master mastlog F:\MSSQL14.MSSQLSERVER\MSSQL\DATA\mastlog.ldf

tempdb tempdev F:\MSSQL14.MSSQLSERVER\MSSQL\DATA\tempdb.mdf 

tempdb templog F:\MSSQL14.MSSQLSERVER\MSSQL\DATA\templog.ldf

model modeldev F:\MSSQL14.MSSQLSERVER\MSSQL\DATA\model.mdf

model modellog F:\MSSQL14.MSSQLSERVER\MSSQL\DATA\modellog.ldf

msdb msdbdata F:\MSSQL14.MSSQLSERVER\MSSQL\DATA\msdbdata.mdf

msdb msdblog F:\MSSQL14.MSSQLSERVER\MSSQL\DATA\msdblog.ldf

Bây giờ tôi sẽ giải thích quá trình di chuyển cơ sở dữ liệu sang một thư mục khác theo cách sau.

  1. Giải thích các bước di chuyển msdb và cơ sở dữ liệu mô hình.
  2. Giải thích các bước di chuyển cơ sở dữ liệu tempdb.
  3. Giải thích các bước di chuyển cơ sở dữ liệu chính.

Bản trình diễn này sẽ chỉ cho bạn cách di chuyển tất cả cơ sở dữ liệu hệ thống sang E:\ ổ đĩa, do đó để giảm thời gian chết, vì vậy tôi sẽ khởi động lại các dịch vụ SQL khi kết thúc quá trình.

Các bước di chuyển cơ sở dữ liệu msdb và mô hình

Để di chuyển cơ sở dữ liệu msdb và mô hình, trước tiên, chúng ta cần cập nhật vị trí tệp trong danh mục hệ thống bằng cách thực hiện truy vấn Cơ sở dữ liệu ALTER. Để làm điều đó, hãy thực hiện truy vấn sau trong PowerShell Hoặc SSMS.

USE MASTER; 

 GO 

 ALTER DATABASE MODEL MODIFY FILE (NAME = MODELDEV, FILENAME = 

 'E:\SYSTEMDATABASES\MODEL.MDF'); 

 GO 

 ALTER DATABASE MODEL MODIFY FILE (NAME = MODELLOG, FILENAME = 

 'E:\SYSTEMDATABASES\MODELLOG.LDF'); 

 GO 

 

ALTER DATABASE MSDB MODIFY FILE (NAME = MSDBDATA, FILENAME = 

'E:\SYSTEMDATABASES\MSDBDATA.MDF'); 

 GO 

 

 ALTER DATABASE MSDB MODIFY FILE (NAME = MSDBLOG, FILENAME = 

 'E:\SYSTEMDATABASES\MSDBLOG.LDF'); 

 GO

Kết quả như sau:

The file "MODELDEV" has been modified in the system catalog. The new path will be used the next time the database is started.

The file "MODELLOG" has been modified in the system catalog. The new path will be used the next time the database is started.

 

The file "MSDBDATA" has been modified in the system catalog. The new path will be used the next time the database is started.

The file "MSDBLOG" has been modified in the system catalog. The new path will be used the next time the database is started.

Bây giờ thực hiện truy vấn sau để xác minh các đường dẫn được cập nhật trong danh mục hệ thống. Để làm điều đó, hãy thực hiện truy vấn sau:

SELECT DB_NAME(DATABASE_ID)AS [DATABASE NAME], 

       PHYSICAL_NAME AS [FILE LOCATION] 

 FROM SYS.MASTER_FILES 

 WHERE  DB_NAME(DATABASE_ID) IN ('MSDB', 'MODEL') 

 GO

Sau đây là kết quả:

DatabaseName Logical Name File Path

-------------- ------------------- --------------------------------------------

model modeldev E:\SystemDatabases\model.mdf

model modellog E:\SystemDatabases\modellog.ldf

msdb msdbdata E:\SystemDatabases\msdbdata.mdf

msdb msdblog E:\SystemDatabases\msdblog.ldf

Các bước di chuyển cơ sở dữ liệu tempDB

Khi chúng tôi khởi động lại SQL Server - nó sẽ tự động tạo lại tệp nhật ký và tempdb, do đó chúng tôi không cần phải di chuyển tệp tempdb theo cách thủ công - tất cả những gì chúng tôi phải làm là thay đổi đường dẫn của tệp cơ sở dữ liệu. Để thay đổi đường dẫn của tệp cơ sở dữ liệu tempdb, hãy thực thi truy vấn sau trong PowerShell / SSMS.

USE MASTER; 

 GO 

ALTER DATABASE TEMPDB MODIFY FILE (NAME = TEMPDEV, FILENAME = 

'E:\SYSTEMDATABASES\TEMPDB.MDF');


 GO 

ALTER DATABASE TEMPDB MODIFY FILE (NAME = TEMPLOG, FILENAME = 

'E:\SYSTEMDATABASES\TEMPLOG.LDF');


 GO

Kết quả như sau:

The file "tempdev" has been modified in the system catalog. The new path will be used the next time the database is started.

The file "templog" has been modified in the system catalog. The new path will be used the next time the database is started.

Bây giờ, hãy thực hiện truy vấn sau để xác minh các đường dẫn được cập nhật trong danh mục hệ thống:

SELECT DB_NAME(DATABASE_ID)AS [DATABASE NAME], 

       PHYSICAL_NAME AS [FILE LOCATION] 

 FROM SYS.MASTER_FILES 

 WHERE  DB_NAME(DATABASE_ID) = 'TEMPDB' 

 GO

Sau đây là kết quả:

DatabaseName Logical Name File Path

-------------- ------------------- --------------------------------------------

tempdb tempdev E:\SystemDatabases\tempdb.mdf 

tempdb templog E:\SystemDatabases\templog.ldf

Các bước di chuyển cơ sở dữ liệu chính

Quá trình di chuyển cơ sở dữ liệu chủ sang ổ đĩa khác khác với việc di chuyển cơ sở dữ liệu hệ thống khác. Để di chuyển cơ sở dữ liệu hệ thống, chúng ta sẽ thực hiện các bước sau:

  1. Mở Trình quản lý cấu hình SQL Server 2017 và mở rộng nhấp vào Dịch vụ máy chủ SQL . Xem hình ảnh sau:
  2. Nhấp chuột phải vào SQL Server (MSSQLSERVER) và nhấp vào thuộc tính. Trong hộp thoại thuộc tính, hãy chọn “ Tham số khởi động " chuyển hướng. Xem hình ảnh sau:
  3. Như bạn có thể thấy trong hình trên, trong các tham số hiện có, hộp văn bản chứa vị trí mặc định của tệp dữ liệu, tệp Nhật ký và nhật ký lỗi. Đây -d cho biết đường dẫn mặc định của tệp dữ liệu của cơ sở dữ liệu chính tương tự, -l cho biết đường dẫn mặc định của tệp nhật ký của cơ sở dữ liệu chính. Chúng ta phải thay thế các thông số này bằng một vị trí mới. Vì vậy, hãy nhấp vào tham số datafile và thay thế nó bằng “ - dE:\ Systemdatabases \ master.mdf ”Và nhấp vào Cập nhật. Tương tự, hãy nhấp vào tham số tệp nhật ký và thay thế bằng “-lE:\ Systemdatabases \ mastlog.ldf” giá trị và nhấp vào cập nhật. Xem hình ảnh sau:

4. Nhấp vào OK để đóng hộp thoại.

Lưu ý:

Khi chúng tôi đang thực hiện tác vụ này trên phiên bản chuyển đổi dự phòng của SQL Server, chúng tôi phải thực hiện tất cả các thay đổi ở trên trên các nút phụ (SQL02.Dc.Local)

Khởi động lại các dịch vụ SQL Server.

Khi đường dẫn mới của msdb, model và tempdb được cập nhật trong danh mục SQL Server, chúng ta phải dừng dịch vụ để sao chép tệp cơ sở dữ liệu trên ổ đĩa mới. Để làm như vậy, hãy mở trình quản lý cấu hình SQL Server 2017>> Nhấp vào Dịch vụ>> Nhấp chuột phải vào SQL Server (MSSQLSERVER) và nhấp vào “Dừng”. Xem hình ảnh sau:

Bây giờ sao chép tất cả các tệp cơ sở dữ liệu hệ thống trên ổ đĩa mới. Xem hình ảnh sau:

Bây giờ hãy bắt đầu dịch vụ từ trình quản lý cấu hình SQL Server. Nếu các dịch vụ bắt đầu thành công thì đường dẫn của hệ thống và cơ sở dữ liệu đã được cập nhật thành công. Thực thi truy vấn sau để xem lại đường dẫn của cơ sở dữ liệu chính:

SELECT DB_NAME(DATABASE_ID)AS [DATABASE NAME], 

       PHYSICAL_NAME AS [FILE LOCATION] 

 FROM SYS.MASTER_FILES 

 WHERE  DB_NAME(DATABASE_ID) = 'MASTER' 

 GO

Sau đây là kết quả:

DatabaseName Logical Name File Path

-------------- ------------------- --------------------------------------------

master master E:\SystemDatabases\master.mdf 

master mastlog E:\SystemDatabases\mastlog.ldf

Tóm tắt

Trong bài viết này, tôi đã giải thích quy trình từng bước chuyển cơ sở dữ liệu hệ thống sang đĩa phân cụm mới.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Quy ước đặt tên cơ sở dữ liệu của Microsoft?

  2. Ghi đè Trình tối ưu hóa truy vấn cho T-SQL của bạn tham gia với FORCEPLAN

  3. Có một SQL Server Profiler cho SQL Server Express không?

  4. Tìm các đối tượng bị hỏng trong SQL Server

  5. Cách sử dụng Tổng, Trung bình và Đếm trong Câu lệnh Chọn - Hướng dẫn SQL Server / TSQL Phần 128