Backup do MySQL com PowerShell


Olá pessoal, vou mostrar nesse post sobre como fazer backup das suas bases MySQL no Windows com PowerShell , o PowerShell no Windows nos proporcionou ter scripts mais flexíveis que no próprio Prompt de comando do Windows, facilitando a manutenção e integração dos softwares no sistema.

Pré-requisitos:
– Entender sobre sintaxe PowerShell e  MySQL
Ambiente Utilizado:
– Windows Server 2008 R2
– Windows 7 Ultimate(Cliente MySQL)
– MySQL 5.5.22 versão 64 bits
– PowerShell 2.0

1. Configurando o Script PowerShell para o efetuar o backup do MySQL
################# Inicio do Script #########################
function Backup-MySqlDB([string]$dbname)

{
“Backing up mysql ” + $dbName + “…”
#Backup all mysql DBs
# Set-Location D:\backup\programas\mysql_bin, configure o diretório com os binários do MySQL

Set-Location ‘D:\backup\programas\mysql_bin’
$bkfile = ‘D:\backup\MySQL\’ + $dbname + ‘.sql’
cmd /c mysqldump -u root –password= $dbname | Out-File $bkfile -encoding oem
Write-Host $dbName + “backup complete”
}

############ Databases que seram efetuados Backup ##############
Backup-MySqlDB(‘wikidb27’);
Backup-MySqlDB(‘wikidb33’);

############ Compacta backup dos databases ############### D:\backup\programas\7z\7za.exe a -t7z “D:\backup\MySQL\backup_databases-$(Get-date -format ‘dd-MM-yyyy’).7z”  D:\backup\MySQL\*.sql

############ Deleta arquivos .sql dos databases que foram efetuados backup ############
del -rec D:\backup\MySQL\*.sql

############ Envia e-mail informando sobre a execução do Backup do Mysql ##############
Send-MailMessage –From [email protected] –To [email protected] –Subject “Backup MySQL – $(Get-date -format ‘dd-MM-yyyy’)” –Body “Backup do MySQL efetuado com sucesso em $(Get-date -format ‘dd-MM-yyyy hh:mm:ss’) no diretorio D:\backup\MySQL\backup_databases-$(Get-date -format ‘dd-MM-yyyy’).7z” -SmtpServer 127.0.0.1

################# Fim do Script #########################

Copiando as informações do Script salve o mesmo na extensão “.ps1” , no exemplo que usei salvei meu script com o nome “backup_mysql.ps1”. A extensão padrão de scripts do powershell é .ps1. E por questões de segurança nenhum script pode ser executado sem que seja permitido por policy. Portanto antes de executar qualquer script no powershell digite: Set-ExecutionPolicy Unrestricted

Para que o Script acima funcione corretamente  é necessário configurar o diretório que será efetuado o backup e os programas necessários para o funcionamento adequado do script. O Compactador utilizado foi o 7-Zip na sua versão comand line e para fazer o download desta ferramenta acesse: http://www.7-zip.org/download.html. O mysqldump utilizado foi o binário da versão do mysql instalado no meu servidor. Também será necessário configurar o Relay de e-mail que o script utilizará para enviar os e-mails com o resultado da execução do mesmo.

Abaixo diretório no qual se encontra a versão do 7-zip comand line:

backup3

Abaixo diretório no qual se encontra os binários do MySQL :

backup4

2. Executando o Script PowerShell

Agora vamos executar o Script depois de configurado.

backup1

Explicando a execução do Script em linhas gerais. Primeiro é efetuado o dump das bases mysql. Após efetuado o backup  o mesmo é compactado num único arquivo. Após a compactação os arquivos  “.sql” de backup são excluídos do diretório e depois de efetuar essa rotina o Script envia um e-mail para seu Relay de E-mail informando se o backup foi executado com sucesso .

Abaixo , modelo de script para executar o PowerShell:

backup7

Modelo do Script “executa_powershell.bat” é:

powershell.exe -command “D:\backup\backup_mysql.ps1”
Abaixo , estrutura de diretório utilizada para o Laboratório:

backup2

Abaixo, E-mail recebido confirmando a execução do backup do MySQL:

backup5

backup6

Bom Pessoal é isso. Espero que tenha ajudado a quem precisar. Não Abordei o agendamento de tarefas do Script pois o post ficaria muito extenso. Quaisquer dúvidas sobre a execução do script , favor comentar no Post.

Fonte: http://emersongaudencio.blogspot.com.br/2012/04/backup-do-mysql-com-powershell.html