将数据库从 MySQL 4.1 InnoDB 迁移到当前版本的 MySQL 5.5

将数据库从 MySQL 4.1 InnoDB 迁移到当前版本的 MySQL 5.5

我需要停止运行 MySQL 4.1 且上面有大量数据库(MyISAM 和 InnoDB)的旧服务器,并迁移到新服务器(安装在全新 Squeeze 上的 5.1.63)。这是一台共享托管服务器,因此我有很多用户和数据库(大约 2000 个)。

我不想同时迁移所有数据库,而想逐个迁移。

做这个的最好方式是什么 ?

我是否应该预期一些问题会迁移?

答案1

您应该单独转储每个数据库。此外,由于 MySQL 4.1 的授权表与 MySQL 5.5 的授权表不匹配,因此您必须以 SQL 格式转储 MySQL Grants。

#
# 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

当你针对 MySQL 5.5 执行所有脚本时,它们将

  • 重新创建每个数据库
  • 重建新索引
  • 将 MySQL 4.1 数据库中的 MySQL 用户加载到 MySQL 5.5

试一试 !!!

相关内容