Como fazer backup adequadamente do banco de dados mediawiki (mysql) sem bagunçar os dados?

3

Eu quero fazer backup de um banco de dados do mediawiki armazenado em um servidor MySQL 5.1.36 usando o mysqldump.

A maioria dos artigos wiki são escritos em espanhol e não querem atrapalhar criando um dump com o conjunto de caracteres errado.

mysql> status
--------------
...
Current database:       wikidb
Current user:           root@localhost
...
Server version:         5.1.36-community-log MySQL Community Server (GPL)
....
Server characterset:    latin1
Db     characterset:    utf8
Client characterset:    latin1
Conn.  characterset:    latin1
...

Usando o seguinte comando:

mysql> show create table text;

Eu vejo que a tabela create statement define o charset como binary :

CREATE TABLE 'text' (
  'old_id' int(10) unsigned NOT NULL AUTO_INCREMENT,
  'old_text' mediumblob NOT NULL,
  'old_flags' tinyblob NOT NULL,
  PRIMARY KEY ('old_id')
) ENGINE=InnoDB AUTO_INCREMENT=317 DEFAULT CHARSET=binary MAX_ROWS=10000000 AVG_ROW_LENGTH=10240

Como devo usar o mysqldump para gerar corretamente um backup para esse banco de dados?

    
por Toto 07.04.2010 / 21:10

3 respostas

3

mysqldump e show create table geralmente são cavalos de batalha bastante confiáveis e não devem alterar as codificações por conta própria. Se eles usarem um conjunto de caracteres "binários", é provável que seja o conjunto de caracteres dado à tabela (não necessariamente as colunas ). Você pode verificar novamente o conjunto de caracteres da tabela atual em um navegador de banco de dados?

Eu tentaria um mysqldump simples e simples em um arquivo, restaurando o despejo em um banco de dados espelhado e observaria de perto os caracteres especiais. Diferente dos backups feitos usando o phpMyAdmin, os da linha de comando tendem a funcionar muito bem na minha experiência.

    
por 07.04.2010 / 22:12
1

Fazer backup de um banco de dados é uma coisa vital a ser feita, portanto, corajoso para chegar até ele.

Eu recomendo testar sua estratégia de backup, não apenas por causa da preocupação com o idioma, mas porque um dos mais repetidos cenários infames de pior desastre para muitas organizações é o backup que nunca foi testado e foi feito errado para anos - e não estava lá, trabalhando, quando foi eventualmente necessário. O processo de backup completo deve ser testado.

Primeiro, pare toda a atividade do servidor e faça um backup do sistema operacional. Isso nunca é uma má ideia, exceto pelo tempo de inatividade de ter um servidor inativo. Alguns sistemas de banco de dados podem permitir que você faça um backup do sistema operacional enquanto o sistema de banco de dados está em execução e ainda cria um backup perfeitamente válido! O PostgreSQL é um sistema desse tipo - eu recomendo strongmente.

Quanto aos conjuntos de caracteres, o Unicode (também conhecido como UTF-8) contém todo o espanhol, mas o ISO-8859-1 é amplamente escolhido.

Veja estas referências:

caracteres Unicode e O Unicode Consortium e achei que este também poderia ser útil:

Eu também recomendo ter uma segunda instalação e restaurar seu backup nela. Isso faz três coisas:

  1. Ele ajuda a validar se o processo de backup está funcionando corretamente
  2. Ele fornece um local para testes com dados do mundo real e;
  3. Ele fornece uma espécie de "backup" adicional com menos sobrecarga do que uma recuperação completa - isso pode ser útil em vários momentos por vários motivos.
por 07.04.2010 / 22:05
1

Se você não quiser interromper o backup do seu servidor, aconselho enfaticamente que você dê uma olhada no Xtrabackup. Esta ferramenta realiza backup online de tabelas InnoDB (e XtraDB). Eu uso em meus servidores de produção. Ele não os enfatiza muito e pode executar backups incrementais.

    
por 11.04.2010 / 00:06