手動同步確實使生產和開發數據庫處於同步狀態。數據庫同步或遷移工具
有什麼工具可以讓兩個數據庫保持同步嗎?有點像驚人的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,但都是簡單的命令行工具來完成工作。 –