mysql版本升级注意事项_MySQL 升级中注意事项

升级原因

超过产品生命周期,官方不在提供支持,但产品还在不段的迭代开发中

新版本有打的性能提升。 (5.6 = 3 * 5.5  /  5.7 = 2 * 5.6 / 5.8 更多功能 = 5.7 )

新版本的新功能毕竟吸引人,利于开发产品实现

操作系统升级,对某些版本不支持

MySQL提供的升级方式

In-place升级(mysql_upgrade)

使用于不夸大版本的升级,适合小版本间升级。  5.5 -> 5.6  /  5.6 -> 5.7

操作系统也需要一致

逻辑导出导入升级 (mysqldump, mydumper)

跨大版本的升级    5.5 -> 5.7

操作系统变更

字符集转换

In-place 升级(先从库,再主库)

1. cd /usr/local/

2. 关闭原来的版本

3. 冷copy datadir [占用时间比较多]

4. unlink mysql

5. ln -s /opt/mysql/mysql-new-verison /usr/local/mysql

6. /usr/local/mysql/bin/mysqld --defaults-file=/path/my_new.cnf  --skip-network --skip-grant-tables &

7. /usr/local/mysql/bin/mysql_upgrade -S /tmp/mysql.socket [这个过程时间也比较多,需要analyze table]

8. /usr/local/mysql/bin/mysqld --defaults-file=/path/my.cnf &

统计信息不准:

show processlist;  可能出现大量 state: static....

use xxx;  show tables status; 收集统计信息,可能会有效果。

如果还是不行,那就重启数据库。

mysql 表的统计信息自动收集:

1.MySQL启动

2.select * from information_schema.tables;

3. show table status;

4. 表修改超过 10%

逻辑导出导入升级

1.利用mysqldump ,mydumper 导出

2.mysqldump --master-data=2 --single-transaction=1  DbName > DbName_`date+%Y%m%d`.sql

3.利用新版本初始化环境

4.把备份SQL导入新库( mysql DbName

5.利用逻辑升级 > 用户迁移(pt-show-grants)

*************************************************

阅读一下新版本的 what‘s new change log

禁忌对生产中的主库直接做升级

升级优先从库升级

升级之前做基准测试

sysbench / pt-summary  /  zabbix

sysbench 基准测试脚本

1. bulk_insert.lua 批量写入操作

2. oltp_delete.lua 写入和删除并行操作

3. oltp_insert.lua 纯写入操作

4. oltp_point_select.lua 只读操作,条件为唯一索引列

5. oltp_read_only.lua 只读操作,包含聚合,去重等操作

6.oltp_read_write.lua 读写混合操作,最常用的脚本

7. oltp_update_index.lua 更新操作,通过主键进行更新

8. oltp_update_non_index.lua 更新操作,不通过索引列

9. oltp_write_only.lua  纯写操作,常用脚本,包括insert update, delete

10. select_random_points.lua  随机集合只读操作,常用脚本,聚集索引列的selete in 操作

11. select_random_ranges.lua 随机范围只读操作,常用脚本,聚集索引列的select between操作

生产中推荐方法

上生产前需要有两个报告 (老版本 vs 新版本 )

基准测试报告  (sysbench)

功能环境测试报告  (set global long_query_time = 0;  收集生产的sql,放到新版本跑一下,看看是否报错 )

升级顺序

先升级一个从库

给一个从库接入生产只读

对比新版本和老版本性能

从库全部升级到新版本

主库下线切换

新版本数据库添加参数,防止不兼容 :  binlog_checksum=none;  log_bin_user_v1_row_events=on/升级完off;

其他注意事项

大版本升级

只建议通过逻 辑升级

Innodb大版本

innodb_file_format: 5.7 Antepope / 8.0 Barracuda

create table tb1(xx) row_format = dynamic;

compact & redundant 特点: varchar, varbinary, blob, text 存储 768 bytes 在当前Page,其他存储在 overflow page

dynamic & compressed 对于 varchar, varbinary, blob, text 在当前Page只存储20 bytes 的之阵位,只想overflow page

字符集转换,gbk 转换成 utf8

导出sql ; iconv -f gbk -t utf8; 导入

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值