MySQL 5.6到5.7编译安装与升级教程
创始人
2025-01-10 22:26:24
0 次浏览
0 评论
Mysql5.6编译安装与升级到5.7手把手教学
本文介绍了MySQL5.6到MySQL5.7的编译、安装和升级的整个过程,旨在为用户提供操作指南。首先我们关注系统信息,确认我们使用的是Centos7.6操作系统,配置为4c4g,软件版本包括MySQL5.6.49(最新版本5.6)和MySQL5.7.9。
MySQL5.6.49编译耗时20分钟,MySQL5.7编译安装总共耗时29分钟。
通过替换bin目录中的二进制文件最终完成升级。
数据迁移方法取决于数据的大小。
您可以使用mysqldump备份导入和导出。
该操作必须在/usr/local/mysqltest目录下执行。
确保新创建的MySQL用户和组拥有此目录,并且它们所属的组设置为MySQL。
最终的目录结构应该如文中所述。
安装更新MySQL5.6源码时,首先下载源码包,然后运行安装命令。
此步骤可能需要安装所需的支持包、创建MySQL用户、解压包、编译、安装等操作。
如果出现编译错误,您需要检查是否缺少软件并下载并安装。
初始化MySQL时,请确保指定正确的MySQL基目录和数据目录。
连接MySQL5.6可以使用bin/mysql命令。
在此阶段可以更改密码。
在MySQL5.6中创建数据库和表并进行基本操作。
备份MySQL5.6数据,并为后续操作提供恢复选项。
MySQL5.7的升级过程包括编译构建MySQL5.7、初始化MySQL5.7、替换bin目录升级、设置数据目录和日志的区分、根据官方文档设置my.cnf文件。
在升级过程中,您需要注意一些重要事项,例如:示例包括更改YEAR(2)数据类型、更改处理时间格式、确保mysql.user表中的帐户行具有非空插件列值以及运行mysql_upgrade以检查兼容性。
升级方法有两种:一是使用原来的数据目录。
这包括停止MySQL5.6服务,替换二进制文件,重新启动MySQL5.7服务,以及运行mysql_upgrade命令加载备份文件,包括创建备份文件,停止MySQL5.6服务,替换二进制文件,启动MySQL5.7服务,重新加载备份文件,最后执行mysql_upgrade命令。
综上所述,手动编译、更新和执行步骤需要较长时间。
建议编写脚本,实现一键执行,提高效率。
总体而言,MySQL5.7的升级速度取决于数据大小和备份过程持续时间,总体升级速度更快。
故障分析|MySQL升级到8.0变慢问题分析
1.简介近日,客户将MySQLWeb环境版本从5.7.29升级到8.0.25后,业务请求出现查询缓慢的问题。更新完成后,短时间内慢查询数量增多,并对业务SQL进行聚合,直到为某条业务SQL对应的表添加索引后,问题得到解决。
值得注意的是,问题发生期间,服务器的系统负载、CPU利用率、磁盘I/O和网络流量均处于较低水平,表明硬件资源并未成为瓶颈。
2、原因分析通过分析监控脚本日志,发现问题根源在于sys.innodb_lock_waits视图引用的基表。
基表名与MySQL5.7中不同,其行为变化导致业务SQL在某些场景下挂起,导致查询缓慢。
经过测试,证实罪魁祸首是8.0版本中的performance_schema.data_locks表。
对比两个版本,performance_schema.data_locks表的前身information_schema.innodb_locks的行为有显着的不同,导致8.0版本数据量极大,阻塞了事务线程。
大数据量显着增加了从表中读取数据的时间,并且事务线程持有trx_sys->mutex互斥量的时间较长,进而阻碍了其他SQL的执行。
在MySQL中,所有涉及InnoDB的SQL都是在一个事务中执行的。
任何添加到全局事务列表中的事务都需要这个互斥体的保护,从而形成死锁。
3.测试并验证表t1分别在MySQL5.7和8.0环境中创建,事务隔离级别为READ-COMMITTED。
表结构与数据保持一致。
3.1测试MySQL5.7在session1中执行加锁全表的SQL,在session2中执行另一条SQL,等待获取锁。
查询session中的死锁情况3.调查结果表明交易之间存在死锁,这与官方文档的描述一致。
3.2测试MySQL8.0在会话1中执行对全表加锁的SQL,在会话2中执行另一条SQL,等待获取锁。
查询session中的死锁情况3.结果显示data_locks表记录了事务持有的锁以及已申请但未获取到的锁,与官方文档描述一致。
4、总结Performance_schema.data_locks表记录了所有事务持有的锁当某些不当的SQL操作导致锁记录数量异常增加时,表中的锁记录数量也会异常增加。
这会导致读表的线程长时间持有trx_sys->mutex互斥体,从而阻塞其他SQL的执行。
如果需要了解解锁锁的情况,可以查询performance_schema.data_lock_waits表。
FlinkCDC-Hudi:Mysql数据实时入湖全攻略一:Hudi快速部署
实时数据FlinkCDC-Hudi入湖指南###背景FlinkCDC是一个基于Flink开发的获取数据变化的组件,支持MySQL、PostgreSQL、mongoDB、TiDB、Oracle等数据库的同步。Hudi是一个流式数据湖平台,支持数据库和数据仓库直接集成,提供数据记录级别的增删改查,为数据实时实时集成提供下一代技术支持。
时光湖仓库。
本文将详细介绍如何使用FlinkCDC将MySQL数据同步到Hadoop/Hive,实现数据实时查询。
###系统环境配置-Flink:1.13.5-Hadoop:3.1.4-Hive:3.1.2-Hudi:release-0.10.1-MySQL:5.7.29-Java:1.8.0_181-Scala:2.11-Spark:3.1.2###Hudi源码编译-**下载源码及版本定制**:修改`hudi/pom.xml`中的hadoop和hive版本信息改为对应版本。
-**文件修改**:在`hudi/packaging/hudi-flink-bundle/pom.xml`中,根据Hive版本(1.x、2.x)修改`flink-bundle-shade-hive1`或`flink-bundle-shade-hive2`的版本号。
-**执行编译**:第一次编译大约需要1小时,下次编译大约需要15分钟。
使用“-Pspark2”和“-Pspark3.1.x”等参数来适应不同的Spark版本。
###编译异常处理-**编译失败**:由于测试模块`hudi-integ-test`中缺少依赖或符号,导致整个项目编译失败。
-**解决方案**:注释掉`hudi/pom.xml`中的测试模块,以避免编译该模块。
###编译结果-**主文件**:`hudi-flink-bundle_2.11-0.10.0.jar`用于Flink读写Hudi数据,`hudi-hadoop-mr-bundle-0.10。
0.jar``用于Hive读取Hudi数据。
###FlinkCDCCompilation-**下载并编译源码**:获取FlinkCDC相关文件。
-**编译结果**:生成的JAR文件用于MySQLCDC相关操作。
###Flink的配置和初始化-**修改配置文件**:FLINK_HOME/conf下的配置文件。
-**启动yarnsession**:使用`flink-1.13.5$./bin/yarn-session.sh`命令启动,注意解决guava包版本不匹配导致的异常。
###MySQL环境搭建-**安装配置**:安装Mysql,配置my.cnf开启binlog,重启Mysql并配置账号。
-**创建测试环境**:创建库、表并准备数据。
###FlinkCDCsinkHudiTest-**DDLConfiguration**:查看和配置建表状态,参考MysqlCDCConnector官方文档。
-**验证与同步**:通过FlinkSQL客户端查询数据同步状态,将MySQLCdc表的数据同步到Hudi表,验证Hudi表的实时性能和数据同步机制。
###在Hive上验证Hudi表同步-**Hudi-HdfsSync**:通过HadoopwebUI检查数据同步状态。
-**Hive表验证**:通过Hive查询Hudi表,验证实时数据和查询性能,包括添加、删除、修改和查询操作的同步验证。
###总结本文介绍了使用FlinkCDC实现MySQL数据入湖实时输入到Hadoop/Hive的整个过程,包括环境配置、源码编译、Flink集群初始化、Mysql环境准备、数据同步测试和Hive表验证。
通过本文的指导,读者可以掌握FlinkCDC-Hudi-Hive实时数据仓库的搭建和使用,为接下来更复杂的应用场景提供基础支撑。
MySQL5.7升级8.0之前必须知道的几件事
1、为什么要升级到MySQL8.0?1、安全性随着黑客技术的不断发展,MySQL5.7的安全性也面临着不断的挑战。MySQL8.0升级可以消除已知的安全漏洞,并提供新的安全功能来保护用户数据安全。
2、性能随着数据量的增加,MySQL5.7的性能可能会遇到瓶颈。
将MySQL升级到8.0可以提高性能、加快查询速度、提高数据处理能力。
3、功能MySQL的不断更新也意味着新功能的增加。
从MySQL5.7升级到8.0可以让用户获得新的功能和特性,改善用户体验。
4.2023年10月停止支持MySQL5.7进行维护,如果您使用的是MySQL5.7,可能会错过技术支持。
因此,升级到最新版本的MySQL8.0可以提供更好的技术支持。
2.MySQL8.x升级到哪个版本?1、MySQL8.x分为创新版本和长期支持(LTS)版本。
创新版本和LTS版本均达到生产级别质量。
目前的MySQL8.0.x是LTS版本,最新版本是8.0.36,8.1.x、8.2.x和8.3.x都是创新版本。
2.根据最新的MySQL版本控制模型,大约每2年,一个次要版本将被指定为长期支持版本。
此版本将提供5年优先支持和3年扩展支持。
也就是说,按照目前的版本来看,MySQL8.1.0、8.2.0和8.3.0都是创新版本。
大约一年后,MySQL8.x的某个版本最终将被指定为LTS版本。
这主要是为了让用户有足够的时间从8.0.x迁移到8.xLTS,而原来的LTS8.0.x也将于2026年4月结束8.0生命周期(EOL)。
3、根据目前已有的版本,如果您想使用MySQL数据库的最新功能、改进和所有错误修复,请升级到创新版本,例如如8.1.x、8.2.x、8.3.x等如果您只需要修复MySQL数据库中的错误或安全漏洞,请使用版本8.0.x,例如8.0.34、8.0.35、8.0.36等。
3、MySQL8.0.x哪个版本适合?没有特殊情况。
当然,最好选择最新版本的MySQL8.0.x。
打开MySQL官网,你会发现有很多版本,最新版本是8.0.36。
通常生产环境使用二进制包安装MySQL5.7,例如:mysql-5.7.29-linux-glibc2.12-x86_64.tar.gz。
如果要升级到8.0版本,建议选择与当前版本的MySQL5.7二进制包一致的8.0安装包,例如:mysql-8.0.36-linux-glibc2.12-x86_64.tar。
xz。
。
对比这两个安装包,一个是tar.gz,一个是tar.xz。
区别在于压缩算法和压缩比。
一般来说,xz算法比gzip算法效率更高,可以实现。
更高的压缩率。
速率更小,压缩包更小。
至于tar.xz解压命令请自行百度。
另外,与5.7版本相比,8.0版本二进制安装程序包还包含两个额外的glibc版本,2.17和2.28,因为glibc版本都是向后兼容的,并且mysql-glibc-2.12版本也可以更新。
适用于Linuxglibc2.17和2.28,因此建议仅选择mysql-glibc-2.12。
最后,如果想查看操作系统的glibc版本,可以使用命令:getconf-a|grepglibc。
4、如何升级?升级前请详细阅读官方升级手册:dev.mysql.com/doc/refma...有几点需要注意:(1)MySQL5.7必须是GA版本5.7以上,否则升级到8.0。
。
(2)官方建议先升级到最新的小版本5.7,再升级到8.0。
(3)维护者不支持跨版本升级,即5.6版本不能直接升级到8.0版本。
(4)8.0的第一个GA版本是8.0.11。
从8.0小版本升级只能在GA版本之间进行,并且支持小版本之间的升级。
非GA版本不支持升级。
1、就地升级(1)由于大版本升级无法回滚,因此升级前必须对MySQL5.7进行备份。
(2)找到测试环境,先尝试就地升级,然后在开发的同时做业务测试和性能测试。
如果没有问题,则继续进行生产实施。
原地升级方法是用MySQL8.0的二进制文件替换my.cnf的basedir路径,然后调整一些参数来适应8.0,启动新数据库,然后运行升级程序更新元数据信息。
具体步骤请读者自行决定。
(3)生产环境实现时,建议先升级备库,连接主从复制并检查(有时可以连接),但可能无法正常复制(需要分析根据错误情况),然后使用高可用工具切换到备用数据库,然后升级后端数据库一次检查功能商业和改进的性能。
好的,所以风险较低。
2.迁移和升级(1)为MySQL8.0创建一个新的测试环境,在开发的同时进行商业测试和性能测试,一旦准备就绪,就可以转移到生产实施。
(2)生产环境实施时,首先使用实时数据同步工具将数据迁移到8.0版本,然后找低峰期替换源数据,如果适用的话,再反向增量同步到5.7版本。
除了一个例外,它可以随着时间的推移而恢复。
3.在完成升级之前,您必须先阅读官方升级文档,了解8.0版本的新功能以及与5.7版本的差异。
对比这两种升级方式,我个人更喜欢迁移和升级。
即使使用更多的物质资源,风险也更可控。
关于就地升级,由于8.0版本变化较大,可能会出现各种未知的升级错误,回滚也比较麻烦。
适合资源有限、数据量较小的企业图书馆转型升级。
业务数据量较大,比较重要,建议迁移升级。
相关文章
MySQL数据库名修改指南:三种方法轻松...
2024-12-17 12:34:22Oracle一键删除所有表的三种方法及P...
2024-12-31 00:30:56SQL截取特定字符前后数据技巧解析
2024-12-30 14:39:43全面解析:开源数据库种类及应用特点
2024-12-19 10:48:41MySQL联合索引创建指南:提升查询效率...
2024-12-27 04:08:30SQL全外连接查询:两表数据匹配与差异分...
2025-01-01 17:35:27Python列表比较大小:元素比较与内存...
2024-12-27 15:33:42MySQL默认密码设置与修改指南
2024-12-25 12:52:58SQL数据库删除数据恢复攻略:不备份也能...
2024-12-16 02:09:24掌握SQL CREATE TABLE语法...
2024-12-18 02:34:47最新文章
12
2025-01
12
2025-01
12
2025-01
12
2025-01
12
2025-01
12
2025-01
12
2025-01
12
2025-01
12
2025-01
12
2025-01
热门文章
1
Python代码实现:如何判断三角形的三...
python三角形三条边长,判断能否构成三角形Python三角形的三个长边如下:...
2
高效掌握:CMD命令轻松启动、关闭及登录...
如何用cmd命令快速启动和关闭mysql数据库服务开发中经常使用MySQL数据库...
3
SQL字段默认值设置全攻略:轻松实现自动...
sql如何设置字段默认值设置SQL中某个字段的默认值;需要遵循几个步骤。首先您需...
4
MySQL查询加速秘籍:PolarDB ...
mysql中in大量数据导致查询速度慢怎么优化?在MySQL中处理大量数据时,查...
5
SQL2000数据库备份压缩技巧:优化空...
怎么将SQL2000中的较大的备份数据库压缩变小更改数据库属性-选项-恢复模型很...
6
SQL字符串处理技巧:单引号使用与转义标...
SQL语句中,字符串类型的值均使用什么符号标明?单引号如果字符串内有单引号,请小...
7
Windows环境下Redis安装指南与...
redis安装windowsredis基本简介与安装安装Redis首先需要获取安...
8
深度解析:Redis性能优势与局限性,助...
redis有哪些优缺点?Redis的全称是RemoteDictionary.Se...
9
深入解析:MySQL数据库的特性与应用
mysql是什么MySQL是一个关系数据库管理系统。MySQL是一个开源关系数据...
10
Linux Redis操作指南:安装、配...
Linux系统进入redis并查询值1.进入redisredis-cli2.获取...