升级的方法一般有两类: 1.利用mysqldump来直接导出sql文件,导入到新库中,这种方法是最省事也最保险缺点:大库的mysqldump费时费力。2.直接替换掉 mysql 的安装目录和 my.cnf,利用 mysql_upgrade 来完成系统表的升级,这种方法需要备份原有的文件,但属于物理拷贝,速度较快。缺点:跨版本升级不推荐这么做,比如mysql5.1升级到mysql5.6,mysql5.5升级到mysql5.7等。本文采用的是第二种方法升级。本文两种方法都用到旧版本 mysql5.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: 本文并不打算把整个升级过程的步骤详细列出(被吐槽文章累赘就不好了,网上升级文章还是一大堆的),只列出关键点、报错问题解决,及一些个人新发现 ^__^新版本 mysql5.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/tmp2、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、将旧版本的数据库及相关表导入到新版mysqlmysqldump并不能导 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.sockzabbix 和 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(旧版本先备份)即可

更多相关文章

  1. Django JavaScript翻译空目录(i18n / jsi18n)
  2. 更简单的方法来启用详细日志记录
  3. 解决Linux下运行Python脚本显示“: 没有那个文件或目录”的问题
  4. 日志与python日志组件logging
  5. win8.1 cygwin - pip正在安装到windows python目录中吗?
  6. py2exe使用相对路径的当前目录问题
  7. Python学习日志_2017/09/08
  8. python 之 logger日志 字典配置文件
  9. 【Python】logging结合decorator模式实优化日志输出

随机推荐

  1. Android(安卓)NDK开发配置NDK
  2. Android 获取wifi信号强度
  3. Android boot sequence (ANDROID-LEVEL :
  4. android > TimePicker 时间设置控件
  5. android电话拦截及短信过滤
  6. android edittext 不自动获取焦点
  7. Android警告错误搜集
  8. Android实现拍照功能实例
  9. Android Button按钮两个页面切换
  10. Android中ContentProvider和Uri用法