十三、linux-mysql的mysql的核心优化思想
一、数据库运维管理思想核心
1.未雨绸缪,不要停留在制度上,而是要实际做出来
2.亡羊补牢,举一反三,不要好了伤疤忘了疼
3.完善的框架设计及备份、恢复策略
4.定期思考,并实战模拟以上策略演练
二.策略优化
个人感觉不仅仅是数据库,所有的系统层面的都可以通过以下方式进行考虑。
mysql数据库优化
硬件优化:优化的是物理机,不是虚拟机,因为数据库是IO密集型的
cpu 大公司一台机器8-16颗64位cpu
mem 大公司96G-128G 3-4个实例
disk 数量越多越好,性能:ssd(高并发 )>sas(普通业务线上)>sata(线下)
raid 4块盘 性能:RAID0>RAID10>RAID5>RAID1
网卡:多块网卡bond,以及buffer、tcp等的优化。
软件优化:操作系统:x86_64系统, 软件:mysql编译优化
my.cnf 的参数的优化:
cpu 大公司一台机器8-16颗64位cpu
mem 大公司96G-128G 3-4个实例
disk 数量越多越好,性能:ssd(高并发 )>sas(普通业务线上)>sata(线下)
raid 4块盘 性能:RAID0>RAID10>RAID5>RAID1
网卡:多块网卡bond,以及buffer、tcp等的优化。
软件优化:操作系统:x86_64系统, 软件:mysql编译优化
my.cnf 的参数的优化:
注意:my.cnf里面优化的幅度很小,大部分在sql语句和架构优化
监控:生产参数是一般情况下参数
命令监控:show global status\G;工具:mysqlreport性能调优工具, 自动帮忙分析设置的参数合理不合理
命令监控:show global status\G;工具:mysqlreport性能调优工具, 自动帮忙分析设置的参数合理不合理
sql语句的优化
a.索引的优化
1) 白名单机制
首先要抓慢sql,配置my.cnf
long_query_time=2
long-slow-queries/data/3306/slow-log.log
按天轮询:slow-log.log
a.索引的优化
1) 白名单机制
首先要抓慢sql,配置my.cnf
long_query_time=2
long-slow-queries/data/3306/slow-log.log
按天轮询:slow-log.log
2) 慢查询日志分析工具---mysqlsla
3) 每天晚上0点定时分析慢查询,发到核心开发、DBA分析,及高级运维,cto的邮箱里.
DBA分析给出建议--》核心开发处理---》DBA线上处理
3) 每天晚上0点定时分析慢查询,发到核心开发、DBA分析,及高级运维,cto的邮箱里.
DBA分析给出建议--》核心开发处理---》DBA线上处理
b.sql语句的拆分,比如:JOIN连接表
c.数据库是存储数据的地方,但是不是计算数据的地方。
d.搜索功能,like '%老男孩%',一般不要用mysql数据库
c.数据库是存储数据的地方,但是不是计算数据的地方。
d.搜索功能,like '%老男孩%',一般不要用mysql数据库
架构的优化
1)业务拆分:搜索功能,like '%老男孩%',一般不要用mysql数据库
2)数据库前端必须要加cache:例如:memcached
用户登录,商品查询
3)业务拆分:某些业务应用使用nosql持久化存储:memachecedb,redis等
好友关系,粉丝关注等等
2)数据库前端必须要加cache:例如:memcached
用户登录,商品查询
3)业务拆分:某些业务应用使用nosql持久化存储:memachecedb,redis等
好友关系,粉丝关注等等
4)动态的数据静态化。真个文件静态化,页面片段静态化。
5) 数据库集群与读写分离,一主多从,通过程序或者dbproxy进行读写分离
6)单表超过2000完。拆库拆表
5) 数据库集群与读写分离,一主多从,通过程序或者dbproxy进行读写分离
6)单表超过2000完。拆库拆表
流程,制度,安全优化
任何一次人为数据库记录的更新,都要走一个流程:
a.人的流程:开发--》核心开发--》运维或者DBA
b.测试流程:内网测试--》IDC测试--》线上执行
c.客户端管理:phpmy
a.人的流程:开发--》核心开发--》运维或者DBA
b.测试流程:内网测试--》IDC测试--》线上执行
c.客户端管理:phpmy