环境:CDH5.7.0 版本+ centos 6.8 metastore 数据库为mysql 5.1.17
任务:升级 mysql 5.1.17 到mysql 5.7.9
mysql 跨大版本升级,需先备份mysql 原来的数据文件,一般情况下 mysql 数据文件物理位置: /var/lib/mysql
(或者查找 find / -name *.ibd) 就能找到路径
1:下载mysql 版本 mysql-5.7.9-1.el6.x86_64.rpm-bundle.tar ,解压并把里面的rpm包 全部放入yum 源 rpm集中存放地
2:关闭CDH 集群(页面管理台), 在管理节点关闭scm服务,关闭mysql 服务
service cloudera-scm-server stop
service mysqld stop
3: 为稳妥,用rpm 卸载命令,将mysql5.1.17的包一个一个卸载
rpm -e --nodeps xxxxxx(通过yum list |grep mysql5.1.17 查看多少包)
4: 安装mysql5.7.9
yum install mysql mysql-*
5:启动mysql 到此位置启动CDH 将报错,hive连接数据库 某某表不存在
需执行操作 :mysql_upgrade -uroot -p passwd
此时 再连hive 会报 NestedThrowablesStackTrace:
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'OPTION SQL_SELECT_LIMIT=DEFAULT' at line 1
(更详细说明 http://www.th7.cn/db/mysql/201703/229084.shtml)
6:下载 mysql-connector-java 5.1.46(高于mysql-connector-java 5.1.22的都可以)
解压缩 并提取 mysql-connector-java 5.1.46-bin.jar 到任意路径下 比如 /mnt/
执行: ln -s /mnt/mysql-connector-java 5.1.46-bin.jar /usr/share/java/mysql-connector-java.jar
(提前删除 /user/share/java/ 中的mysql-connector-java 相关包和链接)
7:升级完毕 ,重启scm 服务,链接hive 回归正常