2012-02-02 46 views
7

Tôi đang làm việc với cơ sở dữ liệu MySQL. Để đơn giản hóa vấn đề, giả sử tôi có hai môi trường: địa phương (phát triển) và môi trường ở xa (chế độ sản xuất).Thu thập cơ sở dữ liệu đã sửa đổi từ địa phương env sang sản xuất

Trong cơ sở dữ liệu, tôi có một số bảng chứa dữ liệu cấu hình.

Làm cách nào để tự động chuyển phát nhanh từ chế độ phát triển sang chế độ sản xuất khi tôi sửa đổi lược đồ cơ sở dữ liệu và nội dung của bảng cấu hình?

Ví dụ, tôi chấm nó theo cách thủ công bằng cách thực hiện một sự khác biệt giữa các cơ sở dữ liệu cục bộ và từ xa. Nhưng, tôi thấy rằng phương pháp đó không sạch sẽ và tôi tin rằng có thực hành tốt cho phép điều đó.

+0

Tôi không thể cung cấp tiền thưởng "theo cách thủ công" vì không có câu trả lời chính xác cho các nhu cầu cụ thể của tôi. Tuy nhiên, các đề xuất rất tốt. Cảm ơn bạn. – Zakaria

Trả lời

3

này có thể hữu ích trong trường hợp bạn có nhiều môi trường và nhiều nhà phát triển làm thay đổi sơ đồ rất thường xuyên và sử dụng php .. https://github.com/davejkiger/mysql-php-migrations

+0

cảm ơn câu trả lời. Bạn đã sử dụng công cụ này chưa? – Zakaria

+0

Có. Hoạt động tốt cho chúng tôi. Tất cả các thay đổi lược đồ được lưu trữ ở định dạng cụ thể có thể đọc được bởi kịch bản di chuyển và khi kịch bản chạy nó sao lưu db và áp dụng các thay đổi. Nó có một số tùy chọn phù hợp để hỗ trợ các môi trường dev khác nhau. Ví dụ: mỗi môi trường có thể lưu trữ các tập lệnh trong các đường dẫn khác nhau và bạn có thể chỉ định tham số đường dẫn khi chạy tập lệnh di chuyển. –

1

Trong hầu hết các dự án của tôi, tôi sử dụng SQLAlchemy (một công cụ Python để quản lý db cộng với một ORM). Nếu bạn có một số kinh nghiệm (ít hơn người mới bắt đầu) với Python tôi khuyên bạn nên sử dụng nó. Bạn có thể kiểm tra công cụ this với một chút trợ giúp của that. Điều này cũng rất hữu ích cho việc di chuyển db của bạn sang các rdbms khác (ví dụ mysql để postgres hoặc oracle).

2
  • Tham số giới thiệu "phiên bản" cho cơ sở dữ liệu của bạn. Phiên bản này nên được viết ở đâu đó trong mã của bạn và một nơi nào đó trong cơ sở dữ liệu của bạn. Mã của bạn sẽ chỉ hoạt động với cơ sở dữ liệu nếu chúng có phiên bản tương đương

  • Tạo trình bao bọc xung quanh kết nối MySQL của bạn. Trình bao bọc này nên kiểm tra các phiên bản và nếu các phiên bản không tương thích, nó sẽ bắt đầu nâng cấp.

  • "Nâng cấp" là một quá trình tuần tự áp dụng danh sách tệp * .sql với các lệnh SQL, sẽ di chuyển cơ sở dữ liệu của bạn từ trạng thái này sang trạng thái khác. Nó có thể là các thay đổi lược đồ hoặc các lệnh thao tác dữ liệu.

  • Khi bạn làm điều gì đó với cơ sở dữ liệu, chỉ thực hiện thông qua việc thêm tệp * .sql mới và phiên bản tăng dần.

  • Kết quả là khi bạn triển khai cơ sở dữ liệu từ môi trường phát triển sang sản xuất, cơ sở dữ liệu của bạn sẽ được nâng cấp tự động theo cách tương tự như được nâng cấp trong quá trình phát triển.

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