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_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--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
- Entre no programa do MySQL Workbench e conecte-se ao servidor MySQL desejado
- Clique no schema desejado
- Clique no menu Server -> Data Export
Aqui você tem duas opções:
- Escolha Export to Dump Project Folder se quiser que o MySQL Workbench salve um arquivo de backup para cada tabela.
- Escolha Export to Self-Contained File se quiser que o MySQL Workbench salve todas as tabelas em um mesmo arquivo.