mysql升级小结和mysql_upgrade的用途

http://blog.itpub.net/15480802/viewspace-1412259/

mysql升级html

升级方式mysql

分为In-place和out-of-place,前者直接覆盖当前版本,后者在新路径安装而后加载数据库;sql

升级不可跳级,即5.1要想升级成5.6,必须先升级到5.5;shell

注:oracle的out-of-place upgrade采用新binary直接加载原数据文件,而mysql须要导出--导入数据;数据库

 

 

2 大体步骤安全

1 备份架构

2 升级oracle

3 mysql_upgrade检查不兼容的表,更新grant表;tcp

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相应的驱动包;

 

 

升级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

相关文章
相关标签/搜索