zoukankan      html  css  js  c++  java
  • mysql5.1升级到mysql5.6

    这么大跨度的升级,本身不推荐.升级应该是循序渐进的,以防止不兼容.如果确实要这么做,你先要确保你的客户端管理工具要能兼容,比如phpmyadmin,此次升级依然存在一个问题,mysql server和mysql client不匹配的问题.

    一.升级前
    1.先备份数据
    #mysqldump --all-databases -p -u root > /home/mysql.data.bak

    2.停止原有的mysql服务

    3.重命名my.cnf

    4.为防止更新失败,快速恢复,同时拷贝一份mysql的datadir下的数据备份,以文件方式拷贝


    二.从5.5开始,编译mysql需要用Cmake
    安装cmake

    #yum install cmake

    三.编译安装mysql5.6

    1.下载源码
    进入http://dev.mysql.com/downloads/mysql/5.6.html#downloads
    平台选择Source Code
    选择5.6.22
    #wget http://cdn.mysql.com/Downloads/MySQL-5.6/mysql-5.6.22.tar.gz


    2.解压
    #tar zxvf mysql-5.6.22.tar.gz

    3.编译
    #cd mysql-5.6.22
    #cmake -DCMAKE_INSTALL_PREFIX=/usr-ext/local/mysql56-server -DMYSQL_UNIX_ADDR=/var/local/mysql/mysql56.sock -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DMYSQL_DATADIR=/usr-ext/local/mysql56-server/data -DMYSQL_TCP_PORT=3306 -DENABLE_DOWNLOADS=1

    #make && make install

    4.给予权限
    #chown -R mysql:mysql /usr-ext/local/mysql56-server

    后续服务启动,如果权限问题,请修改对应文件的权限


    四.启动服务及数据更新
    1.拷贝/usr-ext/local/mysql56-server下的support-files下的mysql.server到/etc/init.d下,重命名为mysqld
    2.service mysqld restart
    3.如果顺利启动,则开始更新数据,如果启动不了看my.cnf中的参数是否和mysql5.6兼容,笔者到这儿都是ok的,暂时未遇到问题
    4.进入/usr-ext/local/mysql56-server的bin目录下,开始更新数据
    #mysql_upgrade --protocol=tcp -P 3306 -u root
    因为新的mysql5.6启动默认用了之前的my.cnf和数据文件,所以root密码是之前的
    输入之前的root密码

    提示失败

    原因是mysql5.6默认是用的新的密码校验方式,旧的不兼容,现在要关闭该项安全校验
    #vi /etc/my.cnf
    增加
    secure_auth = off
    skip-grant-tables

    重新启动mysql

    再次更新,依然提示失败,大致意思是更新日志格式版本不符合,这个时候检查mysql的datadir下是否有之前的更新文件记录mysql_upgrade_info
    如有

    删除掉
    再次更新

    这时候更新开始了,提示检查都ok,但到mysqlcheck这儿爆出错误,更新继续失败,提示大致意思是,mysql服务端因为关闭了secure_auth,用的是旧的密码校验方式,但mysqlcheck这个client用了新的密码校验方式,连接不上

    这,就蛋疼了,凝神静气,继续想解决办法.

    现在的root密码因为是在旧的mysql底下生成的,所以是旧的密码格式.如何让他生成新的呢?

    1.进入mysql命令行下,更改root密码
    2.新建一个mysql的超级用户,比如root2,赋予全局权限

    因为时间紧迫,也怕再出问题.毕竟是一个线上的服务器,用户那边催得紧.
    选择第二种,进入phpmyadmin,新建一个超级用户root2

    然后再次更新

    #mysql_upgrade --protocol=tcp -P 3306 -u root2

    顺利更新完毕.

    编辑my.cnf,取消掉skip-grant-tables
    重启mysql服务

    至此更新完毕.话说到此,也是一头大汗啊.
    然后开始测试数据的完整性和主从复制的一致性.

  • 相关阅读:
    高级程序员应该具备什么能力
    二 八 定 律
    二八定律全面分析
    Java 网络爬虫获取网页源代码原理及实现
    vijosP1371 方程的解
    vijosP1413 Valentine’s Present
    vijosP1289 老板娘的促销方案
    vijosP1092 全排列
    vijosP1049 送给圣诞夜的礼品
    vijosP1210 盒子与球
  • 原文地址:https://www.cnblogs.com/itfenqing/p/6054860.html
Copyright © 2011-2022 走看看