11

手动保持生产和开发数据库同步真的很痛苦。

是否有任何工具可以使两个数据库保持同步?类似于令人惊叹的Laravel 框架迁移的东西?

我正在使用 MySQL 和 PHP。我到处搜索,但找不到适合这项工作的工具。

4

7 回答 7

13

你绝对应该看看phinx。这是我使用 MySQL 和 PHP 执行的复杂数据库迁移步骤的示例:https ://coderwall.com/p/v3qg2q

于 2013-03-24T11:59:29.507 回答
1

如果我没记错的话,您需要一个工具来创建数据库版本控制以跟踪架构更改。您可以使用 Cygnite 迁移命令。它使用简单,让您的工作更轻松。

供你参考-

迁移和播种视频教程

数据库迁移工具

于 2014-08-30T22:37:29.007 回答
1

查看 Schematic,它旨在与 YAML 或 JSON 中的模式文件一起使用,并且可以全局安装:

http://andrefigueira.github.io/Schematic/

它被设计为与您的 VCS 一起提交,因此您的数据库版本与您的项目提交一起存储。

于 2014-11-05T10:50:25.343 回答
0

目前还不清楚你想要什么......

  • 从产品到开发的一种方式?
  • 数据或ddl或两者兼而有之?

看看这个线程: 如何同步开发和生产数据库

于 2012-12-08T06:43:01.743 回答
0

尝试使用 ruby​​rep http://www.rubyrep.org/。它可以在两个数据库之间连续复制。

于 2012-12-08T18:24:20.763 回答
-2

1. 使您的远程或生产数据库接受使用通配符或特殊 IP 地址的远程连接!通过某种 cpanel 或配置文件!

2. 您可以扩展 db artisan 命令,例如“db:sync”。

3. 命令代码(尚未测试):

$db_local = Config::get('database.'.env('DB_CONNECTION', 'db_local')); 
$dump = "tmp.db";
exec("mysqldump --user={$db_local['username']} --password='{$db_local['password']}' --host={$db_local['host']} {$db_local['database']} --ignore-table={$db['database']}.some_table > $dump");
$db_remote = Config::get('database.'.env('DB_CONNECTION', 'db_remote')); 
exec("mysql --user={$db_remote['username']} --password='{$db_remote['password']}' --host={$db_remote['host']} {$db_remote['database']} < $dump");

我没有像通常那样添加任何功能检查。

例如,您可以代替命令,使用事件、cron 作业、侦听器添加一些自动化......有很多选项,但主要的逻辑部分技巧是:为您的 2 个数据库连接定义环境变量名称,并在应用程序配置数据库中.php,定义您的连接凭据等,最后使用 exec、mysqldump 和 mysql。

祝你好运

于 2015-11-24T02:02:37.737 回答
-3

如果您只是希望两个数据库相同,为什么不使用 MySQL 复制,将您的生产服务器作为主服务器,将开发服务器作为从服务器。

MySQL 复制文档

于 2012-12-08T06:36:23.097 回答