linux mysql5.5升级至mysql5.7的步骤与踩到的坑
linux mysql5.5升级至mysql5.7
下面先分享一个简单的升级mysql的步骤,后面猪先飞小编为大家整理了多个补充,大家可以参考一下。
1.下载mysql5.7.32
官方下载地址 https://dev.mysql.com/downloads/mysql/
解压
tar xvf mysql.tar.gz mysql/
2. 进入旧的mysql的bin目录下导出mysql的数据
./mysql -uroot -pxxxx -h127.0.0.1 -P3306 </home/mysql5.5/bin/all.sql
3. 进入新的mysql根目录下创建存放数据的data目录
mkdir data
4. 对于刚解压的新数据库,首先执行初始化命令
cd bin
./mysql_install_db --basedir=../ --datadir=../data
PS: 以上升级是在Cent OS上的,但是在中标麒麟我升级的时候,发现不认识上面的语句,需要替换成下面这个初始化语句
./mysqld --defaults-file=../my.cnf --basedir=../ --datadir=../data --user=root --initialize
5. 设置跳过密码登录
在my.cnf 中的[mysqld]中添加skip-grant-tables
my.cnf 为数据库的配置文件
6. 启动服务
./mysqld --defaults-file=../my.cnf --basedir=../ --datadir=../data --user=root
7. 设置密码
在新的命令行窗口登录mysql
./mysql -uroot
use mysql;
update mysql.user set authentication_string=password('xxxx') where user='root';
8. 停止服务
注释掉配置文件中的skip-grant-tables
9. 启动服务
./mysqld --defaults-file=../my.cnf --basedir=../ --datadir=../data --user=root
10. 新命令行登录
./mysql -uroot -pxxxx
use mysql;
这个时候:不管运行任何命令,总是提示这个 You must reset your password using ALTER USER statement before executing this statement.
这时执行下面的语句
SET PASSWORD = PASSWORD('xxxx');
11. 设置其他ip可以连接mysql
use mysql;
grant all privileges on *.* to "root"@"%" identified by "xxxx";
12. 导入历史数据
cd bin
./mysql -uroot -pxxxx -h127.0.0.1 -P3306 </home/mysql5.5/bin/all.sql
13. 执行更新
cd bin
./mysql_upgrade
14. 升级后可能出现查询语句出现报错的情况,可执行下面的语句
set @@sql_mode ='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';
set sql_mode ='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';
下面是其他网友的补充
MySQL从5.5升级到5.7
最近有个任务将MySQL从5.5版本升级到5.7,没升级过数据库,只能摸索的前进。上网找了一堆资料。目测看只有两种升级方式
1.升级方式
1.Logical Upgrade(逻辑升级):利用mysqldump来直接导出SQL文件,然后起一个新的MySQL5.7库,将导出的SQL文件导入到新库中,当然如果采用这种方式的话建议不要用mysqldump而使用mydumper.因为我们公司的数据量很大所以没有采用这个方法来处理。
2.In-Place Upgrade:这个升级方法简单快速,就是直接替换原来的MySQL的安装目录和/etc/my.cnf配置文件,利用mysql_upgrade脚本来完成系统表的升级。
2.环境介绍
我们的mysql集群采用的是Atlas读写分离,mysql-proxy下有4台数据库服务器:
master: 172.16.100.1
slave1:172.16.100.2
slave2:172.16.100.3
slave3:172.16.100.4
当前数据库版本:”5.5.21
配置文件:/etc/my.cnf
数据目录:/data/mysql
操作系统版本:CentOS6.9
3.升级思路
因为是线上业务不能中断,所以决定先将其中一台slave踢出集群,并升级到mysql5.7,然后再讲mysql5.7这台设备加入到集群当中,等数据同步完了再做主备切换,再升级其他的slave节点。
4.实在演练
4.1.登陆到mysql-proxy中将其中一台从库从集群中踢出
mysql -uuser -ppwd -h127.0.0.1 -P234
查看后端代理库
mysql> SELECT * FROM backends;
+-------------+-------------------+-------+------+ | backend_ndx | address | state | type | +-------------+-------------------+-------+------+ | 1 | 172.16.100.1:3306 | up | rw | | 2 | 172.16.100.2:3306 | up | ro | | 3 | 172.16.100.3:3306 | up | ro | | 4 | 172.16.100.4:3306 | up | ro | +-------------+-------------------+-------+------+
5 rows in set (0.00 sec)
将服务172.16.100.4从集群中踢出
mysql> remove backend 4
4.2.替换mysql的安装目录
到mysql的官网下载mysql5.7版本mysql-5.7.23-linux-glibc2.12-x86_64.tar.gz
解压mysql5.7
tar -zxf mysql-5.7.23-linux-glibc2.12-x86_64.tar.gz -C /usr/local/
如果你之前的mysql目录是链接的方式创建的话,那么只需要取消链接,从新做一下链接就可以了
cd /usr/local/
unlink mysql
ln -s mysql-5.7.23-linux-glibc2.12-x86_64 mysql
如果你之前的mysql目录不是链接的方式,那么重新命名一下,再链接一个mysql目录就可以了
cd /usr/local/
mv mysql mysql5.5
ln -s mysql-5.7.23-linux-glibc2.12-x86_64 mysql(建议尽可能的使用这种方式,比较方便升级)
4.3.启动mysql服务
mysql5.7以后是不需要进行数据库初始化的,也就是不用去执行mysql_install_db这个命令
/usr/local/mysql/bin/mysqld_safe --datadir=/data/mysql --basedir=/usr/local/mysql --user=mysql --skip-grant-tables --skip-networking &
ps -ef |grep mysql
如果有出息错误的话查看日志信息
4.4.升级系统表数据字典信息,命令如下:
/usr/loca/mysql/bin/mysql_upgrade
输出的结果:
可能会有一些error提示"ALTER TABLE ** FROCE",这些错误不用担心mysql在后面会自动修复repair的时间可能会有点长,要看你的数据库情况,我这次升级花了两个多小时
最后如果输出Upgrade process completed successfully那么就表示升级成功了。
4.5.升级完以后重启一下mysql
/usr/local/mysql/bin/mysqld_safe --datadir=/data/mysql --basedir=/usr/local/mysql --user=mysql &
查看一下是否升级完了,如果升级成功的话输出如下
This installation of MySQL is already upgraded to 5.7.23, use --force if you still need to run mysql_upgrade
4.6.重新做一下主从配置
重做一下主从配置
mysql> change master to master master_host="172.16.100.1",master_user="***",master_passowrd="***",master_log_file=" mysql-bin.000004", master_log_pos=1083;
mysql> start slave;
mysql> show slave status\G;
如果两个yes就说明正常了
4.7加入到读写分离的集群中
到mysql-proxy设备上面
mysql -uuser -ppwd -h127.0.0.1 -P234
mysql> ADD SLAVE 172.16.100.4
mysql> select * from backends;
如果state的状态是up的就说明加入集群成功了。
后记:
我第一次升级数据库,不知道整体思路对不对,先在测试环境上面做的测试,然后又测了几天没有问题了才在线上做的升级。仅供参考。
Mysql5.5升级到5.7的过程已经踩到的坑
故事是这样子的,我们公司有几台老的mysql版本是5.5的,最近项目做了一些升级增加了几个字段,用spring-data-jpa自动刷新表结构的时候报错了,原因是mysql5.5的版本不支持一张表里面有两个以上的 current_timestamp 作为default value。所以就要考虑升级下数据库
先到服务器上面看了下版本
再看了下源
哦,顺带提一句,我们公司在用的aws 的 ec2 ,所以都是amz的源
试了下 yum update mysql-server 然后并没什么卵用,所以继续往下搞。
网上看了好多都说是先把旧版本的数据库卸载了再用装新版本的数据库,那我的里面的数据咋办,为了保险起见,我先办数据库做了个备份,一个库一个库的备份,我看mysql库里面也配了好多用户和权限,就顺便也把mysql备份了,然后开搞。
1、卸载数据库
yum remove mysql-server
但是我们这边装的好像不太一样,我就把刚才yum查到的几个都卸载了。
卸载前记得把mysql服务关掉,要不然装新版本之后用mysql --version 查看是5.7 mysql 登录进去还是5.5然后重启服务就各种问题。因为有些文件没被删掉,导致新装的数据库好奇怪的样子。。。
2、安装新数据库
yum search mysql57
先看看有什么版本可以选,这个没啥说的直接
yum install msyql57-server.x86_64
安装下来就ok,来看看都装了些啥东西
很奇怪一点就是mysql-config依赖竟然还是5.5的,不过用起来没发现啥问题
3、配置
安装好了之后修改以下my.cnf
我的服务器上面是在/etc/my.cnf 不知道其它的镜像有没有变化
在配置的时候我突然想到数据存储的空间是还在的啊,配过去看看能用不
于是就在my.cnf配了这一行(5.5的好多配置都弃用了,之前的my.cnf里面的都要删一删要不然启动时会报错)
配置之后果断启动服务
service mysqld start
果然报错了
看了下启动日志
[ERROR] Fatal error: mysql.user table is damaged. Please run mysql_upgrade.
ERROR: Zend_Db_Adapter_Exception: SQLSTATE[HY000] [2002] No such file or directoryAdditionally, an exception has occurred while trying to report this error: Zend_ExceptionNo entry is registered for key 'translate' (Abstract.php:144)
卧槽,这咋办google一波 搜到了这篇文章https://support.plesk.com/hc/en-us/articles/115001659169-MySQL-fails-to-start-mysql-user-table-is-damaged
具体解决方法如下
a. 登录到那台服务器主机上面
b. Add skip-grant-tables in /etc/my.cnf
file under [mysqld]
section 意思就是开启安全模式(不验证密码什么的)
c. service mysqld start
d. mysql_upgrade
e. service mysqld restart
我执行了一下mysql_upgrade
查了查官方文档,大体意思就是升级之后好多东西不怎么兼容,官方提供这个脚本来修复之前的工作空间
果然是无缝升级mysql数据库中的用户都还在之前的数据库也没有受到影响
至此升级完成
到此这篇关于linux mysql5.5升级至mysql5.7的详细步骤的文章就介绍到这了,更多相关mysql5.5升级至5.7内容请搜索猪先飞以前的文章或继续浏览下面的相关文章希望大家以后多多支持猪先飞!
相关文章
- 这几天在centos下装mysql,这里记录一下安装的过程,方便以后查阅Mysql5.5.37安装需要cmake,5.6版本开始都需要cmake来编译,5.5以后的版本应该也要装这个。安装cmake复制代码 代码如下: [root@local ~]# wget http://www.cm...2015-03-15
- 这篇文章主要介绍了mysql5.7 设置远程访问的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-02-08
- 这篇文章主要为大家详细介绍了Win7下mysql5.5安装的图文教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2017-05-19
- 这篇文章主要为大家分享了win7下MySql 5.7安装配置方法图文教程,感兴趣的小伙伴们可以参考一下...2016-05-20
mysql 5.7.17 安装配置方法图文教程(windows10)
这篇文章主要为大家分享了mysql 5.7.17 安装配置方法图文教程,具有一定的参考价值,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2017-01-22- 这篇文章主要为大家详细介绍了Linux虚拟机下mysql 5.7安装配置方法图文教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2017-01-15
- 这篇文章主要为大家分享了mysql5.7.11 winx64安装配置方法图文教程,感兴趣的朋友可以参考一下...2016-07-25
- 这篇文章主要为大家详细介绍了mysql5.7.17 zip 解压安装详细过程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2017-02-19
- 这篇文章主要为大家详细介绍了mysql 5.7.17 64bit解压缩版安装配置方法图文教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2017-01-15
- 这篇文章主要为大家分享了mysql 5.7.15安装配置方法图文教程,感兴趣的朋友可以参考一下...2016-10-02
- 这篇文章主要为大家详细介绍了Windows下php+mysql5.7配置教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 WINDOWS 下 PHP+MYSQL配置下载mysql地址:https://d...2017-07-06
windows2008 64位系统下MySQL 5.7绿色版的安装教程
这篇文章主要给大家分享了在windows2008 64位系统下MySQL 5.7绿色版的安装教程,文中将安装步骤介绍的非常详细,相信会对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起看看吧。...2017-05-19- 本文给大家分享一个快速且简单的方法来解决Mysql5.7忘记root密码问题,非常不错,具有参考借鉴价值,需要的朋友参考下吧...2017-02-19
mysql 5.7.17 免安装版配置方法图文教程(windows10)
这篇文章主要为大家详细介绍了windows10下mysql 5.7.17 免安装版配置方法图文教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2017-01-22解析windows下使用命令的方式安装mysql5.7的方法
这篇文章主要介绍了windows下使用命令的方式安装mysql5.7的方法,本文图文并茂给大家介绍的非常详细,需要的朋友可以参考下...2017-01-15mysql 5.7.13 winx64安装配置方法图文教程(win10)
这篇文章主要为大家分享了mysql 5.7.13 winx64安装配置方法图文教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2017-01-22CentOS7.5使用mysql_multi方式安装MySQL5.7.28多实例(详解)
这篇文章主要介绍了CentOS7.5使用mysql_multi方式安装MySQL5.7.28多实例,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下...2021-01-15mysql 5.7.16 安装配置方法图文教程(ubuntu 16.04)
这篇文章主要为大家分享了ubuntu 16.04下mysql 5.7.16 安装配置方法图文教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2017-01-26- 这篇文章主要介绍了Mysql5升级到Mysql5.5的方法的相关资料,需要的朋友可以参考下...2016-01-29
- 因为长时间不操作mysql而忘记root密码的朋友估计不在少数,最近发现在MySQL 5.7版本下用之前的方法修改密码不能成功了,所以只能重新想办法解决,下面这篇文章主要给大家介绍了MySQL 5.7忘记root密码后修改的详细教程,需要的朋友可以参考。...2017-05-19