设为首页 收藏本站
查看: 596|回复: 0

[经验分享] mysql 升级和降级

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2016-11-28 10:36:26 | 显示全部楼层 |阅读模式
1 官方推荐的两种升级方式:
in-place upgrade
logical upgrade

2 升级之前:
备份所有数据库,包括系统库mysql
[iyunv@Darren1 ~]# mysqldump -uroot -p147258 -A -B  -F --master-data=2 --events --single-transaction>/tmp/mysqlall.bak
下载5.7.16二进制包,上传解压到/opt/mysql/目录下

3升级演示:5.7.14升级到5.7.16

方法一: in-place upgrade:
设置数据库关闭方式为slow方式,缓存中的数据在关闭之前全部落地:
[iyunv@Darren1 data]# mysql -uroot -p147258 -e 'set global innodb_fast_shutdown=0;'

停止数据库服务:
[iyunv@Darren1 data]# mysqladmin -uroot -p147258 shutdown

把之前5.7.14的软链接/usr/local/mysql删除,重新建立5.7.16软链接:
[iyunv@Darren1 local]# rm -rf /usr/local/mysql
[iyunv@Darren1 local]# ln -s /opt/mysql/mysql-5.7.16-linux-glibc2.5-x86_64 /usr/local/mysql

启动数据库服务:
[iyunv@Darren1 ~]# mysqld_safe --user=mysql --datadir=/data/mysql/mysql3306/data &

检查所有库中所有表的兼容性:
[iyunv@Darren2 data]# mysql_upgrade -uroot -p147258

检查结束后会在datadir目录下生成mysql_upgrade_info文件,记录了数据库版本。
停止数据库服务:
[iyunv@Darren1 data]# mysqladmin -uroot -p147258 shutdown

启动数据库服务:
[iyunv@Darren1 ~]# mysqld_safe --user=mysql --datadir=/data/mysql/mysql3306/data &
把启动5.7.16的启动脚本mysql.server复制到/etc/init.d/下,替代旧的mysqld.
[iyunv@Darren1 ~]# cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld


方法二:logical-upgrade

把mysql所有库导出来:
[iyunv@Darren1 local]# mysqldump -uroot -p --add-drop-table --routines --events --all-databases --force >/tmp/data-for-upgrade.sql

停数据库服务:
[iyunv@Darren1 local]# mysqladmin -uroot -p shutdown

创建新的目录存放5.7.16:
[iyunv@Darren1 ]# mkdir -p /data/mysql/mysql3307/{data,logs,tmp}
[iyunv@Darren1 data]# chown -R mysql:mysql /data/mysql/mysql3307

删除旧的软链接,重新创建软连接:
[iyunv@Darren1 mysql]# ln -s /opt/mysql/mysql-5.7.16-linux-glibc2.5-x86_64 /usr/local/mysql

复制新的配置文件,并修改端口号为3307:
[iyunv@Darren2 mysql3307]# cp /etc/my.cnf /data/mysql/mysql3307/my3307.cnf
[iyunv@Darren2 mysql3307]# sed -i 's#3306#3307#g' my3307.cnf

指定配置文件初始化:
[iyunv@Darren1 bin]# ./mysqld --initialize --defaults-file=/data/mysql/mysql3307/my3307.cnf

查看错误日志,找到密码:
[iyunv@Darren1 bin]# cat /data/mysql/mysql3307/data/error.log |grep password
2016-11-24T14:35:59.219125Z 1 [Note] A temporary password is generated for root@localhost: kU+Ve&lo6a/j

指定3307配置文件,启动数据库服务:
[iyunv@Darren1 bin]# ./mysqld_safe --defaults-file=/data/mysql/mysql3307/my3307.cnf &

指定sock文件登陆,输入前面查看的密码:
[iyunv@Darren1 bin]# mysql -uroot -p -S /tmp/mysql3307.sock
Enter password:   

重新修改密码:
mysql>alter user user() identified by '147258';

导入之前备份数据:
[iyunv@Darren1 bin]# mysql -uroot -p -S /tmp/mysql3307.sock --force </tmp/data-for-upgrade.sql   

检查兼容性:
[iyunv@Darren1 bin]# mysql_upgrade -uroot -p -S /tmp/mysql3307.sock

关闭服务器:
[iyunv@Darren1 bin]# mysqladmin -uroot -p shutdown -S /tmp/mysql3307.sock
用5.7.16二进制包重新建立3307实例,把旧的5.7.14版本的3306实例数据导出,然后导入3307实例中,测试3307实例确保没有问题,然后删除3306实例,把3307实例端口改为3306.

4 降级演示:5.7.16降级5.7.14

方法一:in-place downgrade

设置数据库关闭方式:
[iyunv@Darren1 local]# mysql -uroot -p -e 'set global innodb_fast_shutdown=0;'                       
停止数据库服务:
[iyunv@Darren1 local]# mysqladmin -uroot -p shutdown

删除redolog文件:
[iyunv@Darren1 data]# rm -rf /data/mysql/mysql3306/data/ib_logfile*

删除5.7.16软链接,并重新创建5.7.14软连接:
[iyunv@Darren1 local]# rm -rf /usr/local/mysql
[iyunv@Darren1 local]# ln -s /opt/mysql/mysql-5.7.14-linux-glibc2.5-x86_64 /usr/local/mysql

启动数据库服务:
[iyunv@Darren1 local]# mysqld_safe --user=mysql --datadir=/data/mysql/mysql3306/data &

降级检查:
[iyunv@Darren1 local]# mysql_upgrade -uroot -p

停止数据库服务,重新启动数据库服务:
[iyunv@Darren1 local]# mysqladmin -uroot -p shutdown
[iyunv@Darren1 local]# mysqld_safe --user=mysql --datadir=/data/mysql/mysql3306/data &


方法二:logical downgrade

备份降级前的所有库和表:
[iyunv@Darren1 ~]# mysqldump -uroot -p147258 --add-drop-table --routines --events --all-databases --force> /tmp/data-for-downgrade.sql
初始化:
[iyunv@Darren1 bin]# ./mysqld --defaults-file=/data/mysql/mysql3307/my3307.cnf --initialize
[iyunv@Darren1 bin]# ./mysqld_safe --defaults-file=/data/mysql/mysql3307/my3307.cnf &
[iyunv@Darren1 bin]# mysql -uroot -p -S /tmp/mysql3307.sock
mysql>alter user user() identified by '147258';
[iyunv@Darren1 bin]# ./mysql -uroot -p147258 -S /tmp/mysql3307.sock</tmp/data-for-downgrade.sql
[iyunv@Darren1 bin]# ./mysql_upgrade -uroot -p147258 --skip-version-check -S /tmp/mysql3307.sock
以上步骤,部分省略,可参考5.7官方文档。



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-306576-1-1.html 上篇帖子: MySQL多表更新 下篇帖子: mysql5.6升级到5.7的注意事项 mysql
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表