Percona-Cluster: procedimento de backup e restauração

1

Estou tentando restaurar um backup completo de um nó de um cluster percona de três nós (o cluster percona 5.5, galera 2.1, o método wsrep sst é rsync, apenas as tabelas innodb).

O backup foi feito assim:

rm -rf /tmp/backup/mysqldb
innobackupex --user=bkpuser --password=xxxx --galera-info --no-timestamp /tmp/backup/mysqldb/
innobackupex --apply-log --use-memory=2G /tmp/backup/mysqldb/

O procedimento de restauração que estou tentando é assim:

  1. encerra o mysql nos três nós
  2. no primeiro nó
    1. exclui o conteúdo do diretório de dados mysql
    2. delete mysql redologs / binlogs, arquivo doublewrite etc (eles estão localizados em uma pasta separada)
    3. copia arquivos do espaço de tabela do banco de dados para minha instância do banco de dados
    4. copie os arquivos do espaço de tabela do banco de dados para o banco de dados mysql
    5. redologs / binlogs, arquivo de gravação dupla, etc
    6. inicie o mysql com wsrep_urls = gcomm:// para inicializar o cluster
  3. no segundo e terceiro nó
    1. delete redlogs / binlogs do mysql, arquivo de gravação dupla etc
    2. remover galera.cache e grastate.dat
    3. iniciar o mysql ( wsrep_urls = gcomm://firstnode:port,gcomm://secondnode:port,gcomm://thirdnode:port )
  4. assim que o cluster estiver todo sincronizado, reinicie o primeiro nó com a configuração wsrep_urls completa

(Eu sei que o wsrep_urls está obsoleto, mas ainda não consegui trabalhar com o wsrep_cluster_address.)

Meu problema é que os segundo e terceiro nós relatam erros após o SST. Para cada tabela, vejo este erro:

130225 15:44:43 [ERROR] Cannot find or open table myTestDb/settings from the internal data dictionary of InnoDB though the .frm file for the table exists. Maybe you have deleted and recreated InnoDB data files but have forgotten to delete the corresponding .frm files of InnoDB tables, or you have moved .frm files to another database? or, the table contains indexes that this version of the engine doesn't support. See http://dev.mysql.com/doc/refman/5.5/en/innodb-troubleshooting.html how you can resolve the problem.

O mysql show tables mostra as tabelas como existentes, mas ao tentar selecioná-las, ele relata o erro Table 'myTestDb.settings' does not exist ...

Eu tentei apagar os arquivos do espaço de tabela local antes de iniciar o mysql e solicitar o sst, o mesmo resultado.

Como devo realizar a restauração? Devo copiar os arquivos de backup para todos os nós?

    
por Hank 25.02.2013 / 16:05

2 respostas

1

Você não disse qual método de SST está usando. Eu presumo que é xtrabackup?

Os sintomas que você descreve no segundo e terceiro nós soam como um dicionário de dados Innodb ausente (e reinicializado) que reside no arquivo ibdata1. É possível que não esteja sendo copiado do lugar certo no primeiro nó.

Você mencionou algumas coisas como trx logs e doublewrite files em uma "pasta separada". Quais são as configurações do seu Innodb no seu my.cnf? Você, por acaso, definir innodb_data_home_dir (e está fora do seu datadir padrão)?

Se assim for, é provável que este bug: link , ou possivelmente um semelhante a ele .

    
por 26.02.2013 / 18:01
1

Me custou muito tempo para descobrir a resposta. Se você ler o innobackup.backup.log do nó doador e observar os dados que estão sendo criados no nó de adição, você terá uma ideia de por que isso acontece.

Eu tenho exatamente o mesmo problema. E, no meu caso, comente o valor innodb_data_home_dir e innodb_log_group_home_dir personalizado para corrigir o problema.

Depois de sincronizado com o grupo, basta ativar esses valores e copiar o arquivo.

Espero que isso ajude.

    
por 02.12.2014 / 02:31