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

文章目录

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

观看学习课程的笔记,分享于此~
课程: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。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/896512.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于SSM的的水电管理系统

作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏:…

Keil8051 下载与安装

文章目录 下载方法(一)官网下载(二)百度网盘下载 安装步骤小技巧 下载方法 (一)官网下载 1,进入官网:https://www.keil.com/。 2,单击“download”按钮,进…

如何快速解决游戏提示系统中的emp.dll缺失问题

emp.dll是一个动态链接库(Dynamic Link Library, DLL)文件,这类文件在Windows操作系统中扮演着至关重要的角色。它们包含了可由多个程序同时使用的代码和数据,其主要目的是实现模块化,以便于程序的更新和动态链接。emp…

在VMware上创建虚拟机以及安装Linux操作系统,使用ssh进行远程连接VMware安装注意点 (包含 v1,v8两张网卡如果没有的解决办法)

一,VMware上创建虚拟机 1.VMware下载 1)点击VMware官网进入官网 网址:VMware by Broadcom - Cloud Computing for the EnterpriseOptimize cloud infrastructure with VMware for app platforms, private cloud, edge, networking, and security.https…

语言/图像/视频模型一网打尽!BigModel大模型开放平台助力开发者轻松打造AI新应用!

2024年8⽉28⽇,在ACM SIGKDD(国际数据挖掘与知识发现⼤会,KDD)上会议现场,智谱AI重磅推出了新⼀代全⾃研基座⼤模型 GLM-4-Plus、图像/视频理解模型 GLM-4V-Plus 和⽂⽣图模型 CogView3-Plus。这些新模型,已…

数据驱动,漫途能耗管理系统打造高效节能新生态!

在我国能源消耗结构中,工业企业所占能耗比例相对较大。为实现碳达峰、碳中和目标,工厂需强化能效管理,减少能耗与成本。高效的能耗管理系统通过数据采集与分析,能实时监控工厂能源使用及报警情况,为节能提供数据。构建…

梦熊十三连测题解

加减乘除 1.通过造样例可知:注意到两类操作并不会改变单调性,即对于任意 x≤y,在操作后仍然满足 x≤y。 2.所以我们就可以将原序列升序排序,分别通过二分找出最大和最小的下标。 3.时间复杂度:O(n*)。 代码如下&am…

android11 usb摄像头添加多分辨率支持

部分借鉴于:https://blog.csdn.net/weixin_45639314/article/details/142210634 目录 一、需求介绍 二、UVC介绍 三、解析 四、补丁修改 1、预览的限制主要存在于hal层和framework层 2、添加所需要的分辨率: 3、hal层修改 4、frameworks 5、备…

漏洞挖掘JS构造新手向

前置思路文章 JS逆向混淆前端对抗 油猴JS逆向插件 JS加解密之mitmproxy工具联动Burp JS挖掘基础 伪协议 JavaScript伪协议是一种在浏览器中模拟网络请求的方法。它使用window.XMLHttpRequest对象或fetch()方法来模拟发送HTTP请求,而不是通过实际的网络请求来获…

【H2O2|全栈】JS入门知识(五)

目录 JS 前言 准备工作 数组API(一) API概念 数组常见API(一) arguments 作用域 概念 全局作用域 局部作用域 块级作用域 变量的作用域 作用域链 案例 预解析 概念 变量预解析 函数预解析 案例 对象 概念 …

MySQL 异常: “Host ‘xxx‘ is not allowed to connect to this MySQL server“

update user set host % where user root; FLUSH PRIVILEGES; 这两行代码就行

Mysql 和MongoDB用户访问权限问题

Mysql 刚给二线运维排查了一个问题,Mysql安装完可用,且可用navicat连接,项目中通过127.0.0.1去连数据库报错了。错误是access denied for user ‘root’localhost,排查思路 1. 密码是否正确 (不需要重置。到Mysql的安装目录下找…

开发规范 - mac系统1小时装机极速装机开发环境

idea 官网下载,然后想办法破解 idea必备配置 设置自动import IDEA插件安装 idea必备插件 maven helperlombokMybatisX jdk配置 jdk不用单配配置,在idea中,选择一个语言环境(jdk8/jdk11/jdk17…),然后默认下载j…

picgo的gitee图床配置

首先picgo默认没有gitee,需要装插件 然后gitee

每月洞察:App Store 和 Google Play 的主要更新

Google Play 和 App Store 的算法不断发展,定期更新和变化会显着影响其功能。对于开发人员和营销人员来说,跟上这些变化至关重要,因为它们会直接影响应用发现和排名。 本文将深入探讨 Google Play 和 App Store 的最新更新,解释它…

浏览器实时更新esp32-c3 Supermini http server 数据

一利用此程序的思路就可以用浏览器显示esp32 采集的各种传感器的数据,也可以去控制各种传感器。省去编写针对各系统的app. 图片 1.浏览器每隔1秒更新一次数据 2.现在更新的是开机数据,运用此程序,可以实时显示各种传感器的实时数据 3.es…

关于pdf合并的七个方法,一键批量合并PDF文档,几步搞定!

pdf是一个支持跨平台使用的兼容性极高的文件格式,同时也是我们日常工作中经常接触到的格式之一。然后,在整理大量pdf格式文件时,如果想要将多个pdf合并成一个应该如何实现呢? 其实pdf合并的方法有很多,如果想要快速对p…

Vue request请求拦截 全局拦截Promise后 api请求捕获异常catch

request.js全局拦截响应结果 else if (res.code 40012) { // 权限不足Message({message: res.msg || Error,type: error,duration: 3 * 1000})return Promise.reject(new Error(res.msg || Error))} api请求后加catch捕获异常 sysUserApi.disableById(row.userId).then(re…

边缘计算与联邦学习:探索隐私保护和高效数据处理的结合

个人主页:chian-ocean 文章专栏 边缘计算与联邦学习:探索隐私保护和高效数据处理的结合 1. 引言 随着物联网(IoT)设备的普及,网络边缘产生了大量数据。将这些数据上传至云端进行集中式计算和处理,既有隐私泄露的风险&#xff…

Python编程基础入门:从风格到数据类型再到表达式

前期已经详细介绍了环境搭建:PycharmPython、VsCodePython Python编程基础入门:从风格到数据类型再到表达式 在编写Python程序时,理解其基础结构和语法是每个初学者的必修课。这篇文章将带你深入了解Python的基本编程风格、数据类型、类型转…