您的位置:首页 > 数据库 > MySQL

MySQL5.1升级到5.5注意事项

2013-01-06 21:55 211 查看
升级MySQL

一条规则: 不能跳过中间的几个版本。

从5.1到5.5

升级前的准备:

1、备份全部的数据

2、通过手册熟知 其中哪些是不兼容的或者说是哪些功能在新版本中已经实现。

3、执行mysql_upgrade 升级系统表。 该程序不会升级 help table

4、对于rpm包安装的DB,客户端和server端都要升级。

5、对于UDF,可能 出现的问题就是自己编写的和系统自带的冲突,这个时候只要删除即可。

6、对于稳定版的MYSQL,可以尝试直接移动format 文件和数据文件。

7、可以先对原先的MYSQL重名名目录名。新的MYSQL有问题的话,再重新命名回来。

8、对于my.cnf的修改, mysqld –print-defaults 可以使用这个进行检查。

9、对于 commands out sync 或者 unexpected core dumps 这个是由于旧的头文件和链接库。mysql.h file and libmysqlclient.a 检查这两个文件是否是 新版本的MYSQL

10、进行测试的时候,只需要就数据库的mysql 数据库的全部数据,和其他数据库的表结构。 然后在测试的DB 上进行升级。

对于新版本的数据库,相关程序接口,连接驱动程序 也应该进行相应的升级,

有可能出现 java 存储过程的问题。

对于复制过程的升级步骤;

升级过程是 先对所有的slave进行升级,最后升级master

降级过程:对于 sbr rbr有要求,要求 必须先应用完毕。

具体实施注意事项

1、备份的时候 用mysqldump 是最安全的。(因为是直接的SQL语句)

2、前期版本的bug或者其他问题在升级前是需要注意的。

配置文件的变化;

innodb_file_io_threads 变为:

innodb_read_io_threads and innodb_write_io_threads

3、对于存储过程中含有repaire table 并且带有use_frm的选项的时候,应将其先删除,因为该选项会重建索引,由于frm版本不一致会失败。

4、对于5.5中,flush tables 的一个变种:

flush tables ta1_name [, tb1_name] ... with read lock

对命令行中指出的表进行flush 和锁表操作。

该语句执行的时候,会申请一个互斥锁,这个时候它会等待事务结束。然后会从table cache中flush tables,再重新打开表,再次申请锁并将锁的粒度有互斥降级为共享锁。这个时候其他线程就可以读取该表中数据。

对于--skip-grant-tables 这个参数的理解:

服务器在启动的时候,根本不会使用权限系统,这个时候任何人可以连接,不受限制的访问所有数据库。当然 使用 flush-priveliges 或者reload 我们又可以进行权限的检查。

5、对于5.5中,truncate table 对于 含有foreign key 的情况会报错。

6、在升级过程中,保留错误日志是很重要的,如果有错误信息正在写入error log ,这个时候执行

flush logs 操作,这个时候 error-log 会变为 error-log.old 可能造成部分信息的丢失,

最好是在启动mysql之前,将error log 移动到一个新的地方。

7、SQL语句的变化,

delete 语句中的使用别名:

Incorrect:

DELETE FROM t1 AS a2 USING t1 AS a1 INNER JOIN t2 AS a2;

DELETE t1 AS a2 FROM t1 AS a1 INNER JOIN t2 AS a2;

Correct:

DELETE FROM t1 USING t1 AS a1 INNER JOIN t2 AS a2;

DELETE t1 FROM t1 AS a1 INNER JOIN t2 AS a2;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  升级 mysql