首页

源码搜藏网

首页 > 开发教程 > 数据库 >

升级 MySQL

创建时间:2013-05-06 17:44  

1、概述

通常,从一个发布版本升级到另一个版本时,我们建议按照顺序来升级版本。例如,想要升级 MySQL 3.23 时,先升级到 MySQL 4.0,而不是直接升级到 MySQL 4.1 或 MySQL 5.0。

以下是在升级 MySQL 时需要注意的事项:

在同一个发布系列版本的MySQL间,可以随意拷贝格式文件和数据文件。如果在MySQL运行过程中改变了字符集,就需要对每个MyISAM表执行"myisamchk -r -q --set-character-set=charset"命令修复一下。否则的话,索引的排序可能不正确,因为修改了字符集,就可能会改变索引的顺序。

通常情况下,升级到新版本不需要修改任何数据表。请检查MySQL发布事项中提到的升级需要注意的地方,如果发现不能直接升级的话,就先用 mysqldump 将数据导出来,然后再导回去。

如果担心升级失败,就先把旧版本的MySQL改个名字备份起来,以备所需。

同时,升级完之后可能还需要重新编译跟MySQL相关的程序,因为新版本的头文件和库文件可能有改变了。

如果升级后发生问题了,请先检查是否使用了旧的my.cnf配置文件,可以通过执行命令"mysqld --print-defaults"来打印出各种配置信息来确认。

升级的时候最好也升级类似Perl的 DBD::mysql 模块,同样,对PHP和Python而言也是一样。

2、从 MySQL 5.0 升级到 MySQL 5.1

从 5.0 升级到 5.1 的时候,必须要升级授权表。否则,可能某些存储过程无法运行。详情请看附录"mysql_update MySQL升级时检查数据表"。

以下是从 5.0 升级到 5.1 需要注意的事项:

以下是升级到MySQL 5.1之后会发生的一些变化:

服务器部分

SQL分

3、从 MySQL 4.1 升级到 MySQL 5.0

服务器部分

SQL部分

C API部分

4、从 MySQL 4.0 升级到 MySQL 4.1

服务器部分

客户端部分

SQL部分

C API部分

MySQL 4.1中的密码哈希算法做了改进以提升安全性,不过会导致兼容性问题。使用MySQL 4.0及更早版本的客户端库文件会发生问题。

密码处理部分

MySQL 4.1中的密码哈希算法做了改进以提升安全性,不过会导致兼容性问题。使用MySQL 4.0及更早版本的客户端库文件会发生问题。解决办法有:

5、附录

在Windows平台上升级MySQL步骤:

  1. 备份旧数据
  2. 停止旧服务器
  3. 从windows的系统服务中删掉mysql服务,用如下命令:
    C:\> C:\mysql\bin\mysqld --remove
  4. 用可执行安装文件方式安装mysql,或者解压可直接执行的二进制压缩包来安装
  5. 重新注册mysql服务,用如下命令:
    C:\> C:\mysql\bin\mysqld --install  
  6. 重启服务器
  7. 其他的问题详见上面提到的各种升级中会碰到的情况

2、)升级授权表

升级授权表之前一定要备份好 mysql 数据库,以备升级失败时使用旧的授权表。

在unix或类unix系统中,运行 mysql_fix_privilege_tables 脚本来升级授权表:

shell> mysql_fix_privilege_tables  

必须在 mysqld 运行着的时候执行这个脚本,它尝试使用 root 帐号来连接服务器;因此,当 root 需要密码时,用如下方式来指定密码:

shell> mysql_fix_privilege_tables --password=root_password 

在 MySQL 4.1之前,则是用如下形式来指定密码:

shell> mysql_fix_privilege_tables root_password

接下来 mysql_fix_privilege_tables 脚本会升级授权表,在这个过程中可能会有一些 Duplicate column name 警告信息,无需理会它们。待它运行完之后,重启一下服务器即可。

在windows平台上,授权表想要升级到4.0.15并不容易。从4.0.15开始,发行版中包含一个sql脚本:mysql_fix_privilege_tables.sql,用 mysql 客户端运行它来升级授权表,运行类似如下命令:

C:\> C:\mysql\bin\mysql -u root -p mysql
mysql
> SOURCE C:/mysql/scripts/mysql_fix_privilege_tables.sql

把上面提到的目录改成真实的目录。

3、)升级同步

请查看我翻译的文档"6.6 升级同步"

4、) mysql_update MySQL升级时检查数据表

每次升级的时候都必须运行 mysql_upgrade 脚本。它检查了当前版本的MySQL下的所有数据库表的不兼容性,就会检查这些表;并且发现有问题时,也会修复这些表。mysql_update 同时升级了系统表,因此可以兼容新的权限机制并且使用新增的权限。

由于 mysql_update 会把检查过和修复过的表都标记上当前的MySQL版本号,因而保证了下一次在同一个MySQL版本下运行这个脚本时,都会再次报告哪些表需要修复或检查。

它还会把MySQL的版本号记录在数据文件目录下的一个文件中:mysql_upgrade.info。这个文件用于标识当前发布版本检查表时哪些表可以略过,检查时想要忽略这个文件,只需附加上 --force 选项。

为了能检查和修复数据表,并且升级系统表,mysql_update 执行了一下命令:

mysqlcheck --check-upgrade --all-databases --auto-repair
mysql_fix_privilege_tables

mysql_update 目前只支持类unix平台;在windows下,需要手工执行 mysqlcheck 命令,升级授权表请看附录"升级授权表"。

执行 mysql_update 时,MySQL服务器必须运行着,它有以下几个参数:

其他的选项诸如 --password[=password] 是要传递给 mysqlcheck 和 mysql_fix_privilege_tables 脚本的,并不是必须的。

 

0 0   标签: MySQL升级数据库   
上一篇:MySQL 备份和恢复
下一篇:如何设置MySQL同步(Replication)

相关内容

热门推荐