Script de shell simples necessário para mover arquivos de banco de dados

3

Estou usando o MySQL na máquina Ubuntu .

Eu preciso mover fisicamente os arquivos de banco de dados em /var/lib/mysql/ (é onde todos os diretórios de bancos de dados estão localizados).

Digamos que eu tenha dois bancos de dados, db_1 e db_2 , para que eu possa ver dois diretórios ( db_1/ e db_2/ ) sob o caminho /var/lib/mysql/ . Sob cada um desses dois diretórios de banco de dados, existem muitos arquivos .frm .MYD .MYI que contém todas as informações das tabelas do banco de dados.

Por exemplo, sob o diretório db_1/ , existem os seguintes arquivos:

/var/lib/mysql/db_1# ls

cars.frm 
cars.MYD 
cars.MYI

customers.frm
customers.MYD
customers.MYI

departments.frm
departments.MYD
departments.MYI

... 

que contém carros , clientes , departamentos informações das tabelas.

Eu preciso de um script de shell para executar a seguinte tarefa simples:

  1. crie um novo diretório chamado db_1_temp em /var/lib/mysql/

  2. mova os arquivos relacionados com as tabelas carros e clientes no diretório db_1 para db_1_temp direcotry

  3. mova os arquivos no diretório db_2 para db_1 direcotry

OBSERVAÇÃO , o usuário precisa do privilégio root para acessar /var/lib/mysql/

Eu preciso dessas coisas em um arquivo .sh para poder executá-lo em outro aplicativo.

Desculpe, não sei o shell script, mas preciso disso. Aprecio se alguém pode dar uma ajuda, este script de shell não deve ser difícil, eu acho. Eu tento extrair algum tempo para aprender shell, já que agora estou bastante ocupado com outros desenvolvimentos de software. Obrigada!

    
por Mellon 25.11.2011 / 17:26

2 respostas

4

Não renomeie os diretórios de bancos de dados diretamente. Em vez disso, despeje o banco de dados, crie um novo nome de banco de dados (que, por sua vez, criará o novo nome de diretório) e, em seguida, retorne o banco de dados ao novo nome do banco de dados:

mysqldump -u username -p  olddatabase > olddbdump.sql
mysqladmin -u username -p create newdatabase
mysql -u username -p newdatabase < olddbdump.sql

Depois de verificar se o banco de dados está funcionando, você pode descartar o banco de dados:

mysqladmin -u username -p drop oldatabase.

Veja aqui referência.

No seu caso, você provavelmente deseja criar um banco de dados tmp, despejar o banco de dados db_1 nesse banco de dados temporário, descartar e recriar o banco de dados db_2 e depois despejar o banco de dados db_2 no banco de dados db_1 recém-vazio.

    
por 25.11.2011 / 19:00
1

Bem, é só mover arquivos, então nada complicado - apenas 3 mv de comando

#!/bin/bash

mkdir /var/lib/mysql/db_1_temp
mv /var/lib/mysql/db_1/cars* /var/lib/mysql/db_1_temp
mv /var/lib/mysql/db_1/customers* /var/lib/mysql/db_1_temp
mv /var/lib/mysql/db_2/* /var/lib/mysql/db_1_temp

Mas se você planeja usar o novo banco de dados, é melhor criar um novo banco de dados vazio e depois usar o mysqldump para importar tabelas que você precisa.

    
por 25.11.2011 / 19:07