mysql调优_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。

4、如何选择

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

二、常用的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在从服务器上重新执行一遍主服务器的操作,通过这种方式保证数据的一致性。

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

fdfc4001c175e915d2bbcafceecb2965.png

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

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

b2033c07eb72b6f7e7d396b8367491a8.png

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

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

3876f6b29d9bd01d730f0ccdcc9b3e84.png

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

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

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

e570735449a2acce82124220f2c06a1b.png

四、MYSQL经典应用架构

6c75818608b92b37d8dd9c089cbc3245.png

其中:

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应用进行读操作,并实现负载均衡。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

shutdown-t-s3600定时关机

winr定时关机shutdown-t-s3600 单位 秒

pycharm无缘无故打开Nosetest

一个正常的代码,本来前几天可以正常run,突然有一天点击run之后不是运行程序,而是报错一堆: Launching Nosetest with arguments。。。 usage: _jb_nosetest_runner.py 。。。 _jb_nosetest_runner.py: error: unrecognized arg…

python按比例生成数据组_基于python中的一个值生成“正态分布”数据

通过施加总和temp100你介绍的依赖至少两个数据点之间,因此无法建立一套独立的采样随机数据点。 一个简单的例子: 想象一下投币。系统中的随机性正好是一个二进制结果,或1位。 想象一下两个硬币翻转。系统中的随机性恰好是两个二进制结果或2位…

SpringMVC学习--参数绑定

spring参数绑定过程 从客户端请求key/value数据,经过参数绑定,将key/value数据绑定到controller方法的形参上。springmvc中,接收页面提交的数据是通过方法形参来接收。而不是在controller类定义成员变更接收。 默认支持的类型直接在controll…

matlab与ie交互

clc clear ieactxserver(internetexplorer.application); ie.Navigate(网址); while ~strcmp(ie.readystate,READYSTATE_COMPLETE) pause(.01) end loginnameie.document.getElementById(输入用户名的LABEL的id); loginname.value用户名; passwordie.document.getElementById(输…

MySQL windows安装

https://www.cnblogs.com/winton-nfs/p/11524007.html

现代物理学7大经典问题,你能理解几个?或许一个都不能理解

来源:搜狐新闻算法与数学之美相对论相对论是物理学中两大著名理论之一,两者都是阿尔伯特爱因斯坦提出的。1905年爱因斯坦出版了狭义相对论,后者确定最终宇宙速度极限:光速。并称时间因某物体移动的速度而实现加速或者减慢。1916年…

unity asset store下载不了_Unity手游实战:从0开始SLG——资源管理系统-基础篇(三)AssetBundle原理...

先用一句话介绍一下AssetBundle吧。AssetBundle系统提供了一种压缩文件的格式,可以把1到多个文件进行索引和序列化。Unity项目在交付安装之后,会通过AssetBundle对不包含代码的资源进行更新。这就允许开发人员先提交一个小的应用程序包,将运行…

《人月神话》阅读笔记(三)

我又一次在相关书籍看到了文档的重要性 数据的表现形式是编程的根本。创造出自精湛的技艺,精炼、充分和快速的程序也是如此。 技艺改进的结果往往是战略上的突破,而不仅仅是技巧上的提高。 这种战略上突破有时是一种新的算法,如快速傅里叶变…

matlab中GUIDE的UItable居中方法

需要借助JAVA,代码示意如下: import javax.swing.*; %导入javax.swing类 table findjobj(handles.uitable1); %需要findjobj.m文件,matlab中是没有的 table1 get(table,Viewport); jtable get(table1,View); renderer jtable.getCellRe…

MySQL Workbench运行脚本

首先在SCHEMAS区域右击,选择创建“create schema” 填入自定义名称,点击“apply” 在弹出来的框中点击“apply”,再在弹出来的框中点击finish 点击菜单栏“file”——“run SQL script”,选择sql文件,在下面选择刚刚创…

自动驾驶事故权威揭秘:算法和软件错误太多

本文来源:AutoR智驾自动驾驶发展就好比是登月计划。从传感器到人工智能,经典的电子供应链已经形成了一个协作矩阵,致力于实现自动驾驶车辆的安全性。为此,还需进行大量硬件和软件开发工作,以确保驾驶员、乘客和行人受到…

python元组求和_Python 列表和元组 - 学习笔记(持续更新)

1、append:在列表末尾添加新的对象 lst [1,2]; lst.append(3); lst :[1,2,3] 2、count:统计某个元素在列表中出现的次数 lst [1,1,[1,2],3]; ct lst.count(1); ct:2 3、extend:在列表末尾追加另一个列表的值 lst1 [1,2]; lst2 [3,4]; ls…

MySQL新建数据库和表

首先在MySQL Workbench上(如果没有的话建议安装一个)新建一个数据库 首先在SCHEMAS区域右击,选择创建“create schema” 填入自定义名称,点击“apply”,这里我命名为crashcourse 在弹出来的框中点击“apply”&#xf…

matlab绘图白边设定

最好提前设定好paper大小! 对于一个坐标轴,用下面这句即可: set(gca,looseInset,[0 0 0 0]);对于subplot,利用该函数 function [] RemoveSubplotWhiteArea(gca, sub_row, sub_col, current_row, current_col) % 设置OuterPosit…

Sprint2-3.0

后续安排 第16周周二晚7点之前将本代码上传到GITHUB.GITHUB地址:https://github.com/QueenIcey/teamwork/tree/master/eslife1周三上课时运行你们的系统给我观赏一下。根据博客,运行演示,github代码情况评定第二个冲刺的分数。至此&#xff0…

【微读书】《人工智能颠覆未来战争》连载之一:机器战胜人类?——AlphaGo人机对战的启示...

来源:中国指挥与控制学会编者按目前,人工智能技术正加速向军事领域渗透,军事智能化既面临千载难逢的发展机遇,也面临前所未有的挑战。如何加强风险研究和预判,防范重大风险,已经客观而现实地摆在我们面前。…

MATLAB画图设置透明度

plot520 plot(x,y); plot520.Color(4) 0.8; Color(4)这个参数可以设置不同的透明度属性

红黑树为什么可以确保没有一条路径会比其他路径长出两倍

红黑树的两个特性来保证: 1、如果一个节点是红色的,则它的子节点必须是黑色的。也就是一条路径上没有两个连续的红色节点; 2、对于任一节点而言,其到叶节点树尾端NULL指针的每一条路径都包含相同数目的黑节点。 因为黑色节点数…

《崛起的超级智能》入选中国好书2019年7月榜单

来源:中国好书中国好书评选活动由中国图书评论学会主办,旨在通过好书推介传递正能量,推动和引导全民阅读。中国图书评论学会是由中宣部出版局创办、国家新闻出版广电总局主管的国家一级学会。自2014年举办首届年度好书盛典至今,“…