MySQL 备份到多个文件的脚本
Script for MySQL backup to multiple files
我正在使用 PowerShell 创建脚本以在 Windows 2012 服务器上备份 MySQL 运行。与此处找到的其他提示不同,我想为每个数据库生成一个 .sql
文件。
This post 展示了如何创建多个文件。我将其改编为 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 "
但它 returns 在 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;}
}
}
我正在使用 PowerShell 创建脚本以在 Windows 2012 服务器上备份 MySQL 运行。与此处找到的其他提示不同,我想为每个数据库生成一个 .sql
文件。
This post 展示了如何创建多个文件。我将其改编为 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 "
但它 returns 在 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;}
}
}