第2章:安装MySQL / 2.10. 升级MySQL
2.10.1. 从5.0版升级
2.10.2. 升级授权表
2.10.3. 将MySQL数据库拷贝到另一台机器

做为一般原则,我们建议从一个发布系列升级到另一个发布系列时,你应当先升级到它的下一个系列而不要跳过。例如,如果你目前正运行MySQL 3.23,想要升级到较新的系列,要升级到MySQL 4.0而不要升级到5.05.1

下面的项列出了升级时的相关信息:

·         MySQL 5.0升级到5.1,请阅读2.10.1节,“从5.0版升级”附录D:MySQL变更史。其中提供了MySQL 5.1相对于MySQL 5.0的新特性或不同特性。如果你想要从MySQL 5.0以前的发布系列升级,应当依次升级到下一个发布系列,直到达到MySQL 5.0,然后再升级到MySQL 5.1。关于从MySQL 5.0升级的信息,参见MySQL 5.0 参考手册;对于更早的发布,参见MySQL 4.1参考手册

·         在升级前应先备份数据库。

·         如果在Windows中运行MySQL服务器,参见2.3.15节,“在Windows下升级MySQL”

·         MySQL 5.0升级到5.1更改MySQL数据库中的 授权表;增加了列和表以支持新功能。为了充分利用这些特性,应确保授权表是最新的。升级授权表的过程参见2.10.2节,“升级授权表”。在升级前,你可能想要使用mysqldump来转储表;升级后,可以使用mysqlmysqlimport重建、重装 授权表来重载dump(备份)文件。

·         如果你正复制,关于升级复制设置的信息参见6.6节,“升级复制设置”

·         如果安装包括mysqld-max服务器的MySQL-Max分发版,则后面要升级到非Max版的MySQLmysqld_safe仍然试图运行旧的mysqld-max服务器。如果升级,应当手动删掉旧的mysqld-max服务器以确保mysqld_safe运行新的mysqld服务器。

只要你的MySQL版本属于相同的发布系列,总是可以在不同的版本之间的相同架构上移动MySQL格式文件和数据文件。目前的产品发布系列是5.1。如果运行MySQL时更改字符集,必须对所有MyISAM表运行myisamchk -r -q --set-character-set=charset。否则,索引顺序将会出错,因为更改字符集也会更改排序。

如果你使用新版本时比较小心,在安装新的MySQL前可以重新命名旧的mysqld。例如,如果你想要从MySQL 5.0.13升级到5.1.10, 将当前的服务器从mysqld重新命名为mysqld-5.0.13如果新的mysqld出现问题,只需要关闭并用旧的mysqld重新启动。

升级后,如果你遇到重新编译的客户端程序问题,例如Commands out of sync或不期望的内核转储,可能是编译程序时使用了旧的头文件或库文件。出现这种情况,应当检查mysql.h文件和libmysqlclient.a库的日期,以验证它们是否来自新的MySQL分发版。如果不是,用新的头文件和库重新编译程序。

如果出现问题,例如新mysqld服务器不启动或没有密码不能连接,验证是否使用了以前安装的旧my.cnf文件。可以用--print-defaults选项检查(例如,mysqld --print-defaults)。如果显示程序名之外的其它内容,说明有一个活动my.cnf文件影响了服务器或客户端操作。

当安装新的MySQL发布时,最好重建并重装Perl DBD::mysql 模块。同样适用于其它MySQL接口,例如PHP mysql扩展名和Python MySQLdb模块。