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

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。


http://www.kler.cn/news/366614.html

相关文章:

  • LDR6020:为VR串流线方案注入高效能与稳定性
  • Java线程安全
  • 《Windows PE》7.4 资源表应用
  • MATLAB中 exist函数用法
  • 【计算机网络 - 基础问题】每日 3 题(五十八)
  • Flume的安装及使用
  • C#通过异或(^)运算符制作二进制加密(C#实现加密)
  • 基于SpringBoot的高校体测管理系统设计与实现(源码+定制+开发)高校体测记录系统设计、高校体测信息管理平台、智能体测管理系统开发、高校体测记录系统设计
  • 跨境科技公司如何借助 NocoBase 升级内部系统并实现外部业务增长?
  • Python监听指定路径下文件夹变化
  • Mac上面压缩文件出现__MACOSX文件夹问题
  • web查询数据库
  • SSRF实战:利用ssrf.php对自己内网网站尝试访问
  • 信号(三)【信号保存】
  • nuxt3项目创建
  • 【C++进阶篇】——STL的简介
  • 用友U8接口-库存管理(7)
  • HTML 区块
  • sql-labs靶场第二十关测试报告
  • 【Linux】从open到write:系统文件I/O 的奥秘与实战指南
  • 实测体验Claude 3.5升级版:AI首次实现直接操控电脑!
  • 【Linux】信号量,线程池
  • 智能EDA小白从0开始 —— DAY27 第二届设计自动化产业峰会IDAS 2024:比昂芯科技携最新EDA工具链及应用成果亮相
  • 从文化到实践:DevOps的基本概念与核心实践详解
  • 20241023给荣品RD-RK3588-AHD开发板刷荣品预编译的Android12之后使用TDMonitor V2.0.2测试板载GPS
  • Nginx14-Lua基础