2011-07-07 23 views
5

Tôi có một tập lệnh là một phần của quá trình triển khai của mình để đẩy các thay đổi DB vào máy chủ sản xuất. Nếu kịch bản làm hỏng dữ liệu của tôi vì một lý do nào đó (một bản cập nhật không tốt), rất khó để khôi phục.Làm thế nào để triển khai các thay đổi cơ sở dữ liệu cho một máy chủ Live?

Một cách để giải quyết vấn đề này là tắt ứng dụng cho người dùng trong khi cập nhật, vì vậy nếu sự cố xảy ra, chỉ cần quay lại bản sao lưu mà tôi đã thực hiện trước khi triển khai.

Nhưng tôi đã nghe về những người khác triển khai và duy trì trang web của họ ... bạn sẽ làm thế nào và nếu bạn thất bại, bạn có thể khôi phục dữ liệu đến từ khi bạn sao lưu trước khi triển khai?

Trả lời

1

Đây là một vấn đề phức tạp nói chung, giống như nhiều thứ trong quản trị cơ sở dữ liệu. Về cơ bản có ba cách để tiếp cận điều này:

  1. Tránh thất bại bằng mọi giá.
  2. Khóa mọi thứ xuống (và thực hiện nâng cấp rất nhanh).
  3. OK để mất dữ liệu.

Nếu bạn có hệ thống phức tạp, hãy tách riêng các thành phần của bạn theo các danh mục này hoặc các danh mục tương tự.

Có hệ thống dàn dựng để kiểm tra nâng cấp. Hệ thống dàn dựng ít nhiều là một bản sao của hệ thống sản xuất; nó tách biệt với hệ thống kiểm tra. Một điều nữa là phải có một hệ thống kiểm toán hoặc ghi nhật ký mà bạn có thể tham khảo nếu bạn cần phát lại dữ liệu.

Vấn đề thực sự là nếu bạn nhận thấy sau này việc nâng cấp của bạn bị lỗi. Sau đó, bạn đang khá say.

0

Cơ sở dữ liệu của bạn lớn đến mức nào? Bạn có thể đủ khả năng để mất dữ liệu đã được cập nhật trong khi khách hàng đã sử dụng nó và trước khi bạn phải đi đến sao lưu? Mỗi kế hoạch triển khai liên quan đến một số thỏa hiệp ở đâu đó, và bạn phải quyết định thỏa hiệp nào là ít đau đớn nhất đối với những gì bạn muốn làm.

Đối với các trang web đơn giản chỉ chạy pgsql, bạn có thể ngắt kết nối máy khách và chạy toàn bộ cập nhật trong một giao dịch lớn. Nếu bất kỳ phần nào thất bại, toàn bộ điều quay trở lại và nó giống như bạn không bao giờ làm bất cứ điều gì. Đáng buồn thay, điều này không làm việc chính xác như nhau cho các dbs khác, nhưng với flashback hoặc bất cứ điều gì oracle gọi nó, bạn có thể nhận được một cái gì đó tương tự.

Đối với các trang web phức tạp, lớn hơn chạy trên cùng một tập hợp máy chủ db được sao chép, mọi thứ trở nên phức tạp hơn rất nhiều nhanh chóng hơn. Nơi tôi đã làm việc chúng tôi đã sử dụng Slony, và nó không độc đáo để chơi với những người khác khi bạn đang triển khai thay đổi DDL, và bạn khá nhiều CÓ để đưa tất cả các khách hàng ngoại tuyến trong khi triển khai DDL. Tuy nhiên, thời gian ngừng hoạt động được đo bằng phút cho chúng tôi, ngay cả với các cơ sở dữ liệu có kích thước 1TB.

Các vấn đề liên quan