我们是一个开源项目,希望通过github公共回购协作编辑我们的网站。
关于将mysql数据导出到github的最佳解决方案的任何想法,因为mysql可以包含一些敏感信息,以及我们如何对其中发生的更改进行版本化?
答案 0 :(得分:5)
答案是您没有在回购中保存数据。 您可能想要保留您的ddl,也许还有一些配置数据。但就是这样。 如果要对数据进行版本控制,还有其他选项。 GIT不是其中之一
答案 1 :(得分:1)
使用博客引擎“git后端编辑”,忘记mysql,在github.com上提交,推拉,支配!
这是最好的列表:
以防万一,...一个简单的,Git驱动的wiki,带有甜蜜的API和本地前端。 :
答案 2 :(得分:1)
假设您希望以这种方式处理少量数据,可以使用mysqldump
转储要保持同步的表,检查转储到git中,然后将其推回在结账时进入你的数据库。
编写一个与以下内容相同的shell脚本:
mysqldump [options] database table1 table2 ... tableN > important_data.sql
创建或更新文件。将该文件检入git
,当您的数据发生重大变化时,您可以执行以下操作:
mysql [options] database < important_data.sql
理想情况下,最后一个会在git post-receive
挂钩中,所以您永远不会忘记应用更改。
这就是你如何做到的。我不确定你是否愿意这样做。它似乎非常脆弱,尤其是如果团队成员1对感兴趣的表做了一些费力的改动,而团队成员2也在做同样的事情。其中一个是首先检查他们的更改,最好的情况是你会有一些讨厌的合并问题。最糟糕的情况是,其中一人失去了所有的变化。
您可以通过始终在important_data.sql
文件中进行更改来缓解这些问题,但这样做的难易程度取决于您的应用程序。如果你这样做,你会想要使用mysqldump
选项,这样你就可以获得一个很好的可读和git-
可合并文件。
答案 3 :(得分:1)
似乎dbdeploy正是您所寻找的
答案 4 :(得分:0)
您可以将每个表导出为单独的SQL文件。只有当表格被更改时,才能再次推送。
答案 5 :(得分:0)
如果您正在谈论配置,那么我建议使用sql转储或类似的方法根据Ray Baxters的答案为数据库播种。
既然你已经提到了Drupal,我猜测数据涉及用户/内容。因此,您真的应该考虑拥有一个每个开发人员远程连接的单个数据库 - 即一个单一版本。这是因为对mysql表的并发修改将非常难以协调(例如,两个新用户都使用user.id = 10,每个用户发布post.id = 1,post.user_id = 10等新帖子。)
当然,使用sql转储(可能在版本控制中保留)来备份它可能是有意义的,以防一个开发人员意外删除了一些关键的东西。
答案 6 :(得分:0)
如果您只想要部分转储,PHPMyAdmin将会这样做。运行您的SELECT语句,当它显示时,页面的底部将有一个导出链接(顶部的那个链接作为整个表格)。
答案 7 :(得分:0)
你可以修改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用户将添加内容。这只是为了使权限关系匹配。