MySQL企业常见架构与调优经验分享,公开课;了解笔记

根据公开课内容,大致了解下:

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

https://edu.aliyun.com/course/48/lesson/list?spm=5176.8764728.aliyun-edu-course-tab.2.yK6AU2

  • 由于担心Oracle收购后的MySQL有一天会闭源,出现了很多第三方的分支版本

一、Percona Server、MariaDB还是MySQL

1、Mysql三种存储引擎

MySQL提供了两种存储引擎:MyISAM和 InnoDB,MySQL4和5使用默认的MyISAM存储引擎。从MYSQL5.5开始,MySQL已将默认存储引擎从MyISAM更改为InnoDB。
MyISAM没有提供事务支持,而InnoDB提供了事务支持。
XtraDB是InnoDB存储引擎的增强版本,被设计用来更好的使用更新计算机硬件系统的性能,同时还包含有一些在高性能环境下的新特性。

2、Percona Server分支

Percona Server由领先的MySQL咨询公司Percona发布。
Percona Server是一款独立的数据库产品,其可以完全与MySQL兼容,可以在不更改代码的情况了下将存储引擎更换成XtraDB。是最接近官方MySQL Enterprise发行版的版本。
Percona提供了高性能XtraDB引擎,还提供PXC高可用解决方案,并且附带了percona-toolkit等DBA管理工具箱,

3、MariaDB

MariaDB由MySQL的创始人开发,MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品。
MariaDB提供了MySQL提供的标准存储引擎,即MyISAM和InnoDB,10.0.9版起使用XtraDB(名称代号为Aria)来代替MySQL的InnoDB。

在企业数据库选型上,Percona Server、MariaDB、MySQL三者该如何选择

4、如何选择

综合多年使用经验和性能对比,首选Percona分支,其次是MariaDB,如果你不想冒一点风险,那就选择MYSQL官方版本。

二、常用的MYSQL调优策略

1、硬件层的相关优化

修改服务器BIOS设置

  • 选择PerformancePer 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调度器,千万别用cfg
  • 使用xfs文件系统,千万别用ext3;ext4勉强可用,但业务量很大的话,则一定要用xfs;
  • 文件系统mount参数中增加:noatime,nodiratime,nobarrier几个选项(nobarrier是xfs文件系统特有的)

4、内核参数优化

  • 修改vm.swappiness参数,降低swap使用率。RHEL7/centos7以上慎重设置为0,可能发生OOM
  • 调整vm.dirty_backgroud_retio、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、table_open_cache、table_definition_cache可以设置大约为max_connection的10倍左右大小。
  • key_buffer_size建议调小,32M左右即可,另外建议关闭query cache。
  • map_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就是从服务骑上重新执行一遍主服务器的操作,通过这种方式保证数据的一致性。

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

  • 主从复制的应用场景是数据库非常大,每天增量也比较多
  • 主从复制方式可以实时的把数据从主库拉到从库中去,实现了主库数据的实时备份,当主库故障的时候,直接把数据切到从库就可以去用

  • 通过keepalived实现

主从复制架构图

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

yum install mysql-mmm

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

MMM套件解决方案

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

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

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

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

Heartbeat/DRBD高可用解决方案

四、MySQL经典应用架构

MySQL经典应用架构

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值