簡體   English   中英

MySQL備份到多個文件的腳本

[英]Script for MySQL backup to multiple files

我正在創建腳本以使用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)\bin\mysqldump.exe --user = $($dbuser) --password = $($dbpass) --databases $dbname> $($BKP_FOLDER)\$dbname($BACKUPDATE).sql "

但它在while返回錯誤。

我應該更改什么,以便可以為每個數據庫生成多個.sql

您的整個命令行都是b0rken。 扔掉然后重新開始。 嘗試這樣的事情:

Set-Location "$MYSQL_HOME\bin"
& .\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:\Temp\archivo.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;}
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM