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

MySQL企业常见架构与调优经验分享

文章目录

  • 一、选择 PerconaServer、MariaDB 还是 MYSQL
  • 二、常用的 MYSQL 调优策略
  • 三、MYSOL 常见的应用架构分享
  • 四、MYSOL 经典应用架构

观看学习课程的笔记,分享于此~
课程:MySQL企业常见架构与调优经验分享
mysql官方优化文档
调优MySQL参数

一、选择 PerconaServer、MariaDB 还是 MYSQL

MySQL 提供了两种存储引擎:MyISAM和 InnoDB,MSQL4 和5使用默认的 MYISAM 存储引擎。从 MYSQL5.5 开始,MySQL 已将默认存储引擎从 MyISAM 更改为 InnoDB。MyISAM 没有提供事务支持,而InnoDB 提供了事务支持。MyISAM是传统型的存储引擎,最大的缺点就是不支持事务,所谓事务,就是与业务相关的,数据进行读写的时候有个锁机制,这个锁只能等另外一个操作或事务完成之后释放这么个锁,正因为不支持事务,所以在读写方面性能稍微好一点,InnoDB 可以做回滚操作,安全方面相对稍微好一点。
XtraDB 是 InnoDB 存储引擎的增强版本,被设计用来更好的使用更新计算机硬件系统的性能,同时还包含有一些在高性能环境下的新特性。
● 2、Percona Server分支
PerconaServer 由领先的 MYSQL 咨询公司 Percona 发布。Perconaserver 是一款独立的数据库产品,其可以完全与 MQL 兼容,可以在不更改代码的情况了下将存储引擎更换成XtraDB。是最接近官方 MySQLEnterprise 发行版的版本。Percona 提供了高性能 XtraD8 引擎,还提供 PXC 高可用解决方案,并且附带了percona-toolkit 等 DBA 管理工具箱。
● 3、MariaDB
MariaDB 由 MQL的创始人开发,MariaDB的目的是完全兼容 MySQL,包括 API和命令行,使之能轻松成为 MySOL 的代替品。
MariaDB 提供了 MyQL 提供的标准存储引擎,即 MYSAM 和 InnoDB,10.0.9 版起使用XtraDB(名称代号为Aria)来代替MySQL的InnoDB。
● 4、如何选择
综合多年使用经验和性能对比,首选Percona 分支,其次是 MariaDB

二、常用的 MYSQL 调优策略

● 1、硬件层相关优化
修改服务器 BIOS 设置

  • 选择 PerformancePerWattOptimized(DAPC)模式,发挥 CPU 最大性能。MemoryFrequency(内存频率)选择MaximumPerformance(最佳性能)内存设置菜单中,启用 NodeInterleaving,避免 NUMA 问题
    ● 2、磁盘 I/0 相关
    使用 SSD 硬盘
    如果是磁盘阵列存储,建议阵列卡同时配备 CACHE及 BBU 模块,可明显提升 IOPS。
    raid 级别尽量选择 raid10,而不是 raid5.
    ● 3、文件系统层优化
    使用 deadline/noop 这两种 I/0 调度器,千万别用 cfq
    使用 xs 文件系统,千万别用 ext3: ext4 勉强可用,但业务量很大的话,则一定要用 xfs;文件系统 mount 参数中增加:noatime,nodiratime,nobarrier几个选项(nobarrier是xfs文件系统特有的);
    ● 4、内核参数优化
  • 修改 vm.swappiness 参数,降低 swap 使用率。RHEL7/centos7 以上则慎重设置为 0,可能发生 OOM
  • 调整 vm.dirty badkground rato、vm.dirty_rato 内核参数,以确保能持续将脏数据刷新到磁盘,避免瞬间 I/0 写。产生等待。
  • 调整 netipv4.tcp tw_recyce、net.ipv4.tcp tw_reuse 都设置为 1,减少 TIME WAIT,提高 TCP 效率。
    ● 5、Mysql 参数优化建议
  • 建议设置 default-storage-engine=lnnoDB,强烈建议不要再使用 MyISAM 引擎。
  • 调整 innodb_buffer_pool_size的大小,如果是单实例且绝大多数是 InnoDB 引擎表的话,可考虑设置为物理内存的 50% -70%左右。
  • 设置 innodb_file_per_table=1,使用独立表空间。
  • 调整 innodb_data_file_path =ibdata1:1G:autoextend,不要用默认的 10M,在高并发场景下,性能会有很大提升。
  • 设置 innodb_log_file_size=256M,设置 innodb_log_files_in_group=2,基本可以满足大多数应用场景。
  • 调整 max_connection(最大连接数)、max_connection_error(最大错误数)设置,根据业务量大小进行设置。
  • 另外,open_files_limit、innodb_open_files、table_open_cache 、table_definition_cache可以设置大约为 max_connection 的 10 倍左右大小。
  • key_buffer_size 建议调小,32M 左右即可,另外建议关闭 queny cache。
  • mp_table_size 和 max_heap_table_size 设置不要过大,另外 sort_buffer_size、join_buffer_size、read_buffer_size、read _rnd_buffer_size 等设置也不要过大。

三、MYSOL 常见的应用架构分享

● 1、主从复制解决方案
这是 MySQL 自身提供的一种高可用解决方案,数据同步方法采用的是 MyQLreplicaton技术。MySQLrepication 就是从服务器到主服务器拉取二进制日志文件,然后再将日志文件解析成相应的 SQL 在从服务器上重新执行一遍主服务器的操作,通过这种方式保证数据的一致性。
为了达到更高的可用性,在实际的应用环境中,一般都是采用 MySQLreplication 技术配合高可用集群软件 keepalived 来实现自动 failover,这种方式可以实现 95.000%的 SLA。
在这里插入图片描述

● 2、MMM/MHA 高可用解决方案
MMM 提供了 MySQL主封复制配置的监控、故障转移和管理的一套可伸缩的脚本套件。
在 MMM 高可用方案中,典型的应用是双主多从架构,通过 MySQLreplication 技术可以实现两个服务器互为主从,且在任何时候只有一个节点可以被写入,避免了多点写入的数据冲突。同时,当可写的主节点故障时,MMM 套件可以立刻监控到,然后将服务自动切换到另一个主节点,继续提供服务,从而实现 MySQL的高可用。

在这里插入图片描述

● 3、Heartbeat/SAN 高可用解决方案
在这个方案中,处理 failover 的方式是高可用集群软件 Heartbeat,它监控和管理各个节点间连接的网络,并监控集群服务,当节点出现故障或者服务不可用时,自动在其他节点启动集群服务。在数据共享方面,通过 SAN(Storage AreaNetwork存储来共享数据,这种方案可以实现 99.990%的 SLA。
在这里插入图片描述

● 4、Heartbeat/DRBD 高可用解决方案
此方案处理failover 的方式上依旧采用 Heartbeat,不同的是,在数据共享方面,采用了基于块级别的数据同步软件 DRBD 来实现。DRBD 是一个用软件实现的、无共享的、服务器之间镜像块设备内容的存储复制解决方案。和 SAN 网络不同,它并不共享存储,而是通过服务器之间的网络复制数据。

在这里插入图片描述

四、MYSOL 经典应用架构

在这里插入图片描述
其中:
Dbm157是mysql 主,dbm158 是 mysql主的备机,dbs159/160/161 是 mysql 从。MySQL 写操作一般采用基于 heartbeat+DRBD+MySQL 搭建高可用集群的方案。通过 heartbeat实现对 mysql 主进行状态监测,而 DRBD 实现 dbm157 数据同步到 dbm158。

相关文章:

MySQL企业常见架构与调优经验分享

文章目录 一、选择 PerconaServer、MariaDB 还是 MYSQL二、常用的 MYSQL 调优策略三、MYSOL 常见的应用架构分享四、MYSOL 经典应用架构 观看学习课程的笔记,分享于此~ 课程:MySQL企业常见架构与调优经验分享 mysql官方优化文档 调优MySQL参数 一、选择 …...

C++引用类型变量

引用变量的主要用途是用作函数的形参。这样函数将使用原始数据,而不是副本。除指针之外,引用也为处理大型结构提供了一种非常方便的途径。 再C中使用&符号标识引用。也就是说C给&符号赋予了另一个含义,将其用来声明引用。 引用的声…...

《C++23 新特性:现代软件开发的变革力量》

在软件开发的快速演进中,C作为一种强大且广泛应用的编程语言,不断推陈出新以适应日益复杂的开发需求。C23 的到来,为现代软件开发带来了诸多新的机遇和挑战。它的新特性不仅影响着开发者的编程习惯,也在代码效率、可维护性以及软件…...

Educational Codeforces Round 88 E. Modular Stability

题目链接 Educational Codeforces Round 88 E. Modular Stability 思路 对于任意的非负整数 x x x&#xff0c;我们要满足 x % a % b x % b % a x \% a \% b x \% b \% a x%a%bx%b%a。因为 a < b a < b a<b&#xff0c;所以只有 b b b为 a a a的倍数时才满足条件…...

Android中SurfaceView与GLSurfaceView 的关系

SurfaceView 与 GLSurfaceView 的关系 在 Android 开发中&#xff0c;SurfaceView 和 GLSurfaceView 是实现自定义渲染效果的关键组件。它们提供了不同的渲染方式&#xff0c;适用于不同的应用场景。我们将通过以下几个方面详细说明 SurfaceView 和 GLSurfaceView 的特点及实现…...

numpy——数学运算

一、标量——矢量 import numpy as npa 3.14 b np.array([[9, 5], [2, 7]])print(a) print(b)# ---------- 四则运算 ---------- print(a b) # np.add print(a - b) # np.subtract print(a * b) # np.multiply print(a / b) # np.divide 二、矢量——矢量 import nump…...

【工具】Charles对360浏览器抓包抓包

Charles 和 switchy sharp 配合&#xff0c;可以对 Chrome 进行抓包也可以配合对360安全浏览器抓包。 本文以Windows 电脑中的配置为例&#xff0c;介绍如何实现抓包。&#xff08;Mac中操作基本一致&#xff09; 1.安装Charles 可根据自己的电脑下载对应的版本&#xff1a;…...

【HarmonyOS】判断应用是否已安装

【HarmonyOS】判断应用是否已安装 前言 在鸿蒙中判断应用是否已安全&#xff0c;只是通过包名是无法判断应用安装与否。在鸿蒙里新增了一种判断应用安装的工具方法&#xff0c;即&#xff1a;canOpenLink。 使用该工具函数的前提是&#xff0c;本应用配置了查询标签querySch…...

Qt Designer客户端安装和插件集(pyqt5和pyside2)

GitHub - PyQt5/QtDesignerPlugins: Qt Designer PluginsQt Designer Plugins. Contribute to PyQt5/QtDesignerPlugins development by creating an account on GitHub.https://github.com/PyQt5/QtDesignerPlugins 一、下载客户端 https://github.com/PyQt5/QtDesigner/rel…...

基于边缘计算的智能门禁系统架构设计分析

案例 阅读以下关于 Web 系统架构设计的叙述&#xff0c;回答问题1至问题3。 【说明】 某公司拟开发一套基于边缘计算的智能门禁系统&#xff0c;用于如园区、新零售、工业现场等存在来访被访业务的场景。来访者在来访前&#xff0c;可以通过线上提前预约的方式将自己的个人信息…...

鸿蒙实现相机拍照及相册选择照片

前言&#xff1a; 1.如果你的应用不是存储类型或者相机拍照类型&#xff0c;你就需要用 kit.CameraKit Api 实现相机拍照和相册选择照片功能&#xff0c;如果你不用这个的话&#xff0c;你使用 picker.PhotoViewPicker &#xff0c;你就需要申请权限&#xff0c;那你提交应用审…...

「C/C++」C++17 之 std::filesystem::recursive_directory_iterator 目录及子目录迭代器

✨博客主页何曾参静谧的博客&#x1f4cc;文章专栏「C/C」C/C程序设计&#x1f4da;全部专栏「VS」Visual Studio「C/C」C/C程序设计「UG/NX」BlockUI集合「Win」Windows程序设计「DSA」数据结构与算法「UG/NX」NX二次开发「QT」QT5程序设计「File」数据文件格式「PK」Parasoli…...

智能EDA小白从0开始 —— DAY30 冉谱微RFIC-GPT

在科技日新月异的今天&#xff0c;电子设计自动化&#xff08;EDA&#xff09;行业正以前所未有的速度推动着半导体产业的革新与发展&#xff0c;引领着全球电子产业迈向更加智能化、高效化的未来。作为EDA领域的佼佼者&#xff0c;冉谱公司始终站在技术创新的前沿&#xff0c;…...

Android -- 调用系统相册之图片裁剪保存

前言 最近线上反馈&#xff0c;部分vivo手机更换头像时调用系统相册保存图片失败&#xff0c;经本人测试&#xff0c;确实有问题。 经修复后&#xff0c;贴出这块的代码供小伙伴们参考使用。 功能 更换头像选择图片&#xff1a; 调用系统相机拍照&#xff0c;调用系统图片…...

读《道德经》让人感到心胸气闷?董仲舒篡改

为什么读《道德经》会让人感到心胸气闷&#xff1f;难道是董仲舒篡改所致&#xff1f; 作为世界智慧源头的《老子》&#xff0c;享誉古今中外&#xff0c;是世界历史上最伟大的著作之一。 然而&#xff0c;很多人读《道德经》时会感到心胸气闷&#xff0c;这究竟是为什么呢&am…...

D52【python 接口自动化学习】- python基础之模块与标准库

day52 标准库 学习日期&#xff1a;20241029 学习目标&#xff1a;模块与标准库 -- 67 标准库&#xff1a;Python默认提供的便携功能有哪些&#xff1f; 学习笔记 标准库中的常见组件 如何通过官方文档学习标准 from urllib.request import urlopen with urlopen(http://ww…...

基于yolov8的布匹缺陷检测系统,支持图像、视频和摄像实时检测【pytorch框架、python源码】

更多目标检测和图像分类识别项目可看我主页其他文章 功能演示&#xff1a; 基于yolov8的布匹缺陷检测系统&#xff0c;支持图像、视频和摄像实时检测【pytorch框架、python源码】_哔哩哔哩_bilibili &#xff08;一&#xff09;简介 基于yolov8的布匹缺陷检测系统是在 PyTo…...

SQL Server 中,将单行数据转换为多行数据

在 SQL Server 中&#xff0c;将单行数据转换为多行数据通常涉及到将某个字段中的逗号分隔的值拆分成多行。这种操作通常称为“拆分”或“展开”&#xff08;Explode&#xff09;。以下是一些常用的方法来实现这一目标&#xff1a; 1. 使用内置函数 STRING_SPLIT 从 SQL Serv…...

解决数组两数之和问题与逻辑推理找出谋杀案凶手

给定一个整数数组nums和一个整数目标值target(2<nums.length<10^4)&#xff0c;请你在该数组中找出和为目标值target 的那两个整数&#xff0c;并返回它们的数组下标。 你可以假设每种输入只会对应一个答案&#xff0c;并且你不能使用两次相同的元素。 你可以按任意顺序返…...

uniapp的IOS证书申请(测试和正式环境)及UDID配置流程

1.说明 本教程只提供uniapp在ios端的证书文件申请&#xff08;包含正式环境和开发环境&#xff09;、UDID配置说明&#xff0c;请勿用文档中的账号和其他隐私数据进行测试&#xff0c;请勿侵权&#xff01; 2.申请前准备 证书生成网站&#xff1a;苹果应用上传、解析&#x…...

iOS 26 携众系统重磅更新,但“苹果智能”仍与国行无缘

美国西海岸的夏天&#xff0c;再次被苹果点燃。一年一度的全球开发者大会 WWDC25 如期而至&#xff0c;这不仅是开发者的盛宴&#xff0c;更是全球数亿苹果用户翘首以盼的科技春晚。今年&#xff0c;苹果依旧为我们带来了全家桶式的系统更新&#xff0c;包括 iOS 26、iPadOS 26…...

学校招生小程序源码介绍

基于ThinkPHPFastAdminUniApp开发的学校招生小程序源码&#xff0c;专为学校招生场景量身打造&#xff0c;功能实用且操作便捷。 从技术架构来看&#xff0c;ThinkPHP提供稳定可靠的后台服务&#xff0c;FastAdmin加速开发流程&#xff0c;UniApp则保障小程序在多端有良好的兼…...

MODBUS TCP转CANopen 技术赋能高效协同作业

在现代工业自动化领域&#xff0c;MODBUS TCP和CANopen两种通讯协议因其稳定性和高效性被广泛应用于各种设备和系统中。而随着科技的不断进步&#xff0c;这两种通讯协议也正在被逐步融合&#xff0c;形成了一种新型的通讯方式——开疆智能MODBUS TCP转CANopen网关KJ-TCPC-CANP…...

如何将联系人从 iPhone 转移到 Android

从 iPhone 换到 Android 手机时&#xff0c;你可能需要保留重要的数据&#xff0c;例如通讯录。好在&#xff0c;将通讯录从 iPhone 转移到 Android 手机非常简单&#xff0c;你可以从本文中学习 6 种可靠的方法&#xff0c;确保随时保持连接&#xff0c;不错过任何信息。 第 1…...

Psychopy音频的使用

Psychopy音频的使用 本文主要解决以下问题&#xff1a; 指定音频引擎与设备&#xff1b;播放音频文件 本文所使用的环境&#xff1a; Python3.10 numpy2.2.6 psychopy2025.1.1 psychtoolbox3.0.19.14 一、音频配置 Psychopy文档链接为Sound - for audio playback — Psy…...

Spring数据访问模块设计

前面我们已经完成了IoC和web模块的设计&#xff0c;聪明的码友立马就知道了&#xff0c;该到数据访问模块了&#xff0c;要不就这俩玩个6啊&#xff0c;查库势在必行&#xff0c;至此&#xff0c;它来了。 一、核心设计理念 1、痛点在哪 应用离不开数据&#xff08;数据库、No…...

使用 SymPy 进行向量和矩阵的高级操作

在科学计算和工程领域&#xff0c;向量和矩阵操作是解决问题的核心技能之一。Python 的 SymPy 库提供了强大的符号计算功能&#xff0c;能够高效地处理向量和矩阵的各种操作。本文将深入探讨如何使用 SymPy 进行向量和矩阵的创建、合并以及维度拓展等操作&#xff0c;并通过具体…...

html-<abbr> 缩写或首字母缩略词

定义与作用 <abbr> 标签用于表示缩写或首字母缩略词&#xff0c;它可以帮助用户更好地理解缩写的含义&#xff0c;尤其是对于那些不熟悉该缩写的用户。 title 属性的内容提供了缩写的详细说明。当用户将鼠标悬停在缩写上时&#xff0c;会显示一个提示框。 示例&#x…...

管理学院权限管理系统开发总结

文章目录 &#x1f393; 管理学院权限管理系统开发总结 - 现代化Web应用实践之路&#x1f4dd; 项目概述&#x1f3d7;️ 技术架构设计后端技术栈前端技术栈 &#x1f4a1; 核心功能特性1. 用户管理模块2. 权限管理系统3. 统计报表功能4. 用户体验优化 &#x1f5c4;️ 数据库设…...

Java求职者面试指南:Spring、Spring Boot、Spring MVC与MyBatis技术解析

Java求职者面试指南&#xff1a;Spring、Spring Boot、Spring MVC与MyBatis技术解析 一、第一轮基础概念问题 1. Spring框架的核心容器是什么&#xff1f;它的作用是什么&#xff1f; Spring框架的核心容器是IoC&#xff08;控制反转&#xff09;容器。它的主要作用是管理对…...