mysql升级的一些踩坑点

升级的方法一般有两类:

1.利用mysqldump来直接导出sql文件,导入到新库中,这种方法是最省事也最保险

缺点:大库的mysqldump费时费力。

2.直接替换掉 mysql 的安装目录和 my.cnf,利用 mysql_upgrade 来完成系统表的升级,这种方法需要备份原有的文件,但属于物理拷贝,速度较快。

缺点:跨版本升级不推荐这么做,比如mysql5.1升级到mysql5.6,mysql5.5升级到mysql5.7等。

本文采用的是第二种方法升级。

本文两种方法都用到

旧版本 mysql 5.1.73 环境     端口:3306

(1)数据库安装目录:/usr/local/mysql

(2)数据库数据目录:/data/mysql

(3)my.cnf位置:/etc/my.cnf

(4)慢日志目录:/data/mysql/slow-query.log

主要有四个库:discuz、ljy、zabbix、zrlog(java开发的博客程序)

###################

ps: 本文并不打算把整个升级过程的步骤详细列出(怕被吐槽文章累赘就不好了,网上升级文章还是一大堆的),只列出关键点、报错问题解决,及一些个人新发现 ^__^

新版本 mysql 5.7.20    端口:4306

(1)安装目录:  /data/mysql5-7-20/mysql

(2)数据目录: /data/mysql5-7-20/data

(3)my.cnf位置: /data/mysql5-7-20/my.cnf  ——》5.7.20并没有提供sample版本的my.cnf

大部分参数设置跟生产库的参数设置一样(5.7.18——》5.7.20)

1、注意上图中的这个log-error,mysql启动不成功并不写入该日志,所以要额外设置启动mysql不成功的详细日志路径

vim /data/mysql5-7-20/mysql/bin/mysqld_safe

  --log-error=*) err_log=. /data/mysql5-7.20/mysqld.log

否则只能单纯地看到这个表面信息

2、初始化新版本mysql的两个报错

(1)需要把旧版本mysql 配置文件下的慢查询日志注释掉(这个报错信息忘了截图,大家请见谅)

cd /data/mysql5-7-20/mysql/bin

./mysqld --user=mysql --datadir=/data/mysql5-7-20/data --basedir=/data/mysql5-7-20/mysql --initialize  (已经不是 ./scripts/mysql_install_db  了)

(2)Unable to create temporary file

解决办法:

1、创建 tmp 目录:mkdir -p /data/mysql5-7-20/tmp

2、chown -R mysql.mysql /data/mysql5-7-20/tm

这个解决方法找的有点辛苦呢~~~~全靠

【1】开日志(mysqld_safe 下设置 err_log 路径,更深层次的启动报错信息会写到这里,上面的1)

【2】查stackoverflow
感谢歪果仁的热心解答(度娘尚需努力哦~)

https://stackoverflow.com/questions/11997012/mysql-cant-create-write-to-file-tmp-sql-3c6-0-myi-errcode-2-what-does/17746190

图一

初始化mysql 需要一个tmp空间来存放 mysql 进程的私人命名空间,然后最后初始完成后tmp目录里的东西会自动删除,所以du -sh 是没有东西的

图二

 到这一步,两个mysql启动是已经没问题的了

3、将旧版本的数据库及相关表导入到新版mysql

mysqldump并不能导 zabbix、zrlog、及 ljy 库,因为5.1并不认识 InnoDB 存储引擎

然后我居然把 ljy 唯一的表删掉就以为万事大吉了(删库跑路?),大忌大忌,罪过罪过 = = (所以 ljy 库就放弃吧)

一气之下写了个脚本去扫描 = =

(1)mysqldump 直接导 discuz 库

mysqldump -uroot -p123456 discuz > /root/db_5.1/discuz.sql

(2)复制  ——》 这种方法还是解决不了问题 = =,后面会说

cp -r /data/mysql/zabbix /data/mysql5-7-20/data/

cp -r /data/mysql/zrlog /data/mysql5-7-20/data/

4、升级字典

cd /data/mysql5-7-20/mysql/bin

./mysql_upgrade -P4306 -S /data/mysql5-7-20/mysql.sock

zabbix 和 zrlog 的表查询报不存在

discuz 有

  • tb_demo.frm,存储表定义。
  • tb_demo.MYD,存储数据。
  • tb_demo.MYI,存储索引

zrlog、zabbix 只有 frm

用mysqlcheck也不行,估计是由于存储引擎都变了,并不支持,只能放弃 zabbix 和 zrlog 库的导入了

不过大家不用担心,一般生产上的mysql升级都是循环渐进的,不会跨度这么大(例如,从5.6升级到5.7)

最后修改端口为3306,移动启动脚本到 /etc/init.d/mysqld ,还有把配置文件放到 /etc/my.cnf (旧版本先备份)即可

时间: 2024-08-02 23:26:55

mysql升级的一些踩坑点的相关文章

记一次webpack3升级webpack4的踩坑

webpack4版本也出了很久了 之前弄过一段时间的升级 后面因为种种原因搁浅了 今天有硬着头皮升级了一波 yeah 还好升级成功了 先贴一波原先webpack3的github配置 ps(我只是一个菜鸡= = webpack的配置很辣鸡 )废话少说 开撸 1 webpack升级到4.0版本并且安装webpack-cli yarn add webpack-cli globalyarn add webpack-cli -D 如果不对webpack-cli进行安装的话会报错 如下: The CLI m

jQuery升级踩坑大全

背景 jQuery想必各个web工程师都再熟悉不过了,不过现如今很多网站还采用了很古老的jQuery版本.其实如果早期版本使用不当,可能会有DOMXSS漏洞,非常建议升级到jQuery 1.9.x或以上版本.前段时间我就主导了这件事情,把公司里我们组负责的项目jQuery版本从1.4.2升级到了jQuery 1.11.3.jQuery官方也为类似升级工作提供了jQuery Migrate插件. 言归正传. 坑从何处来 jQuery 1.11.3是1.x时代的最后一个版本(作者更新:2016年1月

[踩坑] MySQL max_allowed_packet导致sql文件source异常问题

踩坑: 今天通过mysqldump导出数据,在目标机器上开个screen执行source导入数据.过一会看了下,发现居然导入报错了.报错提示如下: 刚开始还以为是sql_mode设置的问题,改了sql_mode为宽松模式,再次导入还是报错. 网上查了下,http://blog.goyiyo.com/archives/1535 set global max_allowed_packet=524288000;    设置为512MB 退出mysql,然后再登进去source即可. 究其原因,是因为之

Spark踩坑记——数据库(Hbase+Mysql)转

转自:http://www.cnblogs.com/xlturing/p/spark.html 前言 在使用Spark Streaming的过程中对于计算产生结果的进行持久化时,我们往往需要操作数据库,去统计或者改变一些值.最近一个实时消费者处理任务,在使用spark streaming进行实时的数据流处理时,我需要将计算好的数据更新到hbase和mysql中,所以本文对spark操作hbase和mysql的内容进行总结,并且对自己踩到的一些坑进行记录. Spark Streaming持久化设计

Ubuntu 16.04 安装Mysql 5.7 踩坑小记

title:Ubuntu 16.04 安装Mysql 5.7 踩坑小记 date: 2018.02.03 安装mysql sudo apt-get install mysql-server mysql-client 测试是否安装成功 sudo netstat -tap | grep mysql 相关操作 登录 mysql -uroot -p 检查MySQL服务器占用端口 netstat -nlt|grep 3306 检查MySQL服务器系统进程 ps -aux|grep mysql 查看数据库的

[转]Spark 踩坑记:数据库(Hbase+Mysql)

https://cloud.tencent.com/developer/article/1004820 Spark 踩坑记:数据库(Hbase+Mysql) 前言 在使用Spark Streaming的过程中对于计算产生结果的进行持久化时,我们往往需要操作数据库,去统计或者改变一些值. 最近一个实时消费者处理任务,在使用spark streaming进行实时的数据流处理时,我需要将计算好的数据更新到hbase和mysql中,所以本文对spark操作hbase和mysql的内容进行总结,并且对自己

MySQL 已有大数据量表进行分区踩坑

一.背景mysql 表中已有 4 亿数据,为提高查询效率,需创建分区,一开始计划是创建 HASH 分区,结果报错:ERROR 1659 (HY000): Field 'partno' is of a not allowed type for this type of partitioning1 查询得知报错原因,HASH 分区只支持数字分区,而我要分区的字段是 varchar 类型,故改用 KEY 分区二.解决 KEY 分区语句: alter table TABLENAME PARTITION

ASP.NET MVC升级到ASP.NET Core MVC踩坑小结

原文:ASP.NET MVC升级到ASP.NET Core MVC踩坑小结 写在前面 ASP.NET Core是微软新推出的支持跨平台.高性能.开源的开发框架,它的优势不必多说,因为已经说得太多了.当然,现在依然有着数量庞大的系统运行于.NET Framework上,由于有大量的Break Changes,很多项目项目团队也不敢贸然升级,其中的考量也不全部是技术原因,更多的可能还是业务推进因素. 小编自年前开始考虑升级一套电商系统,原先是基于.NET Framework 4.5的,打算直接升级到

.NET Core 从1.1升级到2.0记录(Cookie中间件踩坑)

.NET Core 2.0 新时代 万众瞩目的.NET Core 2.0终于发布了,原定于9.19的dotnetconf大会的发布时间大大提前了1个月,.NET Core 2.0/.NET Standard 2.0的正式发布是.NET 开源跨平台的一个重大里程碑. .NET Core 2.0 SDK下载地址:https://www.microsoft.com/net/download/core#/sdk Visual Studio 2017 15.3下载地址:https://www.visual