Differences

This shows you the differences between two versions of the page.

Link to this comparison view

backup_banco_de_dados_mysql_pt_br [2019/08/08 15:23] (current)
Line 1: Line 1:
 +====== Script para efetuar o backup do banco MySQL  ======
  
 +E ai galera, aqui segue um script para efetuar o dump do banco de dados <nowiki>MySQL</nowiki>.
 +
 +Caso for efetuar o backup de um servidor para outro tem que acertar a configuração do my.cnf da seguinte forma
 +<sxh apache>
 +vim /etc/mysql/my.cnf
 +[...]
 +bind-address            = 0.0.0.0
 +</sxh>
 +
 +Agora precisamos dar acesso para o usuário que vai efetuar o backup no banco vou utilizar o exemplo para o usuário root
 +<sxh sql>
 +mysql -u root -p
 +GRANT ALL PRIVILEGES ON *.* TO root@'%' IDENTIFIED BY 'S3NH4' WITH GRANT OPTION;
 +</sxh>
 +
 +Agora vamos a criação do nosso script de backup
 +<sxh bash>
 +vim /usr/src/exporta_mysql.sh
 +#!/bin/bash
 +#
 +# exporta_mysql
 +#
 +# Script para realizar a exportação de bases de dados MySQL
 +# A exportação é feita base a base da estrutura e depois dos dados
 +#
 +# Autor : Douglas Q. dos Santos <douglas.q.santos@gmail.com>
 +# Manutenção: Douglas Q. dos Santos <douglas.q.santos@gmail.com>
 +#
 +#
 +#----------------------------------------------------------------------
 +
 +# Este programa faz a configuração dos repositórios, chaves dos repositórios,
 +# instala um conjunto básico de aplicativos necessários para a operação de um
 +# servidor utilizando o sitema Debian GNU/Linux 
 +#
 +# Exeplos: 
 +#       $ ./exporta_mysql.sh
 +# Após executar o script vai fazer uma seleção das bases de dados do Servidor
 +# vai armazenar em um arquivo e vai efetuar o backup das estruturas e depois
 +# vai efetuar o backup dos dados dos bancos e esses dados vão ser armazenados 
 +# em uma estrutura com o sql das estruturas e o logs e um com o sql dos dados
 +# e os logs, após o processo finalizado é verificado quais logs estão vazios 
 +# e são excluídos com isso garantimos que temos somente os logs com algum possível
 +# erro.
 +# nos temos a seguinte situação for END in $(cat ${BASES} | grep bancodedados)
 +# nessa situação efetuariamos a exportação de somente um determinado banco de dados
 +# caso contrário temos a seguinte situação: for END in $(cat ${BASES})
 +# nessa situação vamos exportar todos os bancos de dados.
 +# a primeira situação esta comentada por padrão.
 +#
 +#---------------------------------------------------------------------
 +#
 +#
 +# Histórico:
 +# v1.0 2011-04-14, Douglas Q. dos Santos:
 +#       - Versão inicial
 +# Licença: http://creativecommons.org/licenses/by-sa/3.0/legalcode
 +#---------------------------------------------------------------------
 +clear
 +############VALIDANDO O USUARIO QUE EXECUTANDO O SCRIPT##############################
 +USU=$(whoami)
 +
 +if [ "${USU}" != root ]; then
 +  echo -e
 +  echo -e "=============================================================================="
 +  echo -e " ESTE PROGRAMA PRECISA SER EXECUTADO COM PERMISSOES DE SUPERUSUARIO!"
 +  echo -e " Abortando..."
 +  echo -e "=============================================================================="
 +  echo -e
 +  exit 1
 +fi
 +
 +GREY="\033[01;30m"
 +RED="\033[01;31m"
 +GREEN="\033[01;32m"
 +YELLOW="\033[01;33m"
 +BLUE="\033[01;34m"
 +PURPLE="\033[01;35m"
 +CYAN="\033[01;36m"
 +WHITE="\033[01;37m"
 +CLOSE="\033[m"
 +
 +echo -e  "${RED}####################################################################${CLOSE}"
 +echo -e "${RED}# Este script estara trabalhando com o seguinte processo ${GREEN} $$ ${CLOSE}   ${CLOSE}"
 +echo -e  "${RED}####################################################################${CLOSE}"
 +
 +sleep 3
 +
 +### COMANDOS USADOS NO SCRIPT ###
 +MYSQL=$(which mysql)
 +MYSQLDUMP=$(which mysqldump)
 +MKDIR=$(which mkdir)
 +GREP=$(which grep)
 +FIND=$(which find)
 +RM=$(which rm)
 +
 +### ARQUIVOS UTILIZADOS NO SCRIPT ###
 +BASES="/srv/dump/bases"
 +PERMISSOES="/srv/dump/permissoes.sql"
 +
 +### SENHAS DO USUARIO ROOT DO BANCO ###
 +SENHA="S4NH4"
 +
 +### IP DO SERVIDOR DE BANCO DE DADOS ###
 +SRV_BANCO="10.101.0.26"
 +
 +### DIRETORIOS USADOS NO SCRIPT ###
 +ESTRUTURA_BANCOS="/srv/dump/bancos/estrutura"
 +DADOS_BANCOS="/srv/dump/bancos/dados"
 +LOGS_ESTRUTURA="/srv/dump/logs/estrutura"
 +LOGS_DADOS="/srv/dump/logs/dados"
 +
 +### VALIDA OS DIRETORIO NECESSARIOS ###
 +if [ ! -d ${ESTRUTURA_BANCOS} ];then
 +  ${MKDIR} -p ${ESTRUTURA_BANCOS} 2> /dev/null
 +fi
 +
 +if [ ! -d ${LOGS_ESTRUTURA} ];then
 +  ${MKDIR} -p ${LOGS_ESTRUTURA} 2> /dev/null
 +fi
 +
 +if [ ! -d ${DADOS_BANCOS} ];then
 +  ${MKDIR} -p ${DADOS_BANCOS} 2> /dev/null
 +fi
 +
 +if [ ! -d ${LOGS_DADOS} ];then
 +  ${MKDIR} -p ${LOGS_DADOS} 2> /dev/null
 +fi
 +
 +### FAZ A RELACAO DAS TABELAS DO BANCO E ARMAZENA NO ARQUIVO ${BASES} ###
 +echo -e "${GREEN} FAZENDO RELACÃO DAS TABELAS DO BANCO DE DADOS${CLOSE}"
 +sleep 3
 +${MYSQL} -u root -p${SENHA} -h ${SRV_BANCO} -e "SELECT schema_name from information_schema.schemata" --column-names=FALSE | ${GREP} -v information_schema > ${BASES}
 +
 +### FAZ DUMP DOS USUARIOS E SUAS SENHAS E FAZ DUMP DAS PERMISSOES DOS USUARIOS NAS TABELAS
 +#echo -e "${GREEN} FAZENDO DUMP DOS USUARIOS,SENHAS E SUAS PEMISSOES NAS TABELAS ${CLOSE}"
 +#sleep 3
 +#${MYSQLDUMP} -u root -p${SENHA} -h ${SRV_BANCO} mysql user db > ${PERMISSOES}
 +
 +
 +### FAZ O DUMP DAS TABELAS RELACIONADAS NO ARQUIVO ${BASES} ###
 +echo -e "${GREEN} FAZ DUMP DAS TABELAS RELACIONADAS ANTERIORMENTE${CLOSE}"
 +#for END in $(cat ${BASES} | grep bancodedados)
 +for END in $(cat ${BASES})
 +do
 +### DUMP DA ESTRUTURA ###
 +echo -e "${GREEN} DUMP DA ESTRUTURA DO BANCO ${RED} ${END} ${CLOSE} ${CLOSE}"
 +sleep 2
 +${MYSQLDUMP} -u root -p${SENHA} -h ${SRV_BANCO} -B ${END} -R -d -v --add-drop-database=TRUE --trigger=FALSE > ${ESTRUTURA_BANCOS}/${END}_estrutura.sql 2> ${LOGS_ESTRUTURA}/${END}.error
 +
 +### DUMP DOS DADOS ###
 +echo -e "${GREEN} DUMP DOS DADOS DO BANCO ${RED} ${END} ${CLOSE} ${CLOSE}"
 +sleep 2
 +${MYSQLDUMP} -u root -p${SENHA} -h ${SRV_BANCO} -B ${END} -R -c -t -e -v -K > ${DADOS_BANCOS}/${END}_dados.sql 2> ${LOGS_DADOS}/${END}.error
 +
 +### DUMP FULL DE TODOS OS BANCOS ###
 +#${MYSQLDUMP} -u root -p${SENHA} -B ${END} -R -c -t -e -v --add-drop-database=TRUE  > ${DADOS_BANCOS}/${END}_all.sql 2> ${LOGS_DADOS}/${END}.error
 +done
 +
 +### REMOVE OS ARQUIVOS DE LOGS VAZIOS ###
 +echo -e "${GREEN} REMOVENDO ARQUIVOS DE LOGS VAZIOS ${CLOSE}"
 +sleep 2
 +${FIND} ${LOGS_ESTRUTURA} -empty -exec ${RM} -rf {} \;
 +${FIND} ${LOGS_DADOS} -empty -exec ${RM} -rf {} \;
 +
 +echo -e "${GREEN} EXPORTAÇÃO FINALIZADA, VERIFIQUE OS ARQUIVOS DE LOGS ${CLOSE}"
 +</sxh>
 +
 +Agora é só dar permissão no script
 +<sxh bash>
 +chmod +x exporta_mysql.sh
 +</sxh>
 +
 +Agora vamos rodar ele
 +<sxh bash>
 +/usr/src/exporta_mysql.sh 
 +####################################################################
 +# Este script estara trabalhando com o seguinte processo  15291    
 +####################################################################
 + FAZENDO RELACÃO DAS TABELAS DO BANCO DE DADOS
 + FAZ DUMP DAS TABELAS RELACIONADAS ANTERIORMENTE
 + DUMP DA ESTRUTURA DO BANCO  mail  
 + DUMP DOS DADOS DO BANCO  mail  
 + DUMP DA ESTRUTURA DO BANCO  mysql  
 + DUMP DOS DADOS DO BANCO  mysql  
 + DUMP DA ESTRUTURA DO BANCO  roundcubemail  
 + DUMP DOS DADOS DO BANCO  roundcubemail  
 + DUMP DA ESTRUTURA DO BANCO  webmail2  
 + DUMP DOS DADOS DO BANCO  webmail2  
 + REMOVENDO ARQUIVOS DE LOGS VAZIOS 
 + EXPORTAÇÃO FINALIZADA, VERIFIQUE OS ARQUIVOS DE LOGS 
 +</sxh>
Print/export
QR Code
QR Code backup_banco_de_dados_mysql_pt_br (generated for current page)