Sao lưu cơ sở dữ liệu SQL thường xuyên là phải. Chúng tôi đã có các cách để có thể dễ dàng sao lưu tất cả các cơ sở dữ liệu máy chủ SQL của bạn sang một ổ đĩa cứng cục bộ, nhưng điều này không bảo vệ chống lại ổ đĩa và / hoặc lỗi hệ thống. Là một lớp bảo vệ bổ sung chống lại loại thảm họa này, bạn có thể sao chép hoặc trực tiếp tạo bản sao lưu của mình trên một mạng chia sẻ.
Sao lưu cục bộ và sau đó sao chép vào mạng chia sẻ
Cách ưu tiên và trực tiếp nhất để thực hiện tác vụ này đơn giản là tạo bản sao lưu cục bộ của cơ sở dữ liệu và sau đó sao chép tệp sao lưu tương ứng vào một mạng chia sẻ. Bạn có thể thực hiện việc này bằng cách tạo một tập lệnh batch giống như sau:
SET LocalFolder=C:Program FilesMicrosoft SQL ServerMSSQL.1MSSQLBackup SqlCmd -E -Q “Backup Database MyDB To Disk=’%LocalFolder%MyDB.bak'” XCopy “%LocalFolder%MyDB.bak” “192.168.16.55BackupDatabases” /Z /V DEL “%LocalFolder%MyDB.bak”
Kịch bản lệnh này thực hiện như sau (từng dòng):
- Đặt một biến vào thư mục sao lưu SQL cục bộ.
-
Tạo bản sao lưu SQL của MyDB (sử dụng Xác thực Windows) vào thư mục sao lưu SQL cục bộ.
- Sao chép tệp sao lưu cục bộ vào một mạng chia sẻ.
- Xóa tệp sao lưu cục bộ.
Một lần nữa, đây là phương pháp ưa thích bởi vì nó hoạt động ra khỏi hộp và khả năng thất bại dự phòng là tối thiểu kể từ khi sao lưu được tạo ra trên một đĩa cục bộ. Tuy nhiên, nếu bạn không có đủ dung lượng đĩa để lưu trữ các tệp sao lưu cục bộ, tác vụ này sẽ không thành công. Trong sự kiện này, bạn sẽ cần phải thêm không gian đĩa bổ sung hoặc sao lưu trực tiếp vào một mạng chia sẻ.
Sao lưu trực tiếp vào một mạng chia sẻ
Thông thường, khi bạn cố gắng tạo bản sao lưu trực tiếp vào một mạng chia sẻ bằng cách sử dụng lệnh như:
SqlCmd -E -Q “Backup Database MyDB To Disk=’192.168.16.55BackupDatabasesMyDB.bak'”
Bạn hầu như sẽ gặp lỗi dọc theo các dòng:
Msg 3201, Level 16, State 1, Server JF, Line 1 Cannot open backup device ‘192.168.16.55BackupDatabasesMyDB.bak’. Operating system error 5(Access is denied.). Msg 3013, Level 16, State 1, Server JF, Line 1 BACKUP DATABASE is terminating abnormally.
Lỗi này xảy ra mặc dù thực tế rằng bạn đã chạy lệnh sao lưu SQL bằng cách sử dụng Xác thực Windows (chuyển đổi -E) và tài khoản Windows là khả năng truy nhập và sao chép tệp vào phần chia sẻ thông qua Windows Explorer.
Lý do hành động này không thành công là vì lệnh SQL được thực thi trong giới hạn của tài khoản mà dịch vụ SQL Server đang chạy. Khi bạn xem danh sách Dịch vụ trên máy tính của mình, rất có thể bạn sẽ thấy dịch vụ SQL Server đang chạy (cột Đăng nhập với tư cách) hoặc Hệ thống cục bộ hoặc Dịch vụ mạng là tài khoản hệ thống không có quyền truy cập mạng.
Trên hệ thống của chúng tôi sao lưu vào một lệnh chia sẻ mạng không thành công vì chúng tôi có dịch vụ SQL Server chạy như hệ thống cục bộ, một lần nữa, không thể truy cập vào bất kỳ tài nguyên mạng nào.
Chỉnh sửa thuộc tính của dịch vụ SQL Server và trên tab Đăng nhập, định cấu hình dịch vụ để chạy dưới dạng tài khoản thay thế có quyền truy cập mạng.
SqlCmd -E -Q “Backup Database MyDB To Disk=’192.168.16.55BackupDatabasesMyDB.bak'”
Bạn sẽ thấy thông báo thành công:
Processed 152 pages for database ‘MyDB’, file ‘MyDB’ on file 1. Processed 2 pages for database ‘MyDB’, file ‘MyDB_log’ on file 1. BACKUP DATABASE successfully processed 154 pages in 0.503 seconds (2.493 MB/sec).
Với tệp sao lưu bây giờ trong thư mục chia sẻ mạng:
Cân nhắc chia sẻ mạng
Điều quan trọng cần lưu ý là lệnh sao lưu dự kiến sẽ có thể kết nối trực tiếp với mạng chia sẻ mà không bị nhắc nhở về thông tin đăng nhập. Tài khoản bạn đã định cấu hình dịch vụ SQL Server để chạy như phải có kết nối đáng tin cậy với mạng chia sẻ nơi thông tin đăng nhập tương ứng cho phép truy cập, nếu không, lỗi như thế này có thể xảy ra:
Msg 3201, Level 16, State 1, Server JF, Line 1 Cannot open backup device ‘192.168.16.55BackupDatabasesMyDB.bak’. Operating system error 1326(Logon failure: unknown user name or bad password.). Msg 3013, Level 16, State 1, Server JF, Line 1 BACKUP DATABASE is terminating abnormally.
Lỗi này cho biết tên người dùng và mật khẩu của tài khoản không được chia sẻ mạng và lệnh không thành công.
Một vấn đề khác cần lưu ý là bản sao lưu được thực hiện trực tiếp vào tài nguyên mạng, vì vậy mọi trục trặc trong kết nối mạng có thể khiến bản sao lưu của bạn bị lỗi. Vì lý do này, bạn chỉ nên sao lưu vào các vị trí mạng ổn định (tức là có thể không phải là VPN).
Ý nghĩa an ninh
Như đã đề cập trước đó, sử dụng phương pháp mà bạn sao lưu cục bộ và sau đó sao chép vào một mạng chia sẻ được ưa thích vì nó cho phép bạn chạy Dịch vụ SQL dưới dạng tài khoản chỉ với quyền truy cập hệ thống cục bộ.
Bằng cách chạy dịch vụ dưới dạng tài khoản thay thế, bạn mở cửa cho các vấn đề bảo mật tiềm ẩn. Ví dụ: một tập lệnh SQL độc hại có thể thực thi theo tài khoản thay thế và tài nguyên mạng tấn công. Ngoài ra, mọi thay đổi đối với tài khoản tương ứng (thay đổi mật khẩu / hết hạn hoặc xóa / vô hiệu hóa tài khoản) sẽ khiến dịch vụ SQL Server không khởi động được.
Điều quan trọng cần lưu ý những điểm này nếu bạn chạy cá thể SQL Server bằng tài khoản thay thế. Trong khi các lệnh này không hiển thị các cảnh báo nếu bạn thực hiện các biện pháp phòng ngừa thích hợp, bạn nên cân nhắc thêm không gian ổ cứng bổ sung và sau đó thực hiện sao lưu cục bộ và sao chép để có thể chạy dịch vụ SQL bằng tài khoản cục bộ.