如何有选择地导出github仓库的mysql数据

时间:2011-09-10 11:54:49

标签: mysql github export

我们是一个开源项目,希望通过github公共回购协作编辑我们的网站。

关于将mysql数据导出到github的最佳解决方案的任何想法,因为mysql可以包含一些敏感信息,以及我们如何对其中发生的更改进行版本化?

8 个答案:

答案 0 :(得分:5)

答案是您没有在回购中保存数据。 您可能想要保留您的ddl,也许还有一些配置数据。但就是这样。 如果要对数据进行版本控制,还有其他选项。 GIT不是其中之一

答案 1 :(得分:1)

使用博客引擎“git后端编辑”,忘记mysql,在github.com上提交,推拉,支配!

这是最好的列表:

  1. http://jekyllrb.com/
  2. http://nestacms.com/
  3. http://cloudhead.io/toto
  4. https://github.com/colszowka/serious
  5. 以防万一,...一个简单的,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用户将添加内容。这只是为了使权限关系匹配。