32
Backup para Mysql Criando rotinas utilizando a tasks do Windows e Cron do Linux

Backup para mysql

Embed Size (px)

Citation preview

Page 1: Backup para mysql

Backup para Mysql

Criando rotinas utilizando a tasks do Windows e Cron do Linux

Page 2: Backup para mysql

Amanda Portela Graduada em Sistemas de Informação

Administradora de Banco de Dados

Trabalha na UOLDIVEO

Ja foi analista de Backup

Page 3: Backup para mysql

Backup Mysql Criando Rotina de Backup - Windows Criando Rotina de Backup - Linux Restaurar

Page 4: Backup para mysql

BACKUP Formas Tipos

Page 5: Backup para mysql

Formas de backup existente: FITA

Tabe LibraryTabe Library

Fita LTO

Page 6: Backup para mysql

Formas de backup existente: DISCO

Disk

Storage

Page 7: Backup para mysql

Backup Full x Backup Incremental

TIPOS DE BACKUP

Page 8: Backup para mysql

A retenção é o tempo que o dado ficará disponível para acesso/restore.

Quando o tempo aplicado expira, o dado é descartado.

RETENÇÃO

Page 9: Backup para mysql

MYSQL1. Sobre o Mysql

2. Mysqldump

Page 10: Backup para mysql

Sistema Gerenciador de Banco de Dados

Relacional

Tabelas: Linhas e Colunas

Linguagem SQL

Atualmente Versao 5.7

Mysql

Page 11: Backup para mysql

Mysqldump

É um utilitário do mytilizado para copiar os bancos de dados dos SGBDs para arquivo de

texto.Pode exportar uma tabela ou mais, um banco de dados ou todos os bancos de dados do servidor.

Page 12: Backup para mysql

Criando Rotina de Backup para o Mysql

1. Windows• Criando Script• Agendador de Tarefas (Tasks)• Configurando Rotina de Backup

Page 13: Backup para mysql

Script de backup: backup_diario.cmd@echo off set dbUser=root set dbPassword=sql!@# set backupDir="D:\mysql_daily_backups" set mysqldump="C:\Program Files\MySQL\MySQL Workbench 6.3 CE\mysqldump.exe" set mysqlDataDir="C:\ProgramData\MySQL\MySQL Server 5.7\Data" set mysql="C:\Program Files\MySQL\MySQL Server 5.7\bin"

For /f "tokens=2-4 delims=/ " %%a in ('date /t') do (set dt=%%c%%a-%%b)For /f "tokens=1-4 delims=:." %%a in ('echo %time%') do (set tm=%%a%%b%)set dirName="%1 %dt% %tm%"

pushd %mysqlDataDir%

for /d %%f in (*) do (

if not exist %backupDir%\%dirName%\ ( mkdir %backupDir%\%dirName% )

%mysqldump% -opt -u%dbUser% -p%dbPassword% --databases %%f > %backupDir%\%dirName%\%%f.txt )

forfiles -p "%backupDir%" /s /m *.* -d -3 -c "cmd /c del @path"popd

Page 14: Backup para mysql

AGENDADOR DE TAREFAS

Page 15: Backup para mysql

CONFIGURANDO ROTINA DE BACKUP

Page 16: Backup para mysql

CONFIGURANDO ROTINA DE BACKUP

Page 17: Backup para mysql

CONFIGURANDO ROTINA DE BACKUP

Page 18: Backup para mysql

CONFIGURANDO ROTINA DE BACKUP

Page 19: Backup para mysql

CONFIGURANDO ROTINA DE BACKUP

Page 20: Backup para mysql
Page 21: Backup para mysql

Criando Rotina de Backup para o Mysql

1. LINUX• Criando Script• Comandos Úteis• Crontab• Configurando Rotina de Backup

Page 22: Backup para mysql

root@debian:/home/anunes/backup# mysql -uroot -pEnter password:Welcome to the MySQL monitor. Commands end with ; or \g.Your MySQL connection id is 175Server version: 5.5.52-0+deb8u1 (Debian)

Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or itsaffiliates. Other names may be trademarks of their respectiveowners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show databases;+--------------------------------+| Database |+--------------------------------+| information_schema || anunes || mysql || performance_schema || teste |+-------------------------------+5 rows in set (0.00 sec)

Page 23: Backup para mysql

Script de backup: backup_semanal.sh#!/bin/sh

TIMESTAMP=$(date +"%F-%H-%M")BACKUP_DIR="/home/anunes/backup"MYSQL_USER="root"MYSQL=/usr/bin/mysqlMYSQL_PASSWORD="sql!@#"MYSQLDUMP=/usr/bin/mysqldumpRETENTION="+2"LOG="/home/anunes/backup/$TIMESTAMP.log"LOG_DLT="/home/anunes/backup/$TIMESTAMP_deleted.log"

mkdir -p "$BACKUP_DIR/$TIMESTAMP"

databases=`$MYSQL --user=$MYSQL_USER -p$MYSQL_PASSWORD -e "SHOW DATABASES;" | grep -Ev "(Database|information_schema|performance_schema)"`

for db in $databases; do $MYSQLDUMP --opt --user=$MYSQL_USER -p$MYSQL_PASSWORD --databases $db > "$BACKUP_DIR/$TIMESTAMP/$db.dmp"

sed -n '3p' $BACKUP_DIR/$TIMESTAMP/$db.dmp >> $LOGtail -1 $BACKUP_DIR/$TIMESTAMP/$db.dmp >> $LOGecho "==================================" >> $LOG

done

find $BACKUP_DIR* -mtime $RETENTION -exec rm -rf {} /; >> $LOG_DLT

Page 24: Backup para mysql

• mkdir = Permite criar diretório• > = Permite criar arquivo ex.: > arquivo.sh• >> = Insere uma linha no arquivo• vi /etc/crontab ou crontab -e = permite editar a crontab• crontab -l = Lista o que está configurado na crontab• esc + i = Permite inserir informaçoes ao arquivo - VI• :q! = Permite sair do arquivo sem salvar - VI• :wq! = Permite sair do arquivo e salvar as informações escritas - VI• chmod - Altera permissão de arquivo/diretório

COMANDOS ÚTEIS DO LINUX

Page 25: Backup para mysql

CRONTABCrontab é a tabela (arquivo) que contém as tarefas agendadas.Este arquivo é consultado pelo serviço CRON do sistema operacional, para iniciar as tarefas conforme agendamento

Page 26: Backup para mysql

root@debian:/home/anunes/backup# crontab -l

55 23 * * 0 /home/anunes/backup_semanal.sh07 22 * * 1-6 /home/anunes/backup_diario.sh

Page 27: Backup para mysql

root@debian:/home/anunes/backup# ls -ltrdrwxr-xr-x 2 root root 4096 Oct 3 22:08 2016-10-03-22-08-rw-r--r-- 1 root root 415 Oct 3 22:08 2016-10-03-22-08.log

root@debian:/home/anunes/backup# cat 2016-10-03-22-07.log-- Host: localhost Database: anunes-- Dump completed on 2016-10-03 22:07:01==========================================================-- Host: localhost Database: mysql-- Dump completed on 2016-10-03 22:07:01==========================================================-- Host: localhost Database: teste-- Dump completed on 2016-10-03 22:07:01==========================================================

root@debian:/home/anunes/backup# cd 2016-10-03-22-08root@debian:/home/anunes/backup/2016-10-03-22-08# ls -ltrtotal 548-rw-r--r-- 1 root root 1412 Oct 3 22:08 anunes.dmp-rw-r--r-- 1 root root 550963 Oct 3 22:08 mysql.dmp-rw-r--r-- 1 root root 1408 Oct 3 22:08 teste.dmp

Page 28: Backup para mysql

RESTAURAR

mysql -u [uname] -p[pass] [db_to_restore] < [backupfile.dmp]

mysql -uroot -p teste < D:\mysql_daily_backups\10-2016 1900\teste.txt

mysql -uroot -p teste < /home/anunes/backup/2016-10-03-22-08/teste.dmp

*Para o import é mysql mesmo pessoal, desculpe a confusão*

Page 29: Backup para mysql

TEM BACKUP!!!

Page 30: Backup para mysql

REFERÊNCIAS

Mysqldump• http://dev.mysql.com/doc/refman/5.7/en/mysqldump.html

Mysql Download• http://www.mysql.com/downloads/

Linux• https://www.vivaolinux.com.br/

Windows Commands• http://www.computerhope.com/sethlp.htm

Page 31: Backup para mysql

backup_mysql_linux.sh.txt

backup_mysql_windows.cmd.txt

ANEXOS

Page 32: Backup para mysql

CONTATO Email

[email protected]

LinkedIn• https://br.linkedin.com/in/amandanportela

Pagina .NetCoders - Facebook• https://www.facebook.com/DotNetCoders/

MeetUp .NetCoders• http://www.meetup.com/pt-BR/NetCoders/

Apresentação disponível em: http://pt.slideshare.net/AmandaNunesPortela