当前位置: 首页 > article >正文

告别apt install:手动编译安装MySQL 5.7在Ubuntu上的完整配置与性能调优

告别apt install手动编译安装MySQL 5.7在Ubuntu上的完整配置与性能调优在数据库管理的世界里预编译的二进制包虽然方便却像是一套现成的西装——永远无法完美贴合你的身形。对于追求极致性能和控制力的开发者或DBA来说手动编译安装MySQL就像定制高级西装每一针每一线都可以按照你的需求调整。本文将带你深入MySQL 5.7的源码编译世界从环境准备到性能调优打造一个专属于你的高性能数据库系统。1. 环境准备与依赖安装编译MySQL 5.7需要一套完整的构建环境。与简单的apt install不同我们需要精心准备编译工具链和各类依赖库。首先确保你的Ubuntu系统已经更新到最新状态sudo apt update sudo apt upgrade -y接下来安装编译必需的工具和库sudo apt install -y build-essential cmake libncurses5-dev libssl-dev \ libreadline-dev zlib1g-dev libbz2-dev liblzma-dev libsnappy-dev \ libboost-all-dev pkg-config这些依赖包各自承担着重要角色build-essential包含GCC编译器等基础构建工具cmakeMySQL 5.7使用的构建系统libncurses5-dev终端处理库libssl-devSSL加密支持libboost-all-devBoost库MySQL部分组件依赖提示如果你计划启用特定存储引擎如TokuDB还需要额外安装相应的依赖库。2. 源码获取与CMake配置从MySQL官网获取源码包时建议选择Generic Linux版本而非特定发行版的包wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.42.tar.gz tar -xzvf mysql-5.7.42.tar.gz cd mysql-5.7.42CMake配置是编译安装中最关键的环节它决定了MySQL的编译特性和安装位置。以下是一个兼顾性能和灵活性的配置示例mkdir build cd build cmake .. -DCMAKE_INSTALL_PREFIX/usr/local/mysql \ -DMYSQL_DATADIR/data/mysql \ -DSYSCONFDIR/etc \ -DWITH_INNOBASE_STORAGE_ENGINE1 \ -DWITH_ARCHIVE_STORAGE_ENGINE1 \ -DWITH_BLACKHOLE_STORAGE_ENGINE1 \ -DWITH_READLINE1 \ -DWITH_SSLsystem \ -DWITH_ZLIBsystem \ -DWITH_LIBWRAP0 \ -DENABLED_LOCAL_INFILE1 \ -DMYSQL_UNIX_ADDR/tmp/mysql.sock \ -DDEFAULT_CHARSETutf8mb4 \ -DDEFAULT_COLLATIONutf8mb4_general_ci \ -DWITH_DEBUG0 \ -DWITH_BOOST../boost关键参数说明参数说明推荐值CMAKE_INSTALL_PREFIX安装目录/usr/local/mysqlMYSQL_DATADIR数据存储目录/data/mysqlWITH_INNOBASE_STORAGE_ENGINE启用InnoDB引擎1WITH_SSLSSL支持systemDEFAULT_CHARSET默认字符集utf8mb4注意根据你的服务器配置可以调整线程库-DWITH_THREAD和内存分配器-DWITH_JEMALLOC等参数以获得更好的性能。3. 编译与安装配置完成后就可以开始编译了。根据你的CPU核心数调整并行编译参数make -j$(nproc)编译过程可能需要30分钟到数小时不等取决于你的硬件配置。完成后进行安装sudo make install安装完成后需要设置MySQL的系统用户和权限sudo groupadd mysql sudo useradd -r -g mysql -s /bin/false mysql sudo mkdir -p /data/mysql sudo chown -R mysql:mysql /data/mysql4. 初始化数据库与安全配置MySQL提供了一个特殊的脚本mysql_install_db来初始化数据目录cd /usr/local/mysql sudo bin/mysqld --initialize-insecure --usermysql --basedir/usr/local/mysql --datadir/data/mysql安全提示生产环境应该使用--initialize而非--initialize-insecure这样会生成随机root密码。创建systemd服务文件以便管理MySQL服务sudo tee /etc/systemd/system/mysql.service EOF [Unit] DescriptionMySQL Server Afternetwork.target [Service] Usermysql Groupmysql ExecStart/usr/local/mysql/bin/mysqld --basedir/usr/local/mysql --datadir/data/mysql --plugin-dir/usr/local/mysql/lib/plugin --log-error/var/log/mysql/error.log --pid-file/var/run/mysql/mysql.pid --socket/tmp/mysql.sock ExecReload/bin/kill -HUP \$MAINPID Restartalways [Install] WantedBymulti-user.target EOF启用并启动MySQL服务sudo systemctl daemon-reload sudo systemctl enable mysql sudo systemctl start mysql5. 性能调优与配置优化编译安装的最大优势在于可以根据硬件特性进行深度优化。以下是几个关键的调优方向5.1 InnoDB缓冲池配置编辑MySQL配置文件/etc/my.cnf添加以下内容[mysqld] innodb_buffer_pool_size 12G # 通常设置为可用内存的50-70% innodb_buffer_pool_instances 8 # 每个实例至少1GB innodb_log_file_size 2G innodb_flush_log_at_trx_commit 1 innodb_flush_method O_DIRECT innodb_read_io_threads 16 innodb_write_io_threads 165.2 查询缓存与连接优化query_cache_type 0 # MySQL 5.7中查询缓存通常弊大于利 query_cache_size 0 max_connections 500 thread_cache_size 100 table_open_cache 40005.3 操作系统级优化除了MySQL配置还需要调整一些系统参数echo vm.swappiness 1 | sudo tee -a /etc/sysctl.conf echo vm.dirty_ratio 10 | sudo tee -a /etc/sysctl.conf echo vm.dirty_background_ratio 5 | sudo tee -a /etc/sysctl.conf sudo sysctl -p6. 安全加固与日常维护编译安装的MySQL默认安全配置较少需要手动加固/usr/local/mysql/bin/mysql_secure_installation设置定期维护任务如备份和日志轮转sudo tee /etc/logrotate.d/mysql EOF /data/mysql/*.log { daily rotate 30 missingok compress delaycompress notifempty create 640 mysql mysql sharedscripts postrotate /usr/bin/test -x /usr/local/mysql/bin/mysqladmin || exit 0 /usr/local/mysql/bin/mysqladmin flush-logs endscript } EOF在实际生产环境中我们遇到过编译参数不当导致性能下降30%的情况也见证过合理调优后QPS提升两倍的案例。记住每个数据库环境都是独特的最好的配置永远是经过充分测试后确定的那个。

相关文章:

告别apt install:手动编译安装MySQL 5.7在Ubuntu上的完整配置与性能调优

告别apt install:手动编译安装MySQL 5.7在Ubuntu上的完整配置与性能调优 在数据库管理的世界里,预编译的二进制包虽然方便,却像是一套现成的西装——永远无法完美贴合你的身形。对于追求极致性能和控制力的开发者或DBA来说,手动编…...

小说下载器:一键保存200+网站小说,打造永不消失的个人数字图书馆

小说下载器:一键保存200网站小说,打造永不消失的个人数字图书馆 【免费下载链接】novel-downloader 一个可扩展的通用型小说下载器。 项目地址: https://gitcode.com/gh_mirrors/no/novel-downloader 在数字阅读时代,你是否曾经历过心…...

别再用pip直接装了!用Anaconda给LabelImg创建专属虚拟环境,告别闪退和版本冲突

别再用pip直接装了!用Anaconda给LabelImg创建专属虚拟环境,告别闪退和版本冲突 如果你曾经在安装LabelImg时遇到过闪退、报错或者莫名其妙的版本冲突,这篇文章就是为你准备的。作为一个长期与Python环境打交道的开发者,我深刻理解…...

3步构建:用Finnhub Python打造专业金融数据系统

3步构建:用Finnhub Python打造专业金融数据系统 【免费下载链接】finnhub-python Finnhub Python API Client. Finnhub API provides institutional-grade financial data to investors, fintech startups and investment firms. We support real-time stock price,…...

中兴光猫配置解密工具实战指南:企业级网络设备安全配置深度解析

中兴光猫配置解密工具实战指南:企业级网络设备安全配置深度解析 【免费下载链接】ZET-Optical-Network-Terminal-Decoder 项目地址: https://gitcode.com/gh_mirrors/ze/ZET-Optical-Network-Terminal-Decoder ZET-Optical-Network-Terminal-Decoder 是一款…...

盟接之桥®电子数据交换EDI,如何用一套“数字桥梁”,让全球巨头主动为你敞开大门?

在全球经济一体化的宏大叙事下,中国制造业正站在历史的十字路口。从“中国制造”到“中国智造”,这不仅仅是称谓的更迭,更是产业链地位的跃迁。然而,在这条通往全球价值链高端的道路上,无数制造企业面临着同一个隐秘而…...

安卓15分享Wi-Fi二维码能换颜色吗?自定义颜色方法

在安卓15系统中,通过“附近分享”或“快速分享”功能来共享Wi-Fi密码变得非常方便,只需一个二维码就能让朋友轻松连接。系统生成的二维码界面通常会自动匹配你的手机主题色,看起来挺美观。但很多用户想知道:我能自己定义这个二维码…...

CH58x蓝牙芯片DataFlash读写避坑指南:从字节到扇区的正确操作姿势

CH58x蓝牙芯片DataFlash读写避坑指南:从字节到扇区的正确操作姿势 在嵌入式开发中,DataFlash的高效管理一直是工程师面临的挑战之一。沁恒CH58x系列蓝牙芯片凭借其优异的性能和丰富的功能,在蓝牙Mesh领域广受欢迎。然而,其DataFl…...

从拖拉机到挖掘机:聊聊J1939协议在非道路机械里的那些‘方言’和实战配置

从拖拉机到挖掘机:J1939协议在非道路机械中的差异化实践与兼容性解决方案 当一台约翰迪尔拖拉机的发动机控制模块向液压系统发送扭矩请求时,卡特彼勒挖掘机的控制单元可能完全无法理解这条看似标准的J1939报文。这不是协议本身的缺陷,而是重型…...

SAML2.0实战避坑:从HTTP Redirect到Artifact Binding,三种通信绑定方式怎么选?

SAML2.0绑定方式深度解析:从技术原理到企业级选型实战 当企业IT架构师在设计单点登录系统时,总会遇到一个关键决策点:如何选择SAML协议的通信绑定方式?这个问题看似简单,实则牵一发而动全身。我曾见证过某金融机构因为…...

从“翻车”到“神图”:我的Stable Diffusion提示词避坑与调优笔记(附Lora使用心得)

从“翻车”到“神图”:我的Stable Diffusion提示词避坑与调优笔记 深夜三点,屏幕上的AI少女长着七根手指,背景里漂浮着半截手臂——这已经是我今晚第十七张“恐怖片剧照”了。作为从MidJourney转战Stable Diffusion的老玩家,我经历…...

容器存储容量告急?Docker 27.2正式支持Runtime-Driven Volume Resize——这是你最后掌握自动弹性伸缩能力的机会

第一章:容器存储容量告急?Docker 27.2正式支持Runtime-Driven Volume Resize——这是你最后掌握自动弹性伸缩能力的机会Docker 27.2 是首个将卷(Volume)运行时动态扩容能力下沉至 containerd shim 层的稳定版本。无需重启容器、无…...

别再只关心压差了!手把手教你读懂LDO数据手册里的PSRR、噪声与环路稳定性

别再只关心压差了!手把手教你读懂LDO数据手册里的PSRR、噪声与环路稳定性 当你在为精密传感器挑选LDO时,是否曾被数据手册里PSRR曲线上的高频衰减困扰过?或是面对噪声频谱密度图表时无从下手?压差参数固然重要,但真正决…...

思源宋体TTF:零成本获取专业中文排版终极方案

思源宋体TTF:零成本获取专业中文排版终极方案 【免费下载链接】source-han-serif-ttf Source Han Serif TTF 项目地址: https://gitcode.com/gh_mirrors/so/source-han-serif-ttf 还在为中文设计项目的字体选择而苦恼吗?商业字体价格高昂&#xf…...

TBS1102B示波器测电压,这5个新手常踩的坑你避开了吗?(附正确设置流程)

TBS1102B示波器测电压:5个隐蔽陷阱与专业级解决方案 第一次接触泰克TBS1102B示波器时,我盯着屏幕上跳动的波形百思不得其解——明明按照说明书连接了电路,为什么测得的电压值与万用表相差30%?直到导师指出我忽略了探头的衰减比设置…...

从IFA到PIFA:揭秘天线小型化与抗干扰背后的结构演进

1. 从IFA到PIFA:天线小型化的技术革命 十年前我刚入行做手机天线设计时,IFA(倒F天线)还是行业标配。记得第一次调试2.4GHz WiFi天线,Smith圆图上那个疯狂跳动的阻抗点让我抓狂——频段边缘的匹配简直像在走钢丝。这种单…...

Cursor AI破解工具终极指南:免费解锁Pro功能的完整解决方案

Cursor AI破解工具终极指南:免费解锁Pro功能的完整解决方案 【免费下载链接】cursor-free-vip [Support 0.45](Multi Language 多语言)自动注册 Cursor Ai ,自动重置机器ID , 免费升级使用Pro 功能: Youve reached you…...

别再手动截图了!用Docker跑个Headless Chrome,Java代码5分钟搞定网页PDF生成

5分钟实现网页PDF自动化:基于DockerJava的无头浏览器实战方案 每次手动截图保存网页内容时,是否觉得这种重复操作既低效又容易出错?想象一下:凌晨三点系统自动将运营报告生成PDF归档,或是批量导出数百个产品页面的标准…...

别再傻傻分不清了!Unity里Animation和Animator到底怎么选?附DoTween插件对比

Unity动画系统深度对比:Animation、Animator与DoTween的实战选择指南 当Unity开发者面对动画需求时,常常陷入选择困境:是用简单的Animation组件快速实现,还是构建复杂的Animator状态机?第三方插件DoTween是否更适合当前…...

Laya导出的鸿蒙NEXT工程目录说明

文章目录结论顶层目录说明entry模块内部怎么理解src/main/module.json5 —— 类似Manifest.xmlsrc/main/resources/base/profile/main_pages.jsonsrc/main/ets/MainAbility/MainAbility.etssrc/main/ets/pages/Index.etssrc/main/ets/workers —— worker线程相关的代码src/mai…...

Steam成就管理器终极指南:5分钟掌握游戏成就管理技巧

Steam成就管理器终极指南:5分钟掌握游戏成就管理技巧 【免费下载链接】SteamAchievementManager A manager for game achievements in Steam. 项目地址: https://gitcode.com/gh_mirrors/st/SteamAchievementManager 如果你是一位Steam游戏玩家,是…...

3步掌握DeepL翻译插件,让跨语言浏览像母语阅读一样自然

3步掌握DeepL翻译插件,让跨语言浏览像母语阅读一样自然 【免费下载链接】deepl-chrome-extension A DeepL Translator Chrome extension 项目地址: https://gitcode.com/gh_mirrors/de/deepl-chrome-extension 在信息爆炸的全球化时代,语言障碍依…...

手把手教你用VMware Workstation 17 Pro安装华为openEuler 22.03 LTS(附UKUI桌面安装教程)

从零开始:在VMware Workstation 17 Pro上部署openEuler 22.03 LTS全攻略 最近在开发者圈子里,华为的openEuler操作系统引起了广泛关注。作为一款面向数字基础设施的开源操作系统,openEuler不仅支持多种处理器架构,还在云计算、大…...

逆向分析第一课:拆解Cheat Engine Tutorial,理解程序内存与汇编指令的互动

逆向工程入门:通过Cheat Engine Tutorial透视程序内存与汇编的奥秘 当第一次打开Cheat Engine时,许多用户会被其看似复杂的界面所震慑——十六进制数值、内存地址、汇编指令这些术语仿佛在构建一道技术壁垒。但正是这套工具,为我们打开了一扇…...

从GESP三级C++考题到实战:手把手教你写一个密码强度检测器(附完整代码)

从GESP考题到工业级工具:用C构建智能密码强度检测系统 密码安全是数字世界的基石。想象一下,当你注册一个新服务时,系统如何判断你输入的密码是否足够强壮?这背后往往藏着一个精巧的密码检测逻辑。今天,我们就从GESP三…...

AI Agent Harness Engineering 与大模型微调:如何让智能体更适配特定行业场景

AI Agent Harness Engineering 与大模型微调:如何让智能体更适配金融、医疗等强约束特定行业场景第一部分:引言与基础 (Introduction & Foundation) 1. 引人注目的标题 主标题:AI Agent Harness Engineering 领域微调:破解强…...

局域网组网技术

与为了互联全球不同网络而设计的、复杂的OSI七层模型不同,局域网参考模型更专注于解决一个局部区域内的网络通信问题。因此,它的结构被大大简化了。下图清晰地展示了局域网参考模型与OSI模型的关系:一、设计思想:简化与专注局域网…...

Spring Boot Alibaba(三)----Sentinel

服务容错保护-Sentinel 一、 Sentinel 是个啥?为什么要用它? 1. 灵魂拷问:为什么要用? 想象一下这个场景: 上游服务(大哥)疯狂调用你的服务(小弟),你的服务又…...

别再手动记配置了!用这个批处理脚本,一键生成Windows10电脑的硬件信息报告

告别手动记录!全自动生成Windows10硬件报告的终极批处理方案 每次接手新电脑或排查故障时,你是否还在重复着"WinR→输入dxdiag→截图保存"的老套流程?IT运维工程师张伟曾用3小时手动记录50台办公设备的配置信息,直到他发…...

代码随想录—day11—栈与队列(part2)

题例:150. 逆波兰表达式求值 - 力扣(LeetCode) 给你一个字符串数组 tokens ,表示一个根据 逆波兰表示法 表示的算术表达式。 请你计算该表达式。返回一个表示表达式值的整数。 注意: 有效的算符为 、-、* 和 / 。每个操作数&a…...