Làm thế nào để hầu hết hệ thống cơ sở dữ liệu "phổ biến" (MySQL, Postgres ...) xử lý các bảng thay đổi trên cơ sở dữ liệu sản xuất trực tiếp (như thêm, xóa hoặc thay đổi loại colums)?
Tôi biết cách chính xác là sao lưu mọi thời gian ngừng hoạt động và thực hiện sau đó thực hiện các thay đổi.
Nhưng ... có bất kỳ hệ thống cơ sở dữ liệu hiện tại nào hỗ trợ thực hiện những việc này "trực tuyến" mà không dừng lại không? (có thể chỉ trì hoãn các truy vấn tham chiếu một cột vừa được thay đổi / xóa)
Và điều gì xảy ra khi tôi chỉ làm một ALTER TABLE...
cơ sở dữ liệu đang chạy? Có phải mọi thứ dừng lại khi điều này xảy ra? Dữ liệu có thể bị hỏng? v.v.
Một lần nữa, tôi chủ yếu đề cập đến Postgres hoặc MySQL vì đây là những gì tôi gặp phải.
(Và, vâng, bất cứ lúc nào tôi phải làm điều này trước khi tôi thực hiện "đúng cách", sao lưu mọi thứ, lên lịch trình, v.v ... nhưng tôi chỉ muốn biết liệu có thể thực hiện loại này và mọi thứ "nhanh chóng không bẩn "hoặc nếu có bất kỳ hệ thống DB nào thực sự hỗ trợ thay đổi lược đồ" nhanh, sống và bẩn ")
Ai đó chỉ đề xuất Thay đổi lược đồ trực tuyến cho MySQL từ tập lệnh Facebook (có hướng dẫn ở đây và nguồn ở đây ) ... có vẻ như là một cách hay để tự động hóa một bộ các cách "hacky" để thực hiện ... có ai đã từng sử dụng nó trong một cái gì đó tương tự sản xuất?
pg_reorg
có thể giúp với các kịch bản khó khăn hơn.