用于将 MySQL 备份到多个文件的脚本



我正在使用PowerShell创建一个脚本来备份在Windows 2012服务器上运行的MySQL。与此处找到的其他提示不同,我想为每个数据库生成一个.sql文件。

这篇文章展示了如何创建多个文件。我把它改编成PowerShell:

Get-ChildItem -Path "$($MYSQL_HOME)data" | cmd /C "$($MYSQL_HOME)bin mysql -u -s -r $($dbuser) -p$($dbpass) -e 'databases show' '| while read dbname; cmd /C "$($MYSQL_HOME)binmysqldump.exe --user = $($dbuser) --password = $($dbpass) --databases $dbname> $($BKP_FOLDER)$dbname($BACKUPDATE).sql "

但它在 while 中返回错误。

我应该更改什么,以便您可以生成多个.sql,每个数据库一个?

你的整个命令行是b0rken。扔掉它,重新开始。尝试这样的事情:

Set-Location "$MYSQL_HOMEbin"
& .mysql.exe -N -s -r -u $dbuser -p$dbpass -e 'show databases' | % {
  & .mysqldump.exe -u $dbuser -p$dbpass --single-transaction $_ |
    Out-File "$BKP_FOLDER${_}$BACKUPDATE.sql" -Encoding Ascii
}

使用 mysqldump 文件结果的输入的示例。

#Variables#####
# Debe especificar la ruta completa, por ejemplo C:Temparchivo.txt
$file = $args[0]
$c = ""
$i = 0
$startSafe = 0;
###############
New-Item -ItemType Directory -Force -Path .data
$x = 0;
foreach ($f in [System.IO.File]::ReadLines($file)) {
    if ($f -like '-- Dumping data for table *') {
        $startSafe = 1;
        $x = $f.split('`')[1];
        write $x;
    }
    if ($startSafe) {
        if($f -eq "UNLOCK TABLES;"){$i += 1; $f >> .data$x.out.sql; $startSafe = 0; $x = $i}
        if($f -ne "UNLOCK TABLES;"){ $f >> .data$x.out.sql;}
    }
}

相关内容

  • 没有找到相关文章

最新更新