Migrar bancos de dados do MySQL 4.1 InnoDB para a versão atual do MySQL 5.5

1

Eu preciso parar um servidor antigo rodando com o MySQL 4.1 com muitos bancos de dados (MyISAM e InnoDB), e migrar para um novo (5.1.63 instalado em um novo Squeeze). É um servidor de hospedagem compartilhada, por isso tenho muitos usuários e bancos de dados (por volta de 2000).

Eu não quero migrar todos os bancos de dados ao mesmo tempo, mas um por um.

Qual é a melhor maneira de fazer isso?

Devo esperar alguns problemas para migrar?

    
por profy 14.08.2012 / 18:17

1 resposta

0

Você deve mysqldump cada banco de dados individualmente. Além disso, uma vez que as tabelas de permissões para o MySQL 4.1 não correspondem às tabelas de permissões para o MySQL 5.5, você tem que copiar o MySQL Grants no formato SQL.

#
# mysqldump each database except the 'mysql' schema
#
MYSQL_USER=root
MYSQL_PASS=rootpassword
MYSQL_CONN="-u${MYSQL_USER} -p${MYSQL_PASS}"
mysql ${MYSQL_CONN} -ANe"SHOW DATABASES" | grep -v mysql | > /tmp/ListDBs.txt
for DB in 'cat /tmp/ListDBs.txt'
do
    mysqldump ${MYSQL_CONN} --hex-blob --databases ${DB} > ${DB}.sql 
done
#
# Dump MySQL Grants as SQL
#
mysql ${MYSQL_CONN} -ANe"SELECT CONCAT('SHOW GRANTS FOR ''',user,'''@''',host,''';') FROM mysql.user WHERE user<>''" | mysql ${MYSQL_CONN} -AN | sed 's/$/;/g' > MySQLUserGrants.sql

Quando você executa todos os scripts contra o MySQL 5.5, eles irão

  • recriar cada banco de dados
  • reconstruir índices novos
  • carrega usuários MySQL do banco de dados MySQL 4.1 no MySQL 5.5

Experimente!

    
por 14.08.2012 / 18:35

Tags