[英]How to selectively export mysql data for a github repo
我們是一個開源項目,並希望通過github公共回購協作編輯我們的網站。
關於將mysql數據導出到github的最佳解決方案的任何想法,因為mysql可以包含一些敏感信息,以及我們如何對其中發生的更改進行版本化?
答案是你沒有在回購中保存數據。 您可能想要保留您的ddl,也許還有一些配置數據。 但就是這樣。 如果要對數據進行版本控制,還有其他選項。 GIT不是其中之一
使用博客引擎“git后端編輯”,忘記mysql,在github.com上提交,推拉,支配!
這是最好的列表:
以及萬一,...一個簡單的,Git驅動的wiki,帶有甜蜜的API和本地前端。 :
假設您希望以這種方式處理少量數據,可以使用mysqldump
轉儲要保持同步的表,檢查轉儲到git中,並在結帳時將其推回到數據庫中。
編寫一個shell腳本,它相當於:
mysqldump [options] database table1 table2 ... tableN > important_data.sql
創建或更新文件。 將該文件檢入git
,當數據發生重大變化時,您可以執行以下操作:
mysql [options] database < important_data.sql
理想情況下,最后一個將是一個git post-receive
hook,所以你永遠不會忘記應用你的更改。
這就是你如何做到的。 我不確定你是否願意這樣做。 它似乎非常脆弱,尤其是 如果團隊成員1對感興趣的表做了一些費力的改動,而團隊成員2也在做同樣的事情。 其中一個是首先檢查他們的更改,最好的情況是你會有一些討厭的合並問題。 最糟糕的情況是,其中一人失去了所有的變化。
您可以通過始終在important_data.sql
文件中進行更改來緩解這些問題,但這樣做的難易程度取決於您的應用程序。 如果你這樣做,你要玩的mysqldump
,所以你得到一個不錯的可讀性和選項git-
可合並文件。
似乎dbdeploy正是您所尋找的
您可以將每個表導出為單獨的SQL文件。 只有在更改表格時才能再次按下。
如果您正在談論配置,那么我建議使用sql轉儲或類似方法根據Ray Baxters答案為數據庫設定種子。
既然你提到了Drupal,我猜這些數據與用戶/內容有關。 因此,您真的應該考慮擁有一個每個開發人員遠程連接的單個數據庫 - 即一個版本。 這是因為對mysql表的並發修改將非常難以協調(例如,兩個新用戶都使用user.id = 10,每個用戶發布post.id = 1,post.user_id = 10等新帖子)。
當然,使用sql轉儲(可能在版本控制中保留)來支持這一點可能是有意義的,以防一個開發人員意外刪除了一些關鍵的東西。
如果您只想要部分轉儲,PHPMyAdmin將會這樣做。 運行SELECT語句,當它顯示時,頁面底部會有一個導出鏈接( 頂部的那個鏈接就是整個表格)。
您可以對mysqldump文件進行版本控制,這些文件只是sql腳本,如前面的答案中所述。 根據您的意見,您的主要興趣似乎是讓開發人員擁有本地環境的基礎。
這是Drupal 6的一個優秀的ERD。我不知道你正在使用什么版本的Drupal,或者v6和v7之間是否有這些核心表的更改,但你可以使用轉儲或phpMyAdmin或其他任何其他方法檢查您可以使用的工具,可以讓您檢查數據庫結構。 Drupal ERD
基於ERD,Drupal安裝存在問題的數據位於users,user_roles和authmap表中。 有一種省略這些的快速方法,但重要的是要記住,添加的內容將與添加它的用戶有關系,如果用戶表中沒有與行對應的行,則Drupal可能會出現問題已被添加。
因此,要編寫mysqldump腳本,您只需排除問題表,或至少排除用戶表。
mysqldump -u drupaldbuser --password=drupaluserpw 0-ignore-table=drupaldb.user drupaldb > drupaldb.sql
您需要創建一個模擬用戶表,其中包含一組具有已知名稱/密碼組合的測試用戶,您只需要轉儲和版本一次,但理想情況下,您需要足夠多的這些用戶來匹配或超過真正的drupal用戶數量將會增加內容。 這只是為了使權限關系匹配。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.