mysql升级小结和mysql_upgrade的用途
mysql升级
1 升级方式
分为In-place和out-of-place,前者直接覆盖当前版本,后者在新路径安装然后加载数据库;
升级不可跳级,即5.1要想升级成5.6,必须先升级到5.5;
注:oracle的out-of-place upgrade采用新binary直接加载原数据文件,而mysql需要导出--导入数据;
2 大致步骤
1 备份
2 升级
3 mysql_upgrade检查不兼容的表,更新grant表;
5.5升级5.6
1 备份 mysqldump –all-databases –routines - events
2 升级前,检查表和索引是否兼容http://dev.mysql.com/doc/refman/5.6/en/checking-table-incompatibilities.html
3 升级后调用mysql_upgrade,
注:对于大数据库,in-place upgrade可能要花费很长时间进行数据转换,对此可以创建一个dummy实例:包含mysql数据库和其他数据库的结构(不含数据),升级dummy并查看可能遇到的问题;
5.6很多参数的默认值都做了调整,详细可参考http://dev.mysql.com/doc/refman/5.6/en/upgrading-from-previous-series.html
3 mysql_upgrade
本质上为一个封装了mysqlcheck命令的脚本,流程如下:
1 mysqlcheck --no-defaults --databases --fix-db-names --fix-table-names mysql
2 mysqlcheck --no-defaults --check-upgrade --databases --auto-repair mysql
3 mysql < fix_priv_tables
4 mysqlcheck --no-defaults --all-databases --skip-database=mysql --fix-db-names --fix-table-names
5 mysqlcheck --no-defaults --check-upgrade --all-databases --skip-database=mysql --auto-repair
执行完毕后在数据目录生成mysql_upgrade_info文件,记录检查过的表,下次再调用时可以跳过;
执行步骤
1检查所有数据表同当前binary的兼容性,若不兼容则尝试修复,修复失败则必须手工执行;
手工修复:mysqldump重新加载或者null alternation(alter table t engine=innodb);
如果仅仅是修改表的collation,则可调用ALTER TABLE t1 CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_mysql500_ci;
2升级mysql系统表;
调用mysql_upgrade后,需要重启mysql才能让系统表更新生效;
如果单机运行了多个mysql实例,则指定连接参数
shell>mysql_upgrade --protocol=tcp -P 3306 [other_options]
shell>mysql_upgrade --protocol=tcp -P 3307 [other_options]
输出结果
Table upgrade required.
Please do "REPAIR TABLE `tbl_name`" or dump/reload to fix it!
4 Tip
1 可备份old mysqld,如果new mysqld运行出错可迅速切换;
2对于GA(general availability)版本间的升级,同一架构下的系统可以在两个版本间copy mysql format file和数据文件;
3 不要使用old my.cnf,mysqld –print-defaults检查;
4重新安装perl DBD::mysql,以及PHP和Python相应的驱动包;
5 升级replication
同oracle一样,mysql支持low master – high slave复制模式(部分sql可能会出现错误),顺序颠倒过来则可能遭遇一系列错误(比如binlog不兼容/),因此升级master前须先升级slave;
对于需要重建表或索引的操作(collation变化需要重建index),最安全的办法是各自在master/slave单独执行期间(禁用replication);
1 关闭slave并升级,以—skip-slave-start选项启动,执行重建
2 master禁用binlog,执行重建
3 恢复原来设置,slave正常连接master
注:GTID=on会导致更新mysql系统表(myisam)失败,http://dev.mysql.com/doc/refman/5.6/en/mysql-upgrade.html
mysql升级小结和mysql_upgrade的用途的更多相关文章
- 修复 MySQL 数据库结构错误 – mysql_upgrade升级
http://www.cnblogs.com/wjoyxt/p/5477072.html 不知道是不是每次更新 MySQL 软件之后都需要执行数据库升级指令?在我进行过的几次软件升级之后,总会在 My ...
- MySQL 升级详细步骤 (包括 Percona)
MySQL 升级步骤 MySQL 5.1.72 升级到 MySQL 5.5.36 鉴于我在升级的时候遇到的麻烦问题,我觉得有必要把一些细节说清楚,免得引起误解了.感觉官方文档上的升级步骤写的比较简单, ...
- MySQL 升级方法指南大全
原文:MySQL 升级方法指南大全 通常,从一个发布版本升级到另一个版本时,我们建议按照顺序来升级版本.例如,想要升级 MySQL 3.23 时,先升级到 MySQL 4.0,而不是直接升级到 MyS ...
- MySQL升级后1728错误解决方案
MySQL升级后1728错误解决方案 错误 # 1728,Cannot load from mysql.proc. The table is probably corrupted 造成原因:MySQL ...
- MySQL升级指南
一 .MySQL升级 1.官方升级策略 注意 升级过程中必须使用具有管理权限的MySQL帐户来执行SQL语句. 1.升级方法 逻辑升级: 涉及使用 mysqldump从旧的MySQL版本导出现有数据 ...
- mysql升级的一些踩坑点
升级的方法一般有两类: 1.利用mysqldump来直接导出sql文件,导入到新库中,这种方法最省事也最保险 缺点:大库的mysqldump费时费力. 2.直接替换掉 mysql 的安装目录和 my. ...
- Mac卸载mysql并安装mysql升级到8.0.13版本
引言 今天mysql升级到8.0.13版本,遇到了很多问题,在此进行总结方便以后查看. 卸载mysql brew uninstall mysql sudo rm /usr/local/mysql su ...
- 【mysql升级步骤】windows mysql版本升级 ,mysql 5.6 升级到5.7.27
最近博主由于工作原因需要把之前安装好的的mysql 5.6.44版本卸载,然后安装mysql 5.7.*版本. 前提:为什么要升级到5.7版本? 因为博主在5.6版本上执行脚本时候报出异常:to yo ...
- (2.1)mysql升级与降级
(2.1)mysql升级与降级 转自:深入浅出mysql数据库开发.优化与管理第二版 1.mysql升级 2.mysql降级
随机推荐
- codeforces 260 div2 C题
C题就是个dp,把原数据排序去重之后得到新序列,设dp[i]表示在前i个数中取得最大分数,那么: if(a[i] != a[i-1]+1) dp[i] = cnt[a[i]]*a[i] + dp[ ...
- Shell获取Aix/linux/unix机器上db2和os的信息并上传到指定服务器
(之前写过一篇类似的文章,当时传输文件用的是ftp,因为项目觉得ftp不够安全所以这次换成了scp,同时对脚本的一些地方也做了一些调整) 其实做这个东西还是因为项目的需求,需要获取某些机器(目前主要是 ...
- iOS学习网站及大牛网址(实时更新)
iOS学习网站及大牛网址(实时更新) 学习网站 https://github.com/Tim9Liu9/TimLiu-iOS 自己总结的iOS.mac开源项目及库 https://github.co ...
- Tkinter教程之Listbox篇
本文转载自:http://blog.csdn.net/jcodeer/article/details/1811310 #Tkinter教程之Listbox篇#Listbox为列表框控件,它可以包含一个 ...
- 简易CSS3 Tab菜单 Tab切换滑块动画
今天要分享一款简易的CSS3 Tab菜单,这款Tab菜单在切换的时候内容块出现飞入飞出的动画效果,尽管看起来非常简单,但是你完全可以在上面定制自己喜欢的Tab菜单.前面也分享过一些Tab菜单,像CSS ...
- Java中Runnable和Thread的区别(转)
http://developer.51cto.com/art/201203/321042.htm 第一种方式:使用Runnable接口创建线程 第二种方式:直接继承Thread类创建对象 使用Runn ...
- Oracle创建用户及表空间 代码片段
create tablespace testdatalogging datafile 'D:\oracle\oradata\orcl\testdata.dbf' size 50m autoextend ...
- H264编码参数的一些小细节
一次写播放器,基于ijkplayer.在播放一些网络视频的时候,发现无论怎么转码,视频比例始终不对.即便获取了分辨率,但是播放的时候,view不是分辨率比例的那个长宽比.使用ffmpeg查看了一下属性 ...
- POj3268 Silver Cow Party
http://poj.org/problem?id=3268 题目大意:求到x距离与从x返回和的最大值 从x点到各个点最短路好求,直接用Dijkstar,但从各个点到x点却不好求,只要把路向翻转过来也 ...
- POJ 1573 (13.10.11)
Description A robot has been programmed to follow the instructions in its path. Instructions for the ...