Carregando...
MariaDBMySQLSem categoria

Como fazer backup no MySQL?

É muito importante fazer backup do seu banco de dados MySQL diariamente. Você pode fazer manualmente pelo MySQL Workbench ou criar uma rotina automatizada que faça isso pra você com o mysqldump.

Usando o mysqldump (linha de comando)

Nesse método faremos backup por linha de comando usando o software mysqldump. Ele é instalado por padrão quando se instala o MySQL.

Crie uma pasta em sua pasta home chamada mysql-backup e navegue até ela:

mkdir ~/mysql-backup
cd ~/mysql-backup

Crie um arquivo chamado mysql-credentials.conf para armazenar o usuário e a senha do banco de dados.

[mysqldump]
user=seu_usuario
password=sua_senha

Crie um arquivo chamado mysql-configs.sh para armazenar a URL do banco, o nome dos bancos de dados, a porta e o usuário que será dono do arquivo de backup:

#!/bin/sh

# Databases that you wish to be backed up by this script. You can have any number of databases specified; encapsilate each database name in single quotes and separate each database name by a space.
#
# Example:
# databases=( '__DATABASE_1__' '__DATABASE_2__' )
databases=('seu_banco_de_dados')

# The host name of the MySQL database server; usually 'localhost'
db_host="seu-mysql.com.br"

# The port number of the MySQL database server; usually '3306'
db_port="3306"

# The user who will own the backup file
backups_user="usuario_linux_dono_do_backup"

Agora vamos criar o script em bash para fazer o backup. Crie um arquivo mysql-backup.sh e coloque nele:

#!/bin/sh

#
# 	Use this script to perform backups of one or more MySQL databases.
#

# Getting the home folder of your current user
home_folder=`echo ~`

# Directory to which backup files will be written. Should end with slash ("/").
backups_dir=$home_folder"/mysql-backup/"

# Importing variables from configurations file
source $backups_dir"mysql-configs.sh"

# The mysqldump credentials file (the file required for storing the database password)
# Storing the password in this file is a good practice according to mysqldump documentation
credentials_file=$home_folder"/mysql-backup/mysql-credentials.conf"


# Date/time included in the file names of the database backup files.
datetime=$(date +'%Y-%m-%dT%H:%M:%S')

for db_name in ${databases[@]}; do
        # Create database backup and compress using gzip.
        echo "MySQL backup command to be executed:" &&
        echo "mysqldump --defaults-extra-file=$credentials_file -h $db_host -P $db_port $db_name | gzip -9 > $backups_dir$db_name--$datetime.sql.gz" &&
        echo "Executing backup." &&
        mysqldump --defaults-extra-file=$credentials_file -h $db_host -P $db_port $db_name | gzip -9 > $backups_dir$db_name--$datetime.sql.gz &&
        chown $backups_user:$backups_user $backups_dir$db_name--$datetime.sql.gz &&
        chmod 0400 $backups_dir$db_name--$datetime.sql.gz
        echo "Backup finished."
done

# Set appropriate file permissions/owner.
# chown $backups_user:$backups_user $backups_dir*--$datetime.sql.gz
# chmod 0400 $backups_dir*--$datetime.sql.gz

Rode o script, faça o backup do banco e veja se tudo correu bem:

sh mysql-backup.sh

O backup ficará salvo em:
~/mysql-backup/nome_do_banco–anomesdiaThora:minuto:segundo.sql.gz

Pra automatizar basta colocar a execução desse script num cronjob.

Esse script é uma melhoria desse aqui do chill117 postado no GitHub.

Usando o MySQL Workbench

  1. Entre no programa do MySQL Workbench e conecte-se ao servidor MySQL desejado
  2. Clique no schema desejado
  3. Clique no menu Server -> Data Export

Aqui você tem duas opções:

  1. Escolha Export to Dump Project Folder se quiser que o MySQL Workbench salve um arquivo de backup para cada tabela.
  2. Escolha Export to Self-Contained File se quiser que o MySQL Workbench salve todas as tabelas em um mesmo arquivo.
Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *