Backup MySQL mediante sentenças SQL

Informe de Carlos Cuenca   -   Criaweb
Artigo publicado no site : http://www.criarweb.com

Como realizar um backup das tabelas de uma base de dados e a sua recuperação a partir de sentenças SQL.
Veremos como realizar uma cópia de segurança da tabela e a sua recuperação a partir de sentenças SQL.

Backup dos dados

Este comando permite-nos fazer uma cópia dos ficheiros das tabelas das quais queremos fazer um backup, actualmente só funcionam com tabelas do tipo MyIsam, e copia tanto os ficheiros .frm que contêm a definição da tabela, como os ficheiros .myd, que contêm os dados.

Antes de executar-se, guarda todas as alterações que possam existir em memória da tabela, de forma que fique de uma maneira consistente. Do mesmo modo, durante a execução do comando, bloqueia a tabela sobre a que se está a fazer a cópia de segurança para que os dados sejam consistentes na tabela. Há que ter em conta que este comando bloqueia uma das tabelas, consoante vai fazendo a cópia de segurança. Isto poderia provocar uma inconsistência de dados a nível de base de dados, se é necessário fazer um backup de todas as tabelas num instante, sendo então necessário a utilização do comando "lock tables" para bloquear todas as tabelas antes de começar a cópia de segurança.

Ao finalizar o comando retorna uma tabela, que contem os dados:

Coluna Valores
Table Nome da tabela
Op Sempre põe "backup"
Msg_type Pode conter status, error, info ou warning.
Msg_text Mensagem descritivo do resultado da operação

Para realizar uma cópia de uma tabela chamada pedidos, à pasta Backups:

BACKUP TABLE pedidos TO `/backups/`

Recuperação de dados

Para complementar a sentença "Backup table", Mysql dispõem da sentença "Restore table", que permite restaurar uma tabela a partir de uma cópia de segurança que se realizou com o comando "Backup Table".

Esta opção só se pode utilizar se a tabela que se pretende restaurar não se encontra na base de dados, pois em caso afirmativo mostrará uma mensagem de erro. Igual que o comando de Backup, esta opção só está disponível para as tabelas de tipo MyIsam, e a partir da versão 3.23.25.

Como o comando de backup não copia os ficheiros de índices, o comando para recuperar os dados, volta a indexar todos os campos que contem índices, criando os ficheiros correspondentes. Ao igual que o comando para fazer cópias de segurança, invocar o comando "restore table" retorna uma tabela, com um registo por cada tabela sobre a que se fez a base de dados, e que contem a seguinte informação:

Coluna Valores
Table Nome da tabela
Op Sempre põe "restore"
Msg_type Pode conter status, error, info ou warning.
Msg_text Mensagem descritivo do resultado da operação


Para restaurar uma tabela chamada pedidos da pasta Backups à base de dados:

RESTORE TABLE pedidos FROM `/backups/`