Mysql数据库优化综合方案教程
小标 2018-03-05 来源 :网络 阅读 754 评论 0

摘要:Mysql数据库优化综合方案教程

1.硬件优化


baidu:a.CPU 8-16颗


b.内存 96G-128G


c.3-4个实例


一般大网站:


a. CPU 2-4颗


b.Mem 32-64G


c. 2 个实例 d.disk 数量越多越好 性能ssd(高并发业务) > sas(普通业务) >sata(线下)

raid RAID0 > RAID 10 > RAID 5 > RAID 1


e.网卡 多块网卡bound,以及buffer,tcp优化


2.软件优化


a. 操作系统:64位


b.软件优化:mysql 编译优化 2.my.cnf参数优化


优化的幅度很小,大部分是架构以及SQL语句优化


InnoDB:innodb_buffer_pool_size = 1024 内存的1/2或1/3


sort_buffer_size = 2M #线程的buffer,不能给太大


join_buffer_size = 2M #线程的buffer,不能给太大


read_buffer_size = 1M #线程的buffer,不能给太大


open_file_limit = 10240 #打开文件描述符的限制


tmp_table_size= 128M


long_quert_time = 2


expire_log_days = 7 #不要手动删除binlog


key_buffer_size = 32M #索引缓存,主要用于MyISAM引擎


skip-name-resolve #避免mysql做DNS反向解析,可能会造成mysql登录权限错误


监控各个参数的使用状态:

命令show global status\G;


工具:mysqlreport


3.SQL语句的优化


a.索引优化,找出慢SQL语句


(1)慢查询日志分析工具--mysqlsla


mysqldumpslow,mysqlsla,myprofi,mysql-explain-slow-log,mysqllogfilter
long_query_time = 2
long_slow_queries = /data/3306/slow-log.log #按天轮询


(2)白名单机制,项目开发,DBA参与,减少上线后的慢SQL语句数量


(3)每天晚上0点定时分析慢查询,发到运维,DBA邮箱中,给出优化建议


b.大的复杂的复杂的SQL语句拆分成多个小的SQL语句


拆SQL语句,拆表,拆库


c.数据库是存储数据的地方,但不是计算数据的地方


对数据计算,应用类处理,都要拿到前端应用解决,禁止在数据库上处理


d.搜索功能不要用mysql数据库 4.架构的优化


1.业务拆分:搜索功能,like '%老男孩%',一般不要用Mysql数据库


2.数据库前端必须加cache缓存,例如memcached


3.业务拆分:某些业务应用使用nosql持久化存储,例如:memcachedb,redis,ttserver


例如粉丝关注,好友关系等等


4.动态的数据静态化。整个文件静态化,页面片段静态化


5.数据库集群与读写分离。一主多从,双主多从。通过程序或者dbproxy进行集群读写分离


6.单表超过2000万。


a.根据业务拆库拆表(登录,商品,订单)


b.利用hash算法拆库拆表


5.流程,制度,安全优化


1.项目开发制度流程


办公开发环境-->办公测试环境-->IDC测试环境-->IDC正式环境 2.数据库更新流程


开发人员提交需求-->开发主管审核-->部分领导审核-->DBA(运维)审核


-->DBA(运维)执行项目开发制度及流程控制的数据库更新步骤,最后在IDC正式环境执行 正确的设置执行周期 linux java/http进程高:


**用strace命令跟踪进程 账户权限控制 1.权限申请流程要设置规范,合理,让需求不明确者知难而退


2.办公开发和测试环境可以开放权限,idc测试和正式环境要严格控制数据库写权限,并且对


读权限和对外业务服务分离


3.开发人员正式环境数据库权限分配规则:给单独的不对外服务的正是从库只读权限,不能分配线上正式主库写权限


4.特殊人员如领导需要权限时,要清楚他做什么,发邮件回复,注明用户名、密码、权限范围、注意事项。 web账户权限分配制度


1.写库账号默认权限为select,insert,update,delete,不要给建表该表(create,alter)等权限


2.读库账号默认权限为select(配合mysql read-only参数用),确保从库对所有非super权限是只读的


3.最好专库专账号,不要一个账号管理多个库。库特别多的小公司具体情况具体分析


4.如果lamp,lnmp一体在一台服务器的环境,数据库权限主机要设置为localhost,避免用root账户作为web连接用


5.web和数据库分离的服务器授权可以根据web服务器数量多少按IP或网段来授权


6.安全和管理方便总是互相矛盾的,需要达到一个较好的平衡状态,如何平衡就要根据具体业务来衡量了 数据库客户端访问控制


1.更改默认mysql client端口


2.数据库web client端统一部署在1-2台不对外服务的web上,限制ip及客户端端口只能从内网访问


3.不做公网域名解析,用host实现访问或者用内部IP访问


4.phpmyadmin站点目录独立于所有其他站点根目录外,只能由指定的域名或IP地址访问


5.限制使用web连接的账号管理数据库,根据开发人员用户角色分配指定账号访问


6.按开发及相关人员职位分配适合的管理账号


7.设置指定账号访问权限,如web使用apache/nginx账号验证,数据库使用mysql用户验证


8.统一数据库账号登录入口地址。禁止所有开发人员私自上传phpadmin等数据库管理软件


9.开通VPN,跳板机,只能通过局域网内部IP管理数据库 未雨绸缪,从源头上减少故障的发生


发生事故后,亡羊补牢,采取措施杜绝此次事件再次发生


本文由职坐标整理并发布,了解更多内容,请关注职坐标MySQL数据库频道!


本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程