From d7741be8beac985ad07e890373d069848d0126b5 Mon Sep 17 00:00:00 2001 From: David Carr Date: Thu, 2 May 2024 11:41:05 +0100 Subject: [PATCH] added Progress bars and the options single-transaction and set-gtid-purged=OFF --- src/Console/DbSyncCommand.php | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/src/Console/DbSyncCommand.php b/src/Console/DbSyncCommand.php index 5fc831d..e059cb6 100644 --- a/src/Console/DbSyncCommand.php +++ b/src/Console/DbSyncCommand.php @@ -38,7 +38,7 @@ public function handle(): bool $mysqldumpSkipTzUtc = config('dbsync.mysqldumpSkipTzUtc') ? '--skip-tz-utc' : ''; $targetConnection = config('dbsync.targetConnection'); - + $localUsername = config('database.connections.mysql.username'); $localPassword = config('database.connections.mysql.password'); $localHostname = config('database.connections.mysql.host'); @@ -59,28 +59,32 @@ public function handle(): bool $ignoreString .= " --ignore-table=$database.$name"; } + $totalSteps = 2; + $progressBar = $this->output->createProgressBar($totalSteps); + if ($useSsh === true) { echo($mysqlHostName . PHP_EOL); - exec("ssh $sshUsername@$host -p$sshPort mysqldump -P$port -h$mysqlHostName -u$username -p$password $database $ignoreString > $fileName", $output); + exec("ssh $sshUsername@$host -p$sshPort mysqldump --single-transaction --set-gtid-purged=OFF --port=$port --host=$mysqlHostName --user=$username --password=$password $database $ignoreString > $fileName", $output); } else { - exec("mysqldump -h$host -P$port -u$username -p$password $database $ignoreString $mysqldumpSkipTzUtc --column-statistics=0 > $fileName", $output); + exec("mysqldump --single-transaction --set-gtid-purged=OFF --port=$port --host=$mysqlHostName --user=$username --password=$password $database $ignoreString $mysqldumpSkipTzUtc --column-statistics=0 > $fileName", $output); } - $this->comment(implode(PHP_EOL, $output)); + $progressBar->advance(); - if ($importSqlFile === true) { - $command = $localPassword - ? "$localMysqlPath -u$localUsername -h$localHostname -p$localPassword -P$localPort $localDatabase < $fileName" - : "$localMysqlPath -u$localUsername -h$localHostname -P$localPort $localDatabase < $fileName"; - exec($command, $output); - } + $command = $localPassword + ? "$localMysqlPath -u$localUsername -h$localHostname -p$localPassword -P$localPort $localDatabase < $fileName" + : "$localMysqlPath -u$localUsername -h$localHostname -P$localPort $localDatabase < $fileName"; + exec($command, $output); + + $progressBar->advance(); + $progressBar->finish(); if ($removeFileAfterImport === true) { unlink($fileName); } } - $this->comment('DB Synced'); + $this->comment("\nDB Synced"); return true; }