Recentemente atualizei meu servidor de banco de dados temporário do MySQL 5.0.84 para 5.1.72. Estou tentando restaurar o mysqldump após a atualização. O nome do banco de dados no dump é gss-app
. Mas o nome da pasta do banco de dados /var/lib/mysql
passou a ser gss@022dapp
, mas quando eu faço login no mysql usando mysql -u root -p
e digito show databases;
ele lista o nome do banco de dados gss-app
apenas e posso Use Database gss-app
listar as tabelas usando show tables
o comando.
A restauração falhou com um erro Got a packet bigger than --max_allowed_packet size
. Dessa vez, o banco de dados foi parcialmente restaurado e aproveitei a oportunidade para renomear a gss@022dapp
pasta gss-app
e fazer login no shell mysql.
Ele listou o nome do banco de dados como @mysql@gss-app
e não consegui entrar no banco de dados. Agora estou executando a restauração do banco de dados mais uma vez --max_allowed_packet_size=1024M
e vejo que a gss@022dapp
pasta foi criada em /var/lib/mysql
.
Devo me preocupar com o nome da pasta /var/lib/mysql
? Ou posso usar um nome de banco de dados diferente durante a restauração?
Responder1
Especificamente para sua pergunta sobre o uso de um nome diferente durante a restauração: com mysqldump você pode fazer mysqldump databasename
ou mysqldump --databases databasename
. O primeiro não coloca uma create db
declaração, o segundo sim.
Depois de fazer o dump com a instrução anterior, você pode simplesmente criar manualmente um novo banco de dados e carregar o dump com algo como mysql newdbname < dump.sql
. Neste último caso, você pode simplesmente abrir o arquivo dump e alterar o nome.
Uma nota lateral, acho que é um design ruim por mysqldump
parte do MySQL ter essa diferença, aliás. Se você fizer backup sem a --databases
instrução, será necessário criar um banco de dados antes de poder restaurar. E esse banco de dados pode ter um conjunto de caracteres ou agrupamento diferente daquele que o banco de dados tinha originalmente. Na minha opinião, se você despejar um banco de dados, ele deverá conter todos os dados e metadados. O mesmo vale para ter que fornecer --routines
e --events
. Posso imaginar opções como --no-routines
podem ser úteis, mas por padrãonãorotinas de despejo? Hum.