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 #############################
- 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 seuemail@gmail.com –To seuemail@gmail.com
–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 os binários do MySQL :
2. Executando
o Script PowerShell
Agora vamos executar o Script depois de configurado.
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:
Modelo
do Script “executa_powershell.bat” é:
powershell.exe -command "D:\backup\backup_mysql.ps1"Abaixo , estrutura de diretório utilizada para o Laboratório:
Abaixo,
E-mail recebido confirmando a execução do backup do MySQL:
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. Mais vou fazer a abordagem do mesmo em breve.
Emerson, quando no destino temos espaços nos nomes exemplo, "\\10.0.0.1\backup servers\server s01\" desta forma acusa erro nome invalido, tentei utilizando desta forma "\\10.0.0.1\backup/servers\server/s01\"
ResponderExcluirporém não deu certo, isto foi no powershell 1.0,
Bruno,
Excluirquando utilizei esse método para fazer backup do mysql com powershell no windows 2008 r2 não tive problemas. Já testei ele no windows 2003 ou win xp mais não tive problemas com o armazenamento em rede como no seu caso utilizando powershell 1.0 , porém tente utilizar um caminho de rede sem espaços e verifique se funciona. ex: \\10.1.1.10\mysqlbackup\