Mover uma partição de dados innodb do mysql de um computador para outro

1

/etc/mysql/conf.d/myserver:

[mysqld]
innodb_file_per_table
datadir          = /elastidb/lib/mysql
#log-bin          = /elastiblockdb/log/mysql/mysql-bin.log

general_log      = true
log = /elastiblockdb/log/mysql/mysql_general.log

log-error        = /elastiblockdb/log/mysql/mysql_error.log
max_binlog_size  = 1000M
log-slow-queries = /elastiblockdb/log/mysql/mysql-slow.log
long_query_time  = 10
innodb_buffer_pool_size = 4500M
innodb_additional_mem_pool_size = 200M
innodb_log_file_size = 64M
innodb_log_buffer_size = 8M
innodb_flush_log_at_trx_commit = 2

eu tenho duas máquinas ubuntu idênticas em servidores amazon. duas das máquinas possuem arquivos de configuração / etc / mysql idênticos. O problema é que quando eu desmontar / elastidb (dados mysql) em um servidor e remontá-lo no outro, quando eu tento iniciar o mysql no outro servidor eu recebo o seguinte erro:

/usr/sbin/mysqld: Can't find file: './mysql/plugin.frm' (errno: 13)
091104 13:53:13 [ERROR] Can't open the mysql.plugin table. Please run mysql_upgrade to create it.
091104 13:53:14  InnoDB: Operating system error number 13 in a file operation.
InnoDB: The error means mysqld does not have the access rights to
InnoDB: the directory.
InnoDB: File name ./ibdata1
InnoDB: File operation call: 'open'.
InnoDB: Cannot continue operation.
091104 13:53:14 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended

quando eu removo a diretiva datadir do meu arquivo de configuração, o servidor mysql é iniciado, mas sem carregar os dados db apropriados da minha localização desejada.

Eu quero ser capaz de mover rapidamente o armazenamento de dados mysql de uma máquina para outra. qual pode ser o problema?

ambas as máquinas estão no ubuntu 9.04 jaunty 64 bits.

    
por ufk 04.11.2009 / 15:03

4 respostas

1
  1. O erro mysql/plugin.frm ocorre em ambas as máquinas? Meu palpite é assim.

    O datadir veio de uma instalação anterior à 5.1? Execute mysql_upgrade para se livrar disso.

  2. Mesmo quando usar innodb_file_per_table , o MySQL ainda criará um único espaço de tabela compartilhado.

    A falta das variáveis innodb_data_home_dir e innodb_data_file_path na configuração fornecida significa que um espaço de tabela de extensão automática de 10M é criado sob o datadir . Mas se a segunda máquina está reclamando, ela sugere que talvez não esteja sob seu datadir .

    Eu sugeriria ter uma busca por esse arquivo ( ibdata1 ) na primeira máquina (em funcionamento). Se existe fora do datadir , então desligue o MySQL, mova-o e configure essas variáveis.

por 04.11.2009 / 15:27
1

Eu tive um problema semelhante (mesma mensagem de erro, mas no servidor Ubuntu 10.04, e mudei o datadir mysql para apontar para / opt / mysql).

O problema era que o apparmor estava bloqueando as tentativas do / usr / sbin / mysqld para ler / opt / mysql. Eu encontrei linhas como:

type=1503 audit(1291916635.209:18):  operation="open" pid=1201 parent=1 profile="/usr/sbin/mysqld" requested_mask="r::" denied_mask="r::" fsuid=105 ouid=105 name="/opt/mysql/mysql/plugin.frm"
mysql main process (928) terminated with status 1

No meu / var / log / syslog.

Editei /etc/apparmor.d/usr.sbin.mysqld, substituindo todas as instâncias de '/ var / lib / mysql' por '/ opt / mysql'.

Depois disso, o mysql foi iniciado corretamente.

    
por 09.12.2010 / 19:06
0

No meu caso, o problema era aparente. Como minha máquina é destinada apenas para testes, escolhi a maneira mais simples de resolvê-la:

apt-get remove apparmor
    
por 25.06.2010 / 13:23
0

mysql / plugin.frm é um arquivo que armazena na pasta de dados se vc usar para link do mysql c: \ programdata \ mysql \ mysql server 5.1 \ data \ dir Se o arquivo não for encontrado, em seguida, reinstale o mysql é um arquivo básico visual

    
por 14.11.2010 / 20:26