自己做的实验,现在要将mysql5.6.29升级至5.7.24.以下是升级步骤(注意:升级需要停止mysql,根据实际情况选择升级时间):1、准备mysql5.7.24的包,并将5.7.24的包上传至服务器(我放到了/usr/local/src下)2、停掉mysql服务(我是直接杀的进程)​​3、确认mysql已经停止
​​
4、备份原来的mysql(双机可忽略)我是直接备份的物理文件 ,cp -r /data/mysqldata  /mnt/data/6、解压刚才上传的5.7.24的包tar xzf mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz7、替换掉原来的安装目录(因为我下的包是编译后的,直接启动就可以用;如果是没有编译过的,自己手动编译一下然后按照以下步骤操作就行)mv  mysql-5.7.24-linux-glibc2.12-x86_64 mysql        #给5.7.24改个名mv /usr/local/mysql   /usr/local/mysql5.6      #把原来的安装包也改一下名字,方便区分mv  mysql   /usr/local/mysql   #将5.7.24的包移到/usr/local下8、启动mysql发现mysql服务启动不了,然后日志也没有报错。判断为因为没有初始化权限表导致,需要初始化一下, 5.7和5.6的初始化不同,bin/msqld --initializey --user=mysql  --datadir=/data/mysqldata   --basedir=/usr/local/mysql    --defaults-file=/etc/my.cnf不在使用scripts/mysql_install_db,而是bin/msqld --initializey,初始化会报错:/data/mysqldata(数据目录)下有文件了,没办法初始化然后根据报错信息,将数据目录下的所有文件删掉(rm -rf *),然后重新初始化,再次报错:开启了bin-log,报错。 随后在my.cnf中将bin-log注释掉,再次初始化,初始化成功 最后启动mysql服务,./mysqld_safe --user=mysql &登录数据库,报错:密码过期,要登录,您必须使用支持过期密码的客户端进行更改。但是因为我的数据库在阿里云上,没做相关的配置,没办法通过客户端登录。只好想其他的办法了,然后把当前的数据目录下的所有数据rm -rf *掉了,然后 将原来备份的5.6的数据目录拷贝到当前目录下并在配置中添加skip-grant-tables=1(跳过检查授权表),再次启动,发现可以启动,登录数据库后,竟然升级到了5.7.24,这是为什么呢?????​​最后,将skip-grant-tables=1注释掉,同样也可以正常登录并操作。哪位大神给解答一下???

解决方案 »

  1.   

    这里是MSSQL,楼主发错板块了
      

  2.   

    还没做过升级mysql 操作, 不过楼主成功了就是好事吧。
      

  3.   

    但是mysql启动的时候会去读db目录,逻辑上db下的数据文件还是5.6的,应该是会报错呀
      

  4.   

    但是mysql启动的时候会去读db目录,逻辑上db下的数据文件还是5.6的,应该是会报错呀
      

  5.   

    但是mysql启动的时候会去读db目录,逻辑上db下的数据文件还是5.6的,应该是会报错呀版本兼容
      

  6.   

    杀主机进程这一步就搞错了,如果内存数据还没有刷到磁盘上,会掉数据,如果掉了数据,即使升级成功也是有风险的,
    1、先把innodb_fast_shutdown设为0,(my.cnf里也写上这一句),
    2、全库加读锁(有备机断关掉同步,我一般习惯放一台负载到数据库前头,用的时候直接把负载或vip停了,再全库加读锁,就能好很多),
    3、检查scn号,如果前三个号不变化,最后一个号大9个数字,说明没有数据写入,可以关机
    4、正常关闭(等正常关完并重启一次,这时候不要开负载或vip,保证没有业务数据进来),检查错误日志(如果有实例崩溃恢复提示,说明没有干净的关闭,要重复1-4部),
    5、干净关机后,拷文件到异机备份;
    6、准备本机升级替换;
    7、执行一致性检查;
    8、尝试启动并检查日志,没有问题的话,开放业务连接,叫测试监控半小时;