Mysql: Arquivando tabelas innodb

1

Eu uso o parâmetro de configuração innodb_file_per_table. Eu quero arquivar algumas tabelas antigas. Se eu desligar o banco de dados e mover o ibd e o frm para o diretório de archive, o innodb mostrará que o table.ibd não está disponível. Existe uma maneira de mover uma tabela do banco de dados?

    
por Boolean 15.02.2013 / 09:35

3 respostas

4

Você está familiarizado com mysqldump ? É uma ferramenta que cria um arquivo cheio de instruções SQL que recriarão as tabelas que você pediu para descarregar e importar os dados que elas continham. Faz parte da instalação padrão do MySQL.

Você pode usá-lo assim:

mysqldump --defaults-extra-file=/home/username/.my.cnf database table > table.sql

Por padrão, o dump inclui CREATE TABLE declarações.

Você pode restaurar assim:

mysql database < table.sql
    
por 15.02.2013 / 11:42
2

Não tente fazer esse tipo de coisa no nível do sistema de arquivos, especialmente com tabelas innodb. Esse é um caminho seguro para a decepção. Faça como Ladadadada sugere e despeje a tabela, salve o arquivo de despejo como seu arquivo e, em seguida, solte a tabela. Dessa forma, também é facilmente restaurável, não apenas para o servidor original, mas para qualquer servidor.

    
por 15.02.2013 / 12:47
0

O que você pode fazer é renomear sua tabela usando o comando abaixo

No cliente MySQL:

SHOW CREATE TABLE table1\G

RENAME TABLE table1 TO table2;

CREATE table table1 <table spec>; 

Onde <table spec> é o resultado do comando SHOW CREATE TABLE .

Em seguida, no seu shell:

cp /path/to/datadir/table2/*.{ibd,frm} /path/to/archivedir/

De volta ao cliente MySQL:

DROP TABLE table2;
    
por 15.02.2013 / 09:52

Tags