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:
- Upload de arquivos via linha de comando no oci: https://docs.cloud.oracle.com/en-us/iaas/tools/oci-cli/2.12.6/oci_cli_docs/cmdref/os/object/put.html
- Linux stdout/stdin : https://www.howtogeek.com/435903/what-are-stdin-stdout-and-stderr-on-linux/#:~:text=The%20Linux%20Standard%20Streams,stderr%20(standard%20error)%20stream.
- Parâmetros mysqldump: https://dev.mysql.com/doc/refman/8.0/en/mysqldump.html