1. fai in modo che il tuo database remoto o di produzione accetti la connessione remota utilizzando una wild card o un indirizzo IP speciale! attraverso una sorta di cpanel o file di configurazione!
2. puoi estendere il comando db artisan come "db: sync".
3. codice di comando (non ancora testato):
$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");
non ho aggiunto alcun controllo funzionale come di solito è destinato a lavorare.
Puoi ad esempio invece di un comando, aggiungere un po 'di automazione usando eventi, cron job, ascoltatori ... ci sono molte opzioni, ma il trucco della parte logica principale è: Definire i nomi delle variabili d'ambiente per le tue connessioni 2 db, e nella app config database.php, definisci le tue credenziali di connessione ecc., e infine fai uso di exec, mysqldump & mysql.
Buona fortuna
Dai un'occhiata alla Liquibase o Flyway. Usano Java in background ma sono semplici strumenti a riga di comando per portare a termine il lavoro. –