将生产和开发数据库手动同步真的很痛苦。
是否有任何工具可以让两个数据库保持同步?有点奇怪的Laravel framework's migrations的东西?
我正在使用MySQL和PHP。我在这里和那里搜索,但无法找到合适的工具。
你一定要看看phinx。这是我使用MySQL和PHP执行的复杂数据库迁移步骤的示例:https://coderwall.com/p/v3qg2q
如果我没有错,您需要一个工具来创建数据库版本控制以跟踪架构更改。您可以使用Cygnite Migration命令。它使用简单,让您的工作更轻松。
供你参考-
查看Schematic,它旨在使用YAML或JSON中的模式文件,并且可以全局安装:
http://andrefigueira.github.io/Schematic/
它旨在与您的VCS一起提交,以便您的数据库版本与项目提交一起存储。
目前尚不清楚你想要什么......
看看这个帖子:How to synchronize development and production database
尝试使用rubyrep http://www.rubyrep.org/。它可以在两个数据库之间连续复制。
如果您只是希望两个DB完全相同,那么为什么不将MySQL复制与您的生产作为主服务器和开发服务器作为从服务器使用。
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 db连接定义环境变量名,并在app config数据库中.php,定义你的连接凭据等,最后使用exec,mysqldump和mysql。
祝好运