Thay đổi lược đồ db trong môi trường sản xuất


7

Tôi có một số câu hỏi về thay đổi lược đồ db trong môi trường sản xuất mà không cần lấy máy chủ cơ sở dữ liệu và ứng dụng web ngoại tuyến.

Q1- Tôi muốn có thể thay đổi lược đồ cơ sở dữ liệu (thêm, xóa cột, chuẩn hóa bảng, v.v.) trong môi trường sản xuất của mình mà không cần lấy máy chủ db và ứng dụng web của tôi ngoại tuyến. Một số thực hành tốt nhất để đạt được điều này là gì? Ngoài ra có bất kỳ công cụ miễn phí nào giải quyết vấn đề này. Tôi đang sử dụng PostgresSQL .

Q2- Trong khi db đang được nâng cấp, các máy chủ ứng dụng trong sản xuất sẽ hoạt động so với db cũ hoặc db mới. Hoặc thường có một số loại lai sử dụng có lẽ là một mẫu chiến lược trong ứng dụng? Một số thực hành tốt nhất cho việc này là gì? Khi nào thì an toàn để trỏ máy chủ ứng dụng đến db được nâng cấp. Sẽ có một số loại thời gian chết liên quan hoặc có thể tránh được hoàn toàn bằng cách nào đó?

Cảm ơn.


1
Chúng tôi làm cả ngày. Google lên bài viết sau "Phát triển cơ sở dữ liệu bảo trì thấp", nó mô tả các bảng tái cấu trúc mà không có thời gian chết.
AK

Câu trả lời:


1

Nó thực sự phụ thuộc vào mức độ lớn, phức tạp và hoạt động của cơ sở dữ liệu của bạn. Hãy nhớ rằng trong khi bạn thực hiện thay đổi lược đồ, nhiều bảng sẽ ở chế độ chỉ đọc hoặc hoàn toàn không thể truy cập cho đến khi các thay đổi được hoàn thành. Cũng lưu ý rằng điều ngược lại là đúng - các thay đổi lược đồ của bạn sẽ cần có được các khóa độc quyền trên toàn bộ các bảng và có thể tất cả các mối quan hệ của chúng, có thể mất nhiều thời gian hoặc thậm chí không thể có được nếu ứng dụng cản trở. Về mặt lý thuyết điều này có thể dẫn đến các khóa tròn sẽ đóng băng toàn bộ DB. Về cơ bản, nếu có rất nhiều việc đọc và viết đang diễn ra và những thay đổi sẽ gây ra sự gián đoạn đáng kể cho ứng dụng của bạn, thì bạn nên sắp xếp thời gian chết cho nó.

Sau đó, bạn phải tính đến những thay đổi mà ứng dụng của bạn sẽ yêu cầu. Thay đổi lược đồ cũng yêu cầu thay đổi trong ứng dụng? Là ứng dụng của bạn đủ nhỏ hoặc đủ mô-đun để bạn có thể thực hiện những thay đổi đó theo gia số khi bạn thay đổi cơ sở dữ liệu? Cuối cùng, thực hiện các thay đổi trong sản xuất là thực sự khó khăn. Trừ khi ứng dụng của bạn được thiết kế cho nó từ đầu, gần như không có giá trị nỗ lực bổ sung cần thiết cho một số thời gian chết nhỏ.

Tùy chọn khác để giảm thiểu thời gian chết là xây dựng cơ sở dữ liệu mới với lược đồ cải tiến và máy chủ ứng dụng mới được kết nối với nó, sau đó xây dựng tiện ích để đồng bộ dữ liệu giữa cơ sở dữ liệu mới và cơ sở dữ liệu cũ. Khi bạn đã sẵn sàng để triển khai, bạn chỉ cần lưu lượng truy cập đến máy chủ ứng dụng mới. Một lần nữa, đây là sự đánh đổi giữa việc tạo ra hệ thống khó như thế nào và khó chấp nhận một số thời gian chết. Có rất ít ứng dụng không thể chịu đựng được một hoặc hai giờ với thông báo "Bảo trì theo lịch trình" bắt đầu từ 2 giờ sáng vào tối thứ ba.


0

Những gì tôi làm là xây dựng và kiểm tra một kịch bản với những thay đổi trong một máy chủ phát triển. Nó phải nâng cấp db theo cách hoàn toàn tự động và có thể tái tạo. Điều đó bao gồm việc chạy nó với cùng một người dùng có cùng quyền mà nó sẽ được chạy trong máy chủ sản xuất. Điều đó nói rằng câu hỏi này quá rộng và nên được hỏi trong https://dba.stackexchange.com/


Cảm ơn Clodoaldo. Tôi chủ yếu quan tâm đến việc tránh mọi loại thời gian ngừng hoạt động của ứng dụng trong khi thực hiện các nâng cấp lớn cho sản xuất db. Điều gì sẽ là thực hành tốt cho điều đó nếu điều đó là có thể?
Abdul Rahman
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.