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-backupcd ~/mysql-backup

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

[mysqldump]user=seu_usuariopassword=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 filebackups_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 userhome_folder=`echo ~`# Directory to which backup files will be written. Should end with slash ("/").backups_dir=$home_folder"/mysql-backup/"# Importing variables from configurations filesource $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 documentationcredentials_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--ano-mes-diaThora: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.

You should also read: