Error al restaurar una base de datos mysql grande a través de powershell

Error al restaurar una base de datos mysql grande a través de powershell

Tengo un script de PowerShell que restaura diariamente una base de datos sftp de otra organización. Recientemente comencé a recibir otra base de datos que es mucho más grande. MySQL es un servicio de Azure que ejecuta la versión 5.6. También lo probé en una v5.7 temporal. El script funciona para archivos de 700 MB, pero falla en archivos de > 1 GB. Usar MySQL Workbench en mi escritorio o en el servidor funciona, por lo que no es una restricción de memoria en el servidor.

El fragmento de código es muy similar a [restaurar una base de datos mysql a través de powershell:

$MySQLHost = 'aaaa.mysql.database.azure.com'
$MySQLAdminUserName = 'bbbb@aaaa-qa'
$MySQLAdminPassword = 'zzzzz'
$MySQLDatabase = 'abcde'

$MyFilePath = "C:\SFTP\qcis_backup\"
$MyUnzipDirectory = $MyFilePath +  "database" + "\"
$MyDumpFilePath = $MyUnzipDirectory + "dump.sql"

get-content $MyDumpFilePath | &"C:\Program Files\MySQL\MySQL Workbench 8.0 CE\mysql.exe" -h $MySQLHost -u $MySQLAdminUserName --password=$MySQLAdminPassword --database=$MySQLDatabase

Obteniendo el siguiente error:

No se pudo ejecutar el programa 'mysql.exe': se lanzó una excepción de tipo 'System.OutOfMemoryException'

Creo que se debe a que get-content se canaliza al cmd de mysql y se intenta cargar en la memoria. ¿Hay alguna manera de procesar esto de manera diferente? He estado buscando ejemplos por un tiempo, pero no encontré ninguno que pueda usar fácilmente.

Agradezco cualquier ayuda.

Respuesta1

Ojalá hubiera encontrado la respuesta yo mismo, pero el crédito debe ir al soporte de Microsoft

$MySQLcmd = -join("&","`"C:","\Program Files\MySQL\MySQL Workbench 8.0 CE\mysql.exe`"")
$MySQLcmd = -join($MySQLcmd," -h ", $MySQLHost, " -u ",$MySQLAdminUserName," --password=",$MySQLAdminPassword," --database=",$MySQLDatabase," -e `"source ",$MyDumpFilePath,"`"")

invoke-expression $MySQLcmd 

información relacionada