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服务
至此更新完毕.话说到此,也是一头大汗啊.
然后开始测试数据的完整性和主从复制的一致性.
mysql5.1升级到mysql5.6的更多相关文章
- mysql5.6升级为mysql5.7部署jboss/wildfly应用项目
一.部署mysql5.7二进制版 解压tar -xvf mv mysql-5.7 /usr/local/mysql5.7 或者其他文件夹 cd /usr/local/mysql.57 usera ...
- Windows 10 将MySQL5.5升级为MySQL5.7
最近想学习一下java.找到一个开源项目需要mysql5.7.11+ 升级 电脑上装的是MySQL 5.5,准备直接升级到最新版本的5.7,对于MySQL好像并没有直接升级到最新版本的功能,下载了Wi ...
- mysql5.x升级到mysql5.7后导入之前数据库date出错的快速解决方法【mysql低版本数据导入到高版本出错的解决方法】
mysql5.x升级至mysql5.7后导入之前数据库date出错,这是由于MySQL的sql_mode的影响,解决方法如下所示: [具体参考:mysql的sql_mode详解]修改mysql5.7的 ...
- MySQL5.1升级5.6后,执行grant出错:ERROR 2013 (HY000): Lost connection to MySQL server during query【转载】
转载: MySQL5.5升级5.6后,执行grant出错:ERROR 2013 (HY000): Lost connection to -mysql教程-数据库-壹聚教程网http://www.111 ...
- mysql5.6升级及mysql无密码登录
mysql5.6升级 mysql5.6的升级可以分为以下几个步骤: 安全关闭正在运行的MySQL实例 把/usr/local/mysql 的连接由MySQL5.6更改为MySQL5.7 启动MySQL ...
- MySQL5.6.26升级到MySQL5.7.9实战方案【转】
MySQL5.6.26升级到MySQL5.7.9实战方案 转自 MySQL5.6.26升级到MySQL5.7.9实战方案 - 其他网络技术 - 红黑联盟http://www.2cto.com/net/ ...
- centos6.5环境通达OA数据库mysql5.0.67升级至mysql5.5.48方案
centos6.5环境通达OA数据库mysql5.0.67升级至mysql5.5.42方案 整体方案: 环境准备,在备用服务器安装mysql5.5数据库 1.停用生产环境的应用访问 直接修改web的访 ...
- mysql5.5.x升级到mysql5.6.x
大概步骤是: 把配置文件添加:skip-grant-tables参数,把basedir升级成新版本,启动mysql,执行命令:mysql_upgrade升级一下字典信息,然后flush privile ...
- Mysql5.5升级到5.6步骤详解 小版本大版本
http://blog.csdn.net/i_team/article/details/9935693 小版本升级,先关闭数据库,然后mv直接全部替换掉mysql目录下的bin/ ,lib/ ,sha ...
随机推荐
- python运算符
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAcIAAAHCCAIAAADzel4SAAAgAElEQVR4Aey9+bMcSXLnV1dmna/ejR
- 百度地图用ip获取当前位置的经纬度(高精度)
步骤比较简单先上百度地图API官网,申请一个应用AK(访问凭据):查看一下高进度定位的API,看看是否都符合要求下面直接上代码 /** * 根据ip获取地理坐标 * @param ip * @retu ...
- 关于用bootstrap显示查询的后台数据
PrintWriter pw = response.getWriter(); pw.println(sb); pw.flush(); 由于用bootstrap查询数据,页面需要自身返回bootstra ...
- Servlet 之 HttpServlet
package cn.jiemoxiaodi.http; import java.io.IOException; import javax.servlet.GenericServlet; import ...
- Dictionary读取键值的快捷方法
对泛型集合Dictionary<T,T> 进行读取键值是经常的操作,一般情况下,都是通过keys 和values进行键值的读取操作: eg: foreach (var item in di ...
- 数据库Blob数据类型转String
blob数据是存储大对象数据类型, 一般存放二进制的,所以才用字节存取. 首先判断blob数据是否为空,然后采用输入流读出数据,具体代码如下: String content = null; try { ...
- 配置nodejs环境
一.由于node有多种版本号,每个版本号的API肯定也有些细微的差别,在工作中有可能要经常切换node的版本号,因此可以下载nvm使其来管理node的版本号. 首先下载nvm,官网:https://g ...
- SQL入门语句之INSERT、UPDATE和DELETE
一.SQL入门语句之INSERT insert语句的功能是向数据库的某个表中插入一个新的数据行 1.根据对应的字段插入相对应的值 insert into table_name(字段A, 字段B, 字段 ...
- 【Jsoup网页解析】
下载链接:http://jsoup.org/download 一.普通的请求方式(不带有cookie) 使用举例: 第一步: Connection conn=Jsoup.connect(url); 第 ...
- java单例模式详解
饿汉法 饿汉法就是在第一次引用该类的时候就创建对象实例,而不管实际是否需要创建.代码如下: public class Singleton { private static Singleton = ne ...