手动保持生产和开发数据库同步真的很痛苦。
是否有任何工具可以使两个数据库保持同步?类似于令人惊叹的Laravel 框架迁移的东西?
我正在使用 MySQL 和 PHP。我到处搜索,但找不到适合这项工作的工具。
手动保持生产和开发数据库同步真的很痛苦。
是否有任何工具可以使两个数据库保持同步?类似于令人惊叹的Laravel 框架迁移的东西?
我正在使用 MySQL 和 PHP。我到处搜索,但找不到适合这项工作的工具。
你绝对应该看看phinx。这是我使用 MySQL 和 PHP 执行的复杂数据库迁移步骤的示例:https ://coderwall.com/p/v3qg2q
查看 Schematic,它旨在与 YAML 或 JSON 中的模式文件一起使用,并且可以全局安装:
http://andrefigueira.github.io/Schematic/
它被设计为与您的 VCS 一起提交,因此您的数据库版本与您的项目提交一起存储。
尝试使用 rubyrep http://www.rubyrep.org/。它可以在两个数据库之间连续复制。
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。
祝你好运
如果您只是希望两个数据库相同,为什么不使用 MySQL 复制,将您的生产服务器作为主服务器,将开发服务器作为从服务器。