数据库同步或迁移工具[关闭]

问题描述 投票:10回答:7

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

是否有任何工具可以让两个数据库保持同步?有点奇怪的Laravel framework's migrations的东西?

我正在使用MySQL和PHP。我在这里和那里搜索,但无法找到合适的工具。

php database migration sync
7个回答
12
投票

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


1
投票

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

供你参考-

Migration & Seeding Video Tutorial

Database migration tool


1
投票

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

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

它旨在与您的VCS一起提交,以便您的数据库版本与项目提交一起存储。


0
投票

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

  • 从刺激到开发的一种方式?
  • 数据或ddl或两者?

看看这个帖子:How to synchronize development and production database


0
投票

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


-2
投票

如果您只是希望两个DB完全相同,那么为什么不将MySQL复制与您的生产作为主服务器和开发服务器作为从服务器使用。

MySQL Replication Docs


-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 db连接定义环境变量名,并在app config数据库中.php,定义你的连接凭据等,最后使用exec,mysqldump和mysql。

祝好运

© www.soinside.com 2019 - 2024. All rights reserved.