7

可以服用吗?我在谷歌研究,我发现很少的文章,但德语和其他语言,所以不太了解。

如果我们可以使用 Mercurial [at localhost] 将 mysql 从服务器备份到 localhost,那就太好了。也许使用远程 Mysql 连接等。你知道这样做的任何方法吗?可能吗?

谢谢!!问候...

4

2 回答 2

5

假设您要将定期备份存储在版本控制存储库中,则需要三个步骤:

  1. 设置要存储数据库快照的 mercurial 存储库。

    mkdir db-backup
    hg init db-backup
    
  2. 以文件格式获取数据库。最简单的方法是通过mysqldump。仅备份原始数据库表文件是行不通的,因为它们可能处于不一致的状态。

    cd db-backup
    mysqldump -u username -p -h dbhost databasename > databasename.sql
    
  3. 在您的情况下,将数据库转储提交到版本控制存储库中。

    hg commit -A -m "committing database snapshot as at `date`"
    

最后两个步骤是您可能想要自动化的。

于 2010-02-24T12:21:06.760 回答
2

我认为这在许多层面上都是毫无意义和危险的练习。但是,如果您考虑 VCS 系统的工作原理,它会在当前版本和以前(或基准)版本之间产生差异,然后如果您恢复到以前的版本,它(VCS)会将文件写入目录。在第一种情况下,如果您使用数据库执行此操作,然后执行 diff,您会看到什么?您在数据库中获得的数据视图是通过 DBMS 过滤的,因此区分原始文件将毫无意义。在第二种情况下,如果您将修订版恢复到工作数据库,我认为除了废弃的数据库之外您不会得到太多。还有视图、存储过程、触发器等会发生什么?

我唯一考虑过这样的事情是只转储数据库结构,不转储数据和 VCS,这样我就可以比较查看已经进行了哪些结构更改。然而,加强团队中的沟通解决了这个问题。

处理数据库的方法是使用一组适当的备份程序和过程,不要忘记一组恢复程序和过程以及测试机制以确保您的备份都正常工作。

于 2010-02-24T12:31:58.113 回答