MySQL数据库常用架构设计

  发布时间:2025-11-05 08:34:06   作者:玩站小弟   我要评论
一、MySQL引擎MySQL提供了两种存储引擎:MyISAM和 InnoDB,MySQL4和5使用默认的MyISAM存储引擎。从MySQL5.5开始,MySQL已将默认存储引擎从MyISAM更改为In 。

一、数设计MySQL引擎

MySQL提供了两种存储引擎:MyISAM和 InnoDB,据库架构MySQL4和5使用默认的常用MyISAM存储引擎。从MySQL5.5开始,数设计MySQL已将默认存储引擎从MyISAM更改为InnoDB。据库架构

MyISAM没有提供事务支持,常用而InnoDB提供了事务支持。数设计

二、据库架构常用的常用MySQL调优策略

1、硬件层相关优化

修改服务器BIOS设置

选择Performance Per Watt Optimized(DAPC)模式,数设计发挥CPU***性能。据库架构

Memory Frequency(内存频率)选择Maximum Performance(***性能)

内存设置菜单中,常用启用Node Interleaving,数设计避免NUMA问题

2、据库架构磁盘I/O相关

使用SSD硬盘

如果是常用磁盘阵列存储,建议阵列卡同时配备CACHE及BBU模块,可明显提升IOPS。

raid级别尽量选择raid10,而不是raid5。

3、文件系统层优化

使用deadline/noop这两种I/O调度器,千万别用cfq

使用xfs文件系统,千万别用ext3;ext4勉强可用,但业务量很大的话,则一定要用xfs;文件系统mount参数中增加:noatime, nodiratime, nobarrier几个选项(nobarrier是xfs文件系统特有的)。

4、内核参数优化

修改vm.swappiness参数,免费源码下载降低swap使用率。RHEL7/CentOS7以上则慎重设置为0,可能发生OOM。

调整vm.dirty_background_ratio、vm.dirty_ratio内核参数,以确保能持续将脏数据刷新到磁盘,避免瞬间I/O写。产生等待。

调整net.ipv4.tcp_tw_recycle、net.ipv4.tcp_tw_reuse都设置为1,减少TIME_WAIT,提高TCP效率。

5、MySQL参数优化建议

建议设置default-storage-engine=InnoDB,强烈建议不要再使用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左右即可,另外建议关闭query cache。

mp_table_size和max_heap_table_size设置不要过大,另外sort_buffer_size、join_buffer_size、read_buffer_size、read_rnd_buffer_size等设置也不要过大。

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

1、主从复制解决方案

这是MySQL自身提供的一种高可用解决方案,数据同步方法采用的是MySQL replication技术。MySQL replication就是从服务器到主服务器拉取二进制日志文件,然后再将日志文件解析成相应的SQL在从服务器上重新执行一遍主服务器的操作,通过这种方式保证数据的一致性。

为了达到更高的WordPress模板可用性,在实际的应用环境中,一般都是采用MySQL replication技术配合高可用集群软件keepalived来实现自动failover,这种方式可以实现95.000%的SLA。

 

2、MMM/MHA高可用解决方案

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

 

3、Heartbeat/SAN高可用解决方案

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

 

4、Heartbeat/DRBD高可用解决方案

此方案处理failover的方式上依旧采用Heartbeat,不同的是,在数据共享方面,采用了基于块级别的数据同步软件DRBD来实现。

DRBD是一个用软件实现的、无共享的、服务器之间镜像块设备内容的存储复制解决方案。和SAN网络不同,它并不共享存储,而是通过服务器之间的网络复制数据。

 

四、MySQL经典应用架构

 

其中:

Dbm157是MySQL主,dbm158是MySQL主的备机,dbs159/160/161是MySQL从。

MySQL写操作一般采用基于heartbeat+DRBD+MySQL搭建高可用集群的方案。通过heartbeat实现对MySQL主进行状态监测,而DRBD实现dbm157数据同步到dbm158。

读操作普遍采用基于LVS+Keepalived搭建高可用高扩展集群的方案。前端AS应用通过提高的读VIP连接LVS,LVS有keepliaved做成高可用模式,实现互备。

***,MySQL主的从节点dbs159/160/161通过MySQL主从复制功能同步MySQL主的数据,通过lvs功能提供给前端AS应用进行读操作,并实现负载均衡。

  • Tag:

相关文章

  • 三星9100使用移动卡上网的网速如何?(以三星9100为例,探讨移动卡上网的速度表现及使用体验。)

    摘要:移动网络已经成为我们日常生活中不可或缺的一部分,而移动设备的网速表现也直接影响了我们的上网体验。本文将以三星9100为例,探讨其在使用移动卡上网时的网速情况。三星9100使...
    2025-11-05
  • 码农的世界:8款VS代码插件,你值得拥有

    本文转载自公众号“读芯术”(ID:AI_Discovery)要想代码写得好,优秀插件不能少。今天要介绍的VS代码插件,将是你居家旅行工作学习不可或缺的贴心小助手,有了它们,编码简单更高效,编写查看不用
    2025-11-05
  • HTTP规范中的那些暗坑

    HTTP 协议可以说是开发者最熟悉的一个网络协议,「简单易懂」和「易于扩展」两个特点让它成为应用最广泛的应用层协议。虽然有诸多的优点,但是在协议定义时因为诸多的博弈和限制,还是隐藏了不少暗坑,让人一不
    2025-11-05
  • JVM源码分析之Attach机制实现完全解读

    Attach是什么在讲这个之前,我们先来点大家都知道的东西,当我们感觉线程一直卡在某个地方,想知道卡在哪里,首先想到的是进行线程dump,而常用的命令是jstack ,我们就可以看到如下线程栈了大家是
    2025-11-05
  • 华硕A4417500性能评测(华硕A4417500处理器的强大性能表现)

    摘要:随着科技的不断进步,电脑的性能也越来越强大。华硕作为一家知名电子产品制造商,推出了一系列高性能的产品。本文将以华硕A4417500处理器为主题,深入评测其性能和表现。一、华...
    2025-11-05
  • 你可以这样优化if-else代码结构

    前言最近部门在对以往的代码做一些优化,我在代码中看到一连串的 if(){}elseif(){} 的逻辑判断。这明显是有优化空间的。由于内部代码不适合分享,这里我就用 <输出今天为星期几>
    2025-11-05

最新评论