- 1、本文档共56页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
MySQL开发规范和平台简介
卓汝林
About Me
2011 ~ 2012 就职于惠普, Java工程师
2012 ~ 2013 就职于58,MySQL和MongoDB DBA
2013 ~ 至今 就职于小米,MIUI、小米互娱等MySQL和Redis的运营管理;关注自动化运维设计和开发
@RogerZhuo
Agende
MySQL开发规范简介
基础规范
统一使用utf8字符集和utf8_general_ci字符排序规则,按需对表级设置utf8mb4
表存储引擎使用InnoDB; 默认使用REPEATABLE-READ事务隔离级别
统一命名规范:默认全小写,禁用关键字和合理使用前缀
禁止使用存储过程和函数、视图、触发器、外键约束和Event
各环境进行隔离,避免混用风险:dev-test-staging-production
生产数据安全隐私为首重,要求项目数据闭环和数据范围可控制
库表设计规范
单实例表个数控制在3w以内,单表行数500w~1000w内
某类分表个数控制在1000,避免过度拆分(DDL操作痛苦)
采用统一的分库分表原则,二进制或十进制
禁用MySQL自带分区表
每个表必须设置主键, 尽量使用数值类型和增长趋势
核心业务表避免使用自增列,使用外部ID生成器
字段设置原则:Simple is good, Smaller is usually better
字段和类型从产品角度按需设置,禁用预留字段,避免存储浪费
字段都设置not null和default值
索引设计规范
InnoDB表主键的选择策略
-每个表必须显示指定主键(RBR)
-主键尽量用单字段,最好是数值类型
-主键值与插入顺序,尽量同步 禁用uuid(rebanlance和fragment)
-禁止更新主键值 (逻辑定义就不合理)
单表索引数建议别超5个,每个组合索引别超过5个字段
尽量使用组合索引,避免单索引的index merge或回表操作
注意组合索引的顺序,最左原则,根据SQL条件调整索引字段顺序
避免使用冗余索引,按需创建索引
SQL规范
Where子句右值都用引号括起,避免隐式类型转换
多表Join时注意比较字段类型一致,避免隐式类型转换
禁止对索引列进行函数和数值计算
Select/insert都枚举字段名,禁用select *
避免使用大SQL、大事务,或事务中等待用户动作行为
大事务/SQL会导致主从复制延时
MySQL的单个SQL只能在一个CPU上运行
影响数据库的并发性能,事务持有的锁等资源只在事务rollback/commit时才能释放
存在比较长的readview(快照),如果持续时间几十分钟,数据库响应时间可能聚降 (mvcc,undo)
禁用update/delete … limit N结构SQL
使用where in(),in子句中元素建议小于500
运营规范-举例一二
故障预案管理
故障管理- postmortem机制
MySQL部分常用平台简介
监控和告警
Zabbix监控方案
Zabbix + Fromdual mysql-performance-monitor
Zabbix + Percona Monitoring Plugins
监控和告警
Zabbix监控
监控和告警-Open-Falcon
Open-Falcon 是小米运维部开源的一款互联网企业级监控系统解决方案.
项目首页:
使用公司:/XiaoMi/open-falcon/issues/4
监控和告警-Open-Falcon
监控和告警-Open-Falcon
Dashboard首页
监控和告警-Open-Falcon
vs Zabbix 告警方面
告警模板支持继承的同时支持覆盖策略项
Tag化描述告警策略
与服务树结合—— 实例上下线自动变更监控
水平扩展
监控和告警-Open-Falcon
Open-Falcon MySQL指标采集-mymon
项目地址: /open-falcon/mymon
监控和告警-Open-Falcon
Mymon监控告警项
告警项目
影响描述
故障级别
处理方式
告警方式
MySQL is down??
MySQL挂了,不能提供服务
P0
立即通报处理
短信邮件
MySQL connection is full?
达到连接数的上限,无法再创建新数据连接
P1
立即通报处理
短信邮件
MySQL Is Busy
MySQL并发处理连接数比较高,整体查询响应时间变长
p1
立即通报处理
短信邮件
Slave lagging behind Master
从库延时,影响从库只读一致性; HA架构的切换有影响
P1
立即通报处理
短信邮件
IO thread stopped
从库不能正
您可能关注的文档
- 2016带电粒子在复合场中的运动教案.ppt
- 2016低压电工安全培训教案.ppt
- 三年级语文下册第6单元28《鱼化石》2沪教版精选.ppt
- ZXWRRNC(V3.07.310)无线网络控制器信令跟踪操作指南+精选.doc
- 八年级物理研究杠杆的平衡条件题稿.ppt
- 泵结构和工作原理动态图题稿.doc
- 爱爱医资源-2011年_中医综合_方剂学笔记_123页完整版精选.doc
- 1000MW超超临界锅炉技术教案.ppt
- MPI+Openmp题稿.pptx
- 泵类培训教材题稿.ppt
- 人教版九年级英语全一册单元速记•巧练Unit13【速记清单】(原卷版+解析).docx
- 人教版九年级英语全一册单元速记•巧练Unit9【速记清单】(原卷版+解析).docx
- 人教版九年级英语全一册单元速记•巧练Unit11【速记清单】(原卷版+解析).docx
- 人教版九年级英语全一册单元速记•巧练Unit14【单元测试·提升卷】(原卷版+解析).docx
- 人教版九年级英语全一册单元速记•巧练Unit8【速记清单】(原卷版+解析).docx
- 人教版九年级英语全一册单元速记•巧练Unit4【单元测试·提升卷】(原卷版+解析).docx
- 人教版九年级英语全一册单元速记•巧练Unit13【单元测试·基础卷】(原卷版+解析).docx
- 人教版九年级英语全一册单元速记•巧练Unit7【速记清单】(原卷版+解析).docx
- 苏教版五年级上册数学分层作业设计 2.2 三角形的面积(附答案).docx
- 人教版九年级英语全一册单元速记•巧练Unit12【单元测试·基础卷】(原卷版+解析).docx
文档评论(0)