Backup mysql diretamente no Object Storage

Também me rendi ao que muitas pessoas começaram a fazer que é mover seu blog ou serviços mais simples para o Free Tier da Oracle (esse blog atualmente está hospedado em uma instância Always free), antigamente usava o GitHub pages mas algumas coisas nele me limitavam muito, por isso resolvi migrar para o OCI.

Pensando na segurança dos meus posts, criei um comando bem simples para realizar um backup diário do MySQL do site diretamente para o Object Storage, o único requisito é ter o oci cli configurado na máquina e que ela possa realizar ações no Bucket, abaixo o script completo:

#!/bin/bash
###bkp_mysql_bucket.sh
###Esse Script faz um dump do mysql diretamente em um Bucket do OCI
export OCI_CLI_AUTH=instance_principal
export DATA=$(date +"%m-%d-%Y")
DB_USER=root
DB_PASS=senha_usuario
DB_NAME=nome_banco


funct_normal(){
mysqldump -u ${DB_USER} -p${DB_PASS} ${DB_NAME}  --single-transaction  | oci os object put -bn bkp-site --file - --name dump_$DB_NAME_$DATA.sql
}

funct_compactado(){
mysqldump -u ${DB_USER} -p${DB_PASS} ${DB_NAME}  --single-transaction | gzip -c | oci os object put -bn bkp-site --file - --name dump_$DB_NAME_$DATA.sql.gzip
}


#funct_normal
#funct_compactado

Nesse script criei algumas variáveis onde você pode especificar o usuário(DB_USER), senha do usuário(DB_PASS) e também qual banco vai ser exportado(DB_NAME), caso você coloque –all-databases você consegue exportar todos os bancos, além disso criei uma função que faz o dump em um arquivo sql(funct_normal) e outra que compacta o arquivo(funct_compactado) enquanto está sendo feito e já faz o upload em paralelo.

A ideia aqui é bem simples, usamos o pipe do linux (|) para redirecionar a saída do mysqldump que é imprimido no stdout para o stdin do comando oci object com o carácter (–file – ).

mysqldump -u ${DB_USER} -p${DB_PASS} ${DB_NAME}  --single-transaction  | oci os object put -bn bkp-site --file - --name dump_$DB_NAME_$DATA.sql

A primeira parte (em verde) é um mysqldump normal, depois temos o pipe (|) e na parte em azul temos o comando responsável pelo upload de objetos no OCI recebendo a saída do mysqldump com o carácter – (em vermelho).

Fontes:

chevron_left
chevron_right