Một câu hỏi không phải DBA: Làm thế nào để sao chép / di chuyển một phiên bản SQL Server sang máy chủ khác một cách dễ dàng thông qua Sao lưu / Khôi phục?


11

Chúng ta vừa có một máy chủ mới vì vậy tôi cần sao chép phiên bản SQL Server 2008 hiện có từ hộp db cũ.

Tôi thường làm điều này bằng cách sao chép .mdf và đăng nhập các tệp và đính kèm chúng nhưng tôi không thể thực hiện việc ngắt dòng vì chúng được sử dụng 24/7 nên tôi đã sao lưu cơ sở dữ liệu và khôi phục chúng trên mới máy móc. Tuy nhiên, tôi đã kết thúc với một vài vấn đề mà một trong số chúng liên quan đến người dùng mồ côi . Vì vậy, những gì tôi đang tìm kiếm là một quá trình không an toàn để di chuyển mọi thứ với sự phiền phức / phiền toái / đau đầu tối thiểu. Tôi là một nhà phát triển .Net với số lượng SQL khá lớn, nhưng hoạt động bên trong của SQL Server phần lớn là một bí ẩn đối với tôi và tôi thấy tài liệu MS đau đớn khi truy tìm.

Xin vui lòng giúp đỡ.


1
Bạn có thể tìm thấy một số ý tưởng trong câu hỏi trước đây . Nhưng các câu trả lời trước là khá lý giải. Tôi nghĩ rằng ý tưởng tốt nhất sẽ là thiết lập phản chiếu và phá vỡ nó sau hoặc Vận chuyển nhật ký (chỉ có thể thực hiện từ trình hướng dẫn) cho tất cả các dbs và chỉ cần khôi phục thêm các bản sao lưu nhật ký cần thiết, nhưng nếu bạn nói bạn không phải là DBA , sau đó có lẽ phương pháp sao lưu là tốt hơn.
Mary

Câu trả lời:


10

Nếu bạn không thể lấy cơ sở dữ liệu ngoại tuyến, bạn cần phải sao lưu / khôi phục. Tôi muốn đề nghị như sau:

  1. Cài đặt SQL 2008 trên hộp mới, sử dụng cùng cấu trúc tệp với hộp cũ cho các tệp MDF và LDF.
  2. Hãy sao lưu tất cả các cơ sở dữ liệu trên hộp cũ.
  3. Khôi phục chủ từ hộp cũ sang hộp mới có SQL bắt đầu ở chế độ người dùng. Khôi phục phương thức tổng thể
  4. Khôi phục từng cơ sở dữ liệu từ hộp cũ sang hộp mới với tùy chọn BÌNH THƯỜNG để có thể áp dụng các bản sao lưu Diff hoặc T-log trong tương lai.
  5. Khôi phục msdb từ hộp cũ sang hộp mới.

Nếu bạn xây dựng và cấu hình hộp mới để trông giống hệt hộp cũ, thì bạn sẽ có sự ồn ào tối thiểu.

Tôi không biết cơ sở dữ liệu của bạn lớn như thế nào, vì vậy phương pháp này có thể mất nhiều thời gian. Cách dễ nhất là tắt hộp cũ và sao chép các tệp MDF và LDF và sau đó (sau khi khôi phục chính), bạn chỉ cần khởi động lại SQL để có cơ sở dữ liệu trực tuyến. Nhưng bạn đã nói rằng đó không phải là một lựa chọn, vì cơ sở dữ liệu không được phép ngoại tuyến.


3
Đừng quên sao chép mọi thay đổi dữ liệu được thực hiện sau khi thực hiện sao lưu. Bạn có thể lấy một bản sao lưu khác hoặc sao lưu tlog và áp dụng chúng cho máy chủ mới sau khi nó hoạt động, nhưng trước khi bạn chuyển đổi.
Eric Humphrey - lotahelp

điểm tốt, tôi quên đề cập đến là tốt. có lẽ tôi nên bao gồm một cấu hình gương db, có thể bị phá vỡ sau đó?
SQLRockstar

1
Tôi sẽ tưởng tượng ai đó đã có một bài viết rộng rãi về các cách khác nhau để di chuyển máy chủ. Ngoài ra, đây là một bài viết về chuyển thông tin đăng nhập sang một máy chủ mới: support.microsoft.com/kb/246133
Eric Humphrey - lotsahelp

8

Bạn đề cập đến hoạt động 24/7, vì vậy cách tốt nhất để làm điều này là tạo một máy nhân bản cơ sở dữ liệu trên hệ thống mới, sau đó bạn có thể chỉ cần chuyển đổi với mức tối thiểu - có lẽ bằng 0, tùy thuộc vào cách ứng dụng của bạn được cấu trúc - thời gian chết khi sử dụng máy khách- chuyển hướng bên. Các bước cơ bản là:

  1. Đảm bảo cơ sở dữ liệu chính của bạn đang chạy trong chế độ phục hồi ĐẦY ĐỦ .
  2. Sao lưu chính và khôi phục nó trên gương WITH NORECOVERY
  3. Tạo "điểm cuối" trên cả hai máy chủ và đảm bảo kết nối (ví dụ: quy tắc tường lửa), đặt chính xác cổng và địa chỉ IP), vd:

    CREATE ENDPOINT endpoint1
    STATE=STARTED AS TCP(LISTENER_PORT = 5222, LISTENER_IP = 192.168.1.5) 
    FOR DATA_MIRRORING(ROLE = PARTNER, AUTHENTICATION = WINDOWS NEGOTIATE, ENCRYPTION = REQUIRED ALGORITHM RC4)
  4. Thiết lập phản chiếu trên gương, chỉ vào chính:

    ALTER DATABASE GaiusMirrorDB SET PARTNER = 'TCP://192.168.1.5:5222'
    go
    EXEC sys.sp_dbmmonitoraddmonitoring
    go
  5. Và trên chính, chỉ vào gương (chỉ là một tên cơ sở dữ liệu và địa chỉ IP khác nhau.

  6. Sau đó, khi thời gian đến, chỉ cần chuyển từ chính sang gương:

    ALTER DATABASE GaiusDB SET PARTNER FAILOVER
    GO

Lưu ý: Tôi giả sử rằng hai máy chủ này nằm trên cùng một mạng, vì vậy sẽ ổn khi hoạt động ở chế độ đồng bộ. Nếu đây là trên một liên kết WAN, sử dụng chế độ không đồng bộ.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.