Windows Server 2012: como automatizar o despejo e o zip de um banco de dados MySQL

0

Estou usando um Windows Server 2012. Eu preciso executar um despejo do meu banco de dados a cada duas horas e zip o arquivo gerado pelo SQL.

O arquivo zip deve ter essa sintaxe: nameOfFile_date_hour.zip .
Eu não preciso dos minutos e segundos detalhes para o nome do arquivo zip.
Existe uma maneira de fazer isso?

Eu sei como fazer isso com o Linux, mas não consigo descobrir como fazer isso com o Windows.

    
por user1260928 18.01.2016 / 11:42

1 resposta

1

Você pode escrever um script do PowerShell e fazer com que o Agendador de Tarefas do Windows o execute a cada 2 horas

Um script de exemplo rápido e sujo:

# Declare variables
$db = "[DB NAME]"
$user = "[DB USERNAME]"
$pw = "[DB PASSWORD]"
$date = (Get-Date).ToString("yyyy-MM-dd_HH.mm.ss")
$mysql_backupfile = ".\backup_$date.sql"
$zipped_backupfile = "$mysql_backupfile.zip"

# Backup MySql database
mysqldump --user=$user --password=$pw --databases $db > $mysql_backupfile

# Compress file using 7zip
sz a -tzip $zipped_backupfile $mysql_backupfile

# Remove uncompressed backup file
rm -Path $mysql_backupfile

Altere o nome do banco de dados, nome de usuário e senha e formato de data para o que você precisar.

Nota: Não tenho certeza absoluta das implicações de segurança de inserir o nome de usuário e a senha diretamente no script, mas se seu servidor estiver seguro, tenho certeza de que tudo ficará bem. Mas você pode carregar as credenciais da maneira que quiser (por exemplo, de uma variável de ambiente)

Editar para pergunta no comentário:

Para excluir arquivos '.zip' com mais de três dias:

Get-ChildItem -Filter '*.zip' |
    where { $_.LastWriteTime -lt (Get-Date).AddDays(-3) } |
    Remove-Item
    
por 18.01.2016 / 12:19