mysql升级⼩结和mysql_upgrade的⽤途
blog.itpub/15480802/viewspace-1412259/
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 升级前,检查表和索引是否兼容
3 升级后调⽤mysql_upgrade,
注:对于⼤数据库,in-place upgrade可能要花费很长时间进⾏数据转换,对此可以创建⼀个dummy实例:包含mysql数据库和其他数据库的结构(不含数据),升级dummy并查看可能遇到的问题;
5.6很多参数的默认值都做了调整,详细可参考
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的兼容性,若不兼容则尝试修复,修复失败则必须⼿⼯执⾏;
安装mysql失败
⼿⼯修复: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 myf,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)失败,

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。