問題描述
之前已經詢問過如何同步檔案以及兩個 Wordpress 安裝之間的資料庫。
對於資料庫級別,答案通常是基本上轉儲一個資料庫並將其插入另一個伺服器。這樣做的問題是您最終會丟失在 prod 伺服器上可能做出的任何更改。例如,使用指標,評論等…
考慮到這一點,我開始懷疑是否可以擴充套件 Wordpress ORM,以便您可以生成三角形,然後將其注入到 prod 站點。
有人試過這個,看著它,還是有任何想法或意見?
最佳解決方案
現實是,我們想要的是:http://www.liquibase.org/
Liquibase is an open source (Apache 2.0 Licensed), database-independent library for tracking, managing and applying database changes. It is built on a simple premise: All database changes are stored in a human readable yet trackable form and checked into source control.
但是我們的開發過程並不支援它。我們通常不會透過我們自己編寫的離散指令碼修改資料庫,我們使用我們啟用的外掛。我們不編寫 DML 指令碼來修改 look-up 資料,然後我們檢查原始碼控制,我們在管理頁面上使用一個 UI,因此沒有原始碼以供以後用於在遷移期間複製該更改。
但是,我們可以模擬其中的一些 – 使用此頁面上列出的一些工具:
http://stackoverflow.com/q/225772/149060
例如,液態鹼基具有差異特徵,還可以包括對資料的改變。我們可能會將模式和資料差異輸出到指令碼,排除 (儘可能) 某些可能包含測試資料 (即 post 等) 的表,然後將指令碼應用於生產資料庫。
MySQLDiff(在 StackOverflow 問題上討論) 做模式差異,作者建議用於 table-wise 資料差異的 mysql_coldiff – 兩者都在 perl 中實現,如果 java 工具 (液體基礎) 對於您的伺服器來說太資源沉重 – 儘管將資料庫本地化並執行 PC 上的工具解決了這個問題…
如果我們真的要這樣做,我們應該記錄與設定,選項或其他配置更改以及任何模式更改相關的任何 sql,並將記錄的程式碼轉換為遷移指令碼,以對付我們的生產伺服器。播放針對伺服器的遷移指令碼,複製 wordpress 站點檔案 (不包括上傳,如果適用),我們是黃金。
所以,在我看來,最好的方法是開發人員的 migration-builder-plugin,它捕獲我們需要的 sql,儲存它,然後從記錄的程式碼生成一個遷移指令碼,而不是建立一種在分段和生產之間合併資料庫的方式。似乎也是一個更簡單的問題。
如果我們看看 @bueltge 的測試鉤子呼叫外掛的程式碼靈感:https://gist.github.com/1000143(感謝 Ron Rennick 透過 G +指向我的 SAVEQUERIES 方向和關閉掛鉤,導致我找到它)
-- alter it to get the SAVEQUERIES output instead
-- only run while in admin
-- filter out all selects
-- save results out to table in the shutdown hook
-- we could selectively toggle output trapping based on what we were doing at the moment.
例如:
捕獲名稱:啟用& 配置外掛 XYZ
捕獲狀態切換 – 開啟
… 安裝和配置外掛 XYZ
捕獲狀態切換 – 關閉
匯出遷移指令碼:啟用& 配置外掛 XYZ
按匯出按鈕 – 生成一個彈出文字欄位與已過濾的陷阱 SQL – 理想的 pre-formatted 作為一個 shell 指令碼與命令列呼叫 mysql 。複製& 將其貼上到您的遷移程式碼資料夾並新增到您的原始碼儲存庫。
注意在工作時切換捕獲和關閉,您將能夠生成完美的遷移指令碼,使生產資料庫與您的分段資料庫具有相同的配置。
更好的是,你會有一個指令碼 (或系列相同),你可以測試。成像具有可複製,可測試,遷移指令碼!
我已經愛上了
還有誰?
次佳解決方案
Database Sync WordPress 外掛在兩個伺服器之間的資料同步工作非常好。
預設情況下,它會覆蓋所有目標資料,但是我剛剛實現了外掛的一些增強功能,只允許您同步特定的資料庫表。這可以幫助您保留您不想覆蓋的評論,使用者和其他此類資料。這是否給你你需要的粒度?
我尚未向公眾釋出我的更改,但如果您有興趣,請傳送電子郵件至 simon-at-yump.com.au 。如果有人發現這有用或有其他功能請求,請告訴我,我會看看我能做什麼。
更新:我也剛剛發現了 WP-Sync-DB 外掛,它是商業 WP-Migrate-DB-Pro 外掛的一個分支。它做的非常類似的事情,雖然可能比資料庫同步更波蘭。
參考文獻
注:本文內容整合自 Google/Baidu/Bing 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。