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

我需要停止运行MySQL 4.1的大型数据库(MyISAM和InnoDB),并迁移到一个新的(新鲜的Squeeze上安装5.1.63)的旧服务器。 这是一个共享的托pipe服务器,所以我有很多的用户和数据库(2000年左右)。

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

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

我应该期待一些问题迁移?

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

# # 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执行所有的脚本时,他们会

  • 重新创build每个数据库
  • 重build新的指标
  • 从MySQL 4.1数据库加载MySQL用户到MySQL 5.5

试一试 !!!