Por SSH, copia-se uma base MySQL ou MariaDB com mysqldump e uma base PostgreSQL com pg_dump. Cada um gera um ficheiro que se repõe com mysql ou com psql/pg_restore. É o método certo para bases grandes e para cópias automáticas. Precisa de uma conta com shell (porta 2299 na hospedagem partilhada) ou de um VPS. Veja o Terminal do cPanel.
MySQL e MariaDB
| 1 |
Copiar:mysqldump -u conta_utilizador -p --single-transaction conta_base | gzip > copia.sql.gzO -p pede a palavra-passe. O --single-transaction dá uma cópia coerente de tabelas InnoDB sem as bloquear.
|
|
| 2 |
Repor: numa base vazia (ou já com tabelas, se o ficheiro as apagar primeiro):gunzip -c copia.sql.gz | mysql -u conta_utilizador -p conta_base
|
|
| 3 |
Conferir: gunzip -c copia.sql.gz | tail -n 3. O mysqldump termina com um comentário a dizer Dump completed. Se não o vir, a cópia ficou a meio.
|
|
PostgreSQL
| 1 |
Copiar, em formato próprio do PostgreSQL (comprimido):pg_dump -h 127.0.0.1 -U conta_utilizador -Fc -f copia.dump conta_base
|
|
| 2 |
Repor com pg_restore, numa base vazia:pg_restore -h 127.0.0.1 -U conta_utilizador -d conta_base copia.dump
|
|
| 3 |
Ou em texto simples, que se repõe com o psql: pg_dump -h 127.0.0.1 -U conta_utilizador conta_base > copia.sql e depois psql -h 127.0.0.1 -U conta_utilizador -d conta_base -f copia.sql.
|
|
| Ferramenta |
Formato |
Repor com |
mysqldump |
Texto SQL (comprime-se com gzip). |
mysql |
pg_dump -Fc |
Formato próprio, já comprimido. |
pg_restore |
pg_dump sem -Fc |
Texto SQL. |
psql -f |
Uma cópia que nunca repôs não é uma cópia. Teste a reposição numa base de teste. E tenha cuidado com a palavra-passe na linha de comandos: ela fica no historial da shell. Para a evitar, o MySQL lê-a de ~/.my.cnf e o PostgreSQL de ~/.pgpass, ambos só seus (chmod 600).
|
Dar nomes às cópias e pô-las no cron
Dê às cópias um nome com a data: copia-$(date +%F).sql.gz junta o dia ao nome. Se puser o comando no cron, atenção: no crontab o sinal % tem de levar uma barra, escreve-se \%, senão o cron corta o comando. Não ponha a palavra-passe na linha do cron: use o ~/.my.cnf. Por fim, decida quantas cópias guarda e apague as mais antigas, senão uma tarefa que corre todas as noites acaba por encher a conta. Veja tarefas cron. E guarde pelo menos uma cópia fora do servidor onde está a base, por exemplo no seu computador.
Mais sobre bases de dados
Mais artigos sobre o mesmo assunto, para quando este não chega.
PRODUTO RECOMENDADO Alojamento de sites com cPanel Domínio e SSL incluídos, cópias diárias e o painel que já conhece. desde 5.940,00 Kz/mês (plano de 3 anos, com cupão) Ver planos |