Em um dos últimos projetos em que atuei precisei configurar uma rotina de backup no MySQL. Com isto veio a necessidade do uso do 'innobackupex', pois o mesmo me possibilitaria gerar backups completos e incrementais, sejam eles compactados ou não, sem downtime da instância de 1TB.
Depois de ler diversos materiais relacionados a execução de backup remoto ou local, cheguei aos comandos abaixo, bem como as conclusões que seguem:
- O backup incremental não foi de fato efetivo, pois a redução de armazenamento foi de 50% por backup com relação ao backup completo;
- A compactação durante a execução mostrou-se eficaz no sentido de espaço em disco, entretanto péssima para o tempo de execução do backup, pois o uso do 'gzip' fez com que a opção de multi-thread parasse e a compressão ficasse em um só core do processador;
- O comando de extração xbstream, quando utilizada a compressão de stream não funcionou, precisando do outro lado no servidor de destino utilizar ele diretório por diretório;
- Tar sem compressão foi a solução mais aderente.
Comandos utilizados:
Backup FULL:
innobackupex --stream=tar /tmp | cat - > /disk2/backup-dir/full-base-backup/backup.tar
Aplicando os binlogs em caso de restore(para abrir a instância):
cd /data/mysql ; tar xvfi /mnt/backup.tar ; innobackupex --apply-log /data/mysql
Script de backup:
#!/bin/bash
# Full backup mysql percona
# Developped by:
# Gabriel Prestes - helkmut@gmail.com
# Last update:
# 2015-08-21
#
## DEFAULT SETTINGS ###########################################
BACKUP_DESTINATION='/disk2/backup-dir/full-base-backup'
HOST_NAME="teste.athore.org"
DAYS=3
source /etc/profile
## STOP EDITING HERE ###########################################
function remove() {
log_this "Removing older than ${DAYS_TO_KEEP}"
find ${BACKUP_DESTINATION}/* -type f -name "${HOST_NAME}*" -mtime +${DAYS_TO_KEEP} | xargs ls -lha find ${BACKUP_DESTINATION}/* -type f -name "${HOST_NAME}*" -mtime +${DAYS_TO_KEEP} | xargs rm -fv
}
function log() {
echo $(date "+[ %d-%m-%Y %H:%M:%S ]:") "${1}"
}
function start() {
log "Starting backup job..."
innobackupex --stream=tar /tmp | cat - > ${BACKUP_DESTINATION}/${HOST_NAME}-$(date "+%d-%m-%Y_%H-%M-%S").tar
flag=$?
if [ ${flag} -eq 0 ]; then
echo "0" > /opt/resources/backup/percona-mysql-backup-agent.mon
else
echo "1" > /opt/resources/backup/percona-mysql-backup-agent.mon
fi
remove
log "Job fished."
}
start
Crontab:
## Backup full daily Percona - MySQL
00 12 * /opt/resources/backup/percona-mysql-backup-agent.sh > /opt/resources/backup/percona-mysql-backup-agent.out 2>&1
Backup FULL:
innobackupex --stream=tar /tmp | cat - > /disk2/backup-dir/full-base-backup/backup.tar
Aplicando os binlogs em caso de restore(para abrir a instância):
cd /data/mysql ; tar xvfi /mnt/backup.tar ; innobackupex --apply-log /data/mysql
Script de backup:
#!/bin/bash
# Full backup mysql percona
# Developped by:
# Gabriel Prestes - helkmut@gmail.com
# Last update:
# 2015-08-21
#
## DEFAULT SETTINGS ###########################################
BACKUP_DESTINATION='/disk2/backup-dir/full-base-backup'
HOST_NAME="teste.athore.org"
DAYS=3
source /etc/profile
## STOP EDITING HERE ###########################################
function remove() {
log_this "Removing older than ${DAYS_TO_KEEP}"
find ${BACKUP_DESTINATION}/* -type f -name "${HOST_NAME}*" -mtime +${DAYS_TO_KEEP} | xargs ls -lha find ${BACKUP_DESTINATION}/* -type f -name "${HOST_NAME}*" -mtime +${DAYS_TO_KEEP} | xargs rm -fv
function log() {
echo $(date "+[ %d-%m-%Y %H:%M:%S ]:") "${1}"
}
function start() {
log "Starting backup job..."
innobackupex --stream=tar /tmp | cat - > ${BACKUP_DESTINATION}/${HOST_NAME}-$(date "+%d-%m-%Y_%H-%M-%S").tar
flag=$?
if [ ${flag} -eq 0 ]; then
echo "0" > /opt/resources/backup/percona-mysql-backup-agent.mon
else
echo "1" > /opt/resources/backup/percona-mysql-backup-agent.mon
fi
remove
log "Job fished."
}
start
Crontab:
## Backup full daily Percona - MySQL
00 12 * /opt/resources/backup/percona-mysql-backup-agent.sh > /opt/resources/backup/percona-mysql-backup-agent.out 2>&1
Nenhum comentário:
Postar um comentário