Đồng bộ hóa cơ sở dữ liệu Wordpress giữa dev và prod


19

Câu hỏi đã được hỏi trước về cách đồng bộ hóa các tệp cũng như cơ sở dữ liệu giữa hai cài đặt Wordpress.

Đối với cấp độ cơ sở dữ liệu, câu trả lời thường là về cơ bản kết xuất một cơ sở dữ liệu và chèn nó vào một máy chủ khác. Vấn đề với điều này là cuối cùng bạn sẽ mất bất kỳ thay đổi nào có khả năng được thực hiện trên máy chủ prod. Chẳng hạn, số liệu sử dụng, bình luận, v.v ...

Với suy nghĩ này, tôi đã bắt đầu tự hỏi liệu có thể mở rộng ORM Wordpress để bạn có thể tạo deltas và sau đó đưa chúng vào trang web prod hay không.

Có ai đã thử điều này, nhìn vào nó, hoặc có bất kỳ ý tưởng hoặc ý kiến?


1
Tôi đã xem xét nó, vâng, nhưng chưa đạt được nhiều thành tựu. Nếu bạn có thể chỉ ra một bằng chứng về khái niệm với một nền tảng CMS khác, tôi chắc chắn rằng chúng ta có thể giới thiệu lại nó cho WordPress.
EAMann

Làm thế nào về nhân rộng?
kovshenin

Sao chép tốt với mysql sẽ yêu cầu một số hình thức sao chép chính chủ là PITA. Nếu bạn tính đến thực tế là giữa dev và prod, thì việc sao chép sẽ phải bị trì hoãn, điều này rất có thể sẽ phá vỡ mọi lúc.
jonathanserafini

Câu trả lời:


11

Thực tế là những gì chúng ta muốn là đây: http://www.liquibase.org/

Liquibase là một thư viện mã nguồn mở (Apache 2.0 được cấp phép), thư viện độc lập với cơ sở dữ liệu để theo dõi, quản lý và áp dụng các thay đổi cơ sở dữ liệu. Nó được xây dựng trên một tiền đề đơn giản: Tất cả các thay đổi cơ sở dữ liệu được lưu trữ ở dạng có thể đọc được của con người và được kiểm tra trong kiểm soát nguồn.

Tuy nhiên, quá trình phát triển của chúng tôi không hỗ trợ nó. Chúng tôi thường không sửa đổi cơ sở dữ liệu thông qua các tập lệnh rời rạc do chúng tôi tự viết, chúng tôi sử dụng các plugin mà chúng tôi kích hoạt. Chúng tôi không viết các tập lệnh DML để sửa đổi dữ liệu tra cứu mà sau đó chúng tôi kiểm tra kiểm soát mã nguồn, chúng tôi sử dụng giao diện người dùng trên trang quản trị và do đó không có mã nguồn để sử dụng sau này để sao chép thay đổi đó trong quá trình di chuyển.

Tuy nhiên, chúng tôi có thể mô phỏng một số phần mềm - sử dụng một số công cụ được liệt kê trên trang này:

/programming//q/225772/149060

Chẳng hạn, liquidbase có một tính năng khác biệt, tùy chọn bao gồm các thay đổi đối với dữ liệu. Chúng tôi có thể, có khả năng, đưa ra lược đồ và dữ liệu khác với tập lệnh, ngoại trừ (có thể) các bảng nhất định có khả năng bao gồm dữ liệu thử nghiệm (ví dụ: bài đăng, v.v.) và sau đó áp dụng tập lệnh vào cơ sở dữ liệu sản xuất.

MySQLDiff (đã thảo luận về câu hỏi StackOverflow) có lược đồ khác nhau và tác giả của nó khuyến nghị mysql_coldiff cho các khác biệt dữ liệu theo bảng - cả hai đều được triển khai trong perl, nếu các công cụ java (liquidbase) quá nặng tài nguyên cho máy chủ của bạn - mặc dù mang cả cơ sở dữ liệu cục bộ và chạy công cụ trên PC của bạn giải quyết vấn đề đó ...

Nếu chúng tôi thực sự muốn làm đúng, chúng tôi nên đăng nhập bất kỳ sql nào liên quan đến cài đặt, tùy chọn hoặc thay đổi cấu hình khác và bất kỳ thay đổi lược đồ nào - và chuyển đổi mã đã ghi thành tập lệnh di chuyển để chơi với máy chủ sản xuất của chúng tôi. Phát tập lệnh di chuyển đối với máy chủ, sao chép tệp trang web wordpress (không bao gồm tải lên, nếu có) và chúng tôi là vàng.

Vì vậy, theo tôi, cách tốt nhất là một plugin-builder-builder của nhà phát triển bẫy bẫy sql chúng ta cần, lưu trữ nó và sau đó tạo một tập lệnh di chuyển từ mã đã đăng nhập, thay vì xây dựng một cách để hợp nhất cơ sở dữ liệu giữa dàn dựng và sản xuất. Có vẻ là một vấn đề đơn giản hơn để giải quyết quá.

Nếu chúng tôi xem mã của móc nối nhạc cụ của @bueltge để lấy cảm hứng: https://gist.github.com/1000143 (cảm ơn Ron Rennick qua G + vì đã chỉ cho tôi theo hướng SAVEQUERIES và móc tắt máy, đó là dẫn tôi đi tìm nó)

- thay đổi nó để có được đầu ra SAVEQUERIES thay thế 
- chỉ chạy trong khi quản trị viên 
- lọc ra tất cả các lựa chọn 
- lưu kết quả ra bảng trong móc tắt máy 
- chúng tôi có thể chọn lọc chuyển đổi bẫy đầu ra dựa trên những gì chúng tôi đang làm vào lúc này.  

Ví dụ:

Tên chụp: Kích hoạt & Cấu hình Plugin XYZ

Chụp chuyển đổi trạng thái - bật

... cài đặt và cấu hình plugin XYZ

Chụp chuyển đổi trạng thái - tắt

Xuất tập lệnh di chuyển cho: Kích hoạt & Cấu hình Plugin XYZ

Nhấn nút Xuất - để tạo trường văn bản bật lên với SQL bị bẫy đã lọc - lý tưởng được định dạng trước dưới dạng tập lệnh shell với lệnh gọi dòng lệnh tới mysql. Sao chép và dán nó vào thư mục mã di chuyển của bạn và thêm vào kho lưu trữ mã nguồn của bạn.

Chú ý cẩn thận để bật và tắt chức năng chụp khi bạn đang làm việc và bạn sẽ có thể tạo tập lệnh di chuyển hoàn hảo để đưa cơ sở dữ liệu sản xuất của bạn đến một cấu hình tương đương với cơ sở dữ liệu dàn của bạn.

Những gì tốt hơn, bạn sẽ có một kịch bản (hoặc loạt giống nhau) mà bạn có thể KIỂM TRA. Hình ảnh có các kịch bản di chuyển có thể nhân rộng, có thể kiểm tra, di chuyển !!

Tôi đã yêu rồi.

Ai khác?


2
Đẹp viết. Tôi đã dành rất nhiều thời gian cho vấn đề này bởi vì tôi đã có khách hàng tìm kiếm sự giúp đỡ của chúng tôi. Đây là một vấn đề thực sự khó khăn, nhưng chúng tôi đã quyết định rằng việc đi xuống cấp độ SQL có lẽ là quá nhiều giải pháp "đun sôi đại dương" có nghĩa là cơ hội để nó hoạt động 100% là không thể. Tôi nghĩ rằng giải pháp này là sử dụng cách tiếp cận "phân chia và chinh phục" với mã rõ ràng để hiểu cấu trúc của WordPress và cung cấp các móc nối cho bất cứ điều gì khác. Tôi hy vọng chúng ta có thể trình bày một giải pháp khả thi công khai tại một số điểm trong tương lai.
MikeSchinkel

Vậy .... ai muốn làm điều này?
Dave Kiss

Đối với bất cứ ai đang tìm kiếm, dường như ý tưởng tương tự này có sẵn dưới dạng plugin: wordpress.org/plugins/query-recorder
majick

3

Các cơ sở dữ liệu Sync WordPress Plugin làm một công việc tuyệt vời đồng bộ dữ liệu giữa hai máy chủ.

Theo mặc định, nó ghi đè TẤT CẢ dữ liệu đích, tuy nhiên tôi vừa thực hiện một số cải tiến cho plugin cho phép bạn chỉ đồng bộ các bảng cơ sở dữ liệu cụ thể. Điều này có thể giúp bạn giữ lại nhận xét, người dùng và các dữ liệu khác mà bạn không muốn ghi đè. Điều đó có cung cấp cho bạn độ chi tiết mà bạn cần không?

Tôi chưa công bố các thay đổi của mình cho công chúng, nhưng nếu bạn quan tâm đến một bản sao, hãy gửi email cho tôi tại simon-at-yump.com.au. Nếu bất cứ ai thấy điều này hữu ích hoặc có các yêu cầu tính năng bổ sung, hãy cho tôi biết và tôi sẽ xem những gì tôi có thể làm.


CẬP NHẬT: Tôi cũng vừa tìm thấy plugin WP-Sync-DB , một nhánh của thương mại WP-Migrate-DB-Pro . Nó thực hiện một điều rất giống nhau, mặc dù có lẽ có nhiều sự đánh bóng hơn so với Database Sync .


0

Có một dịch vụ thương mại tương đối mới dành riêng cho nhiệm vụ này. Nó được gọi là RAMP:

http://alexking.org/blog/2011/07/20/ramp-content-deploy-wordpress


1
Có những hạn chế đối với dịch vụ đó khiến nó không phù hợp với trường hợp sử dụng của tôi:
marfarma

2
Trường hợp sử dụng của tôi - thêm chức năng trong khi sản xuất thêm nội dung. Trích dẫn: "Các mục sau hiện không được hỗ trợ: Cài đặt (cài đặt lõi và cài đặt plugin, trừ khi chúng chọn tham gia vào RAMP)" 99,99% tùy chọn chủ đề và plugin và cài đặt sẽ không di chuyển. Không có thay đổi mã trong sản xuất, các loại bài tùy chỉnh sẽ không di chuyển. Hãy quên việc thêm các bảng tùy chỉnh và dữ liệu của họ.
marfarma

1
Sản phẩm đó có trường hợp sử dụng hợp lệ - nội dung dàn dựng và sau đó đẩy nó trực tiếp. Thật không may, đó không phải là vấn đề tôi quan tâm. Kiểm tra lại OP, không rõ anh ấy đang xử lý trường hợp nào - vì vậy đây có thể là giải pháp hoàn hảo cho cửa hàng của họ.
marfarma
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.