【问题标题】:How can I sync databases between two local virtual development environments如何在两个本地虚拟开发环境之间同步数据库
【发布时间】:2016-08-01 17:33:24
【问题描述】:

我会问你,在两台计算机之间同步数据库的最佳做法是什么(或者是否可能)。我有一台电脑在工作,一台在家里。我有两个相同的虚拟环境,当我在一台计算机上完成工作时,我希望在另一台计算机上继续。对于应用程序代码,我使用 git 共享,它很完美,但我找不到令人满意的数据库解决方案。我已经谷歌并阅读了很多关于它的内容,所以这可能是一个错误的方式。我使用过远程数据库,但有速度限制和互联网连接需求。 非常感谢您的意见。

【问题讨论】:

  • 这是一个很好的问题,但您应该澄清一件事 - 您想要双向同步吗?这意味着您需要两个数据库同时启动和运行。您要同步的数据库大小是多少?停止数据库并将数据库文件上传到 Git 是不可行的吗?我觉得复制对于应用程序开发环境来说太过分了。
  • 还有一个问题 - 应用程序的数据库是全局的(所有应用程序用户使用相同的数据库)还是应用程序的每个实例/用户的本地数据库?
  • 不,我不需要双向同步。某一时刻只有一台计算机处于开启状态。尺寸很小,例如。约 50 MB。你的意思是把转储放在 git 版本控制下?是的,数据库是全球性的,但只有一个用户,我 :-) 它是开发数据库。
  • 不,每个数据库都有数据库文件(停止数据库后,您可以将其复制到另一台机器并在那里启动),尝试查看数据库的备份和恢复(您可以将任何数据库关闭视为进行备份,并在另一台机器上每次重新启动作为恢复)。如果数据库很小,并且可以安装在 Git 上,我认为这是最简单的方法(尽管它可能需要一个简短的脚本来执行“恢复”)在物理完整离线(原始)备份下查看:dev.mysql.com/doc/mysql-backup-excerpt/5.0/en/backup-types.html

标签: mysql database local development-environment


【解决方案1】:

您可以设置基于语句的 MySQL 复制。你不能出错。 -- 确保你有一个检查你的服务器连接的脚本 -- 确保你有一个测量延迟的脚本,(如果线程卡在处理 binlog 上)检查你的从 I/O 和 SQL 线程。

【讨论】:

    【解决方案2】:

    您通常不会在开发环境之间同步数据库,您要么有一个迁移系统和一个伪造系统来填充数据库。

    迁移系统示例:

    https://laravel.com/docs/5.1/migrations

        /**
         * Run the migrations.
         *
         * @return void
         */
        public function up()
        {
            Schema::create('flights', function (Blueprint $table) {
                $table->increments('id');
                $table->string('name');
                $table->string('airline');
                $table->timestamps();
            });
        }
    

    填充数据库; https://laravel.com/docs/5.1/seeding

    【讨论】:

      猜你喜欢
      • 2014-04-21
      • 2020-07-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-28
      • 1970-01-01
      • 2010-11-29
      相关资源
      最近更新 更多