手动同步确实使生产和开发数据库处于同步状态。数据库同步或迁移工具
有什么工具可以让两个数据库保持同步吗?有点像惊人的Laravel framework's migrations的事情?
我正在使用MySQL和PHP。我在这里和那里搜索,但无法找到正确的工具。
手动同步确实使生产和开发数据库处于同步状态。数据库同步或迁移工具
有什么工具可以让两个数据库保持同步吗?有点像惊人的Laravel framework's migrations的事情?
我正在使用MySQL和PHP。我在这里和那里搜索,但无法找到正确的工具。
你一定要看看phinx。下面是一个使用MySQL和PHP执行的复杂数据库迁移步骤的示例:https://coderwall.com/p/v3qg2q
如果您只是希望两个DB相同,那么为什么不使用MySQL作为主服务器与作为从服务器的开发服务器进行MySQL复制。
在从机上进行的任何更新都会让地狱混乱和/或中断复制。只读从站不会构建好的开发数据库。 – Charles
是的,我猜想我没有深入了解到他需要开发数据库的工作。 – shannonman
目前尚不清楚你想要什么......从PROD
看看这个线程:How to synchronize development and production database
同步意味着保持两者同步:)我的意思是两种方式 – Dev01
在更随意的使用,“同步”可以采取意思是镜像......就像单向同步。你仍然没有回答:ddl或数据或两者兼而有之?我会假设ddl ...如果是这样,请参阅提供的链接。 –
尝试使用rubyrep http://www.rubyrep.org/。它可以在两个数据库之间不断复制。
如果我没有错,您需要一个工具来创建数据库版本控制以跟踪模式更改。您可以使用Cygnite迁移命令。它使用简单,使您的工作更轻松。
为了您参考 -
退房原理,它的设计与YAML或JSON模式文件的工作,它可以在全球安装:
http://andrefigueira.github.io/Schematic/
它的设计与您的VCS一起承诺,让您的d数据库版本与您的项目提交一起存储。
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作业,听众添加一些自动化...有很多选择,但主要的逻辑部分的技巧是:定义环境变量名称为您的两个DB连接,并在应用程序配置database.php中定义您的连接凭据等,最后使用exec,mysqldump & mysql。
好运
看一看Liquibase或迁飞。他们在后台使用Java,但都是简单的命令行工具来完成工作。 –