LINUX配置优化

  • 诊断命令

  • 硬件优化
    • raid 10
    • ssd
    • Fusion-io
    • 大内存
    • 电池后备SCSI磁盘缓存
  • 系统优化
    • 日志,数据分盘
    • IO调度算法 deadline适用于磁盘 noop适用于ssd
    • XFS文件系统
    • 避免使用swap 分区
    • fd限制 ulimit

MySQL参数配置

  • 基础配置

    • 字符集
    • 数据目录,日志目录,临时目录
    • sql_mode
  • 缓存设置
    • 线程缓存
    • 表缓存
    • 排序缓存
    • join缓存
    • 查询缓存
    • binlog缓存
    • ......
  • 阈值设置
    • max connection
    • timeout
    • slow query time
    • ......
  • innodb 设置
    • instances
    • size
    • io_capacity
    • innodb_flush_method=O_DIRECT 数据直接写盘,避过OS cache 日志还是OS flush
    • 双一设置
    • ......

MySQL开发规范

  • DDL

    • 类型使用要精确
    • not null
    • 避免text/blob
    • 避免外键
    • 自增主键
    • 避免冗余索引
    • 索引数量控制
    • 索引字段过滤度
  • DML
    • 避免使用触发器,存储过程
    • 存储使用Mysql,不要有运算逻辑
    • 更新操作禁用limit
    • select * 禁用
    • in 优先 or
    • 同表alter操作合并

BIG SQL

  • 索引优化

    • WHERE 条件索引使用率,符合最左原则
    • 联合索引,注意索引过滤度
    • 表join操作,注意加索引,且join字段类型必须一致
  • SQL优化
    • 子查询变成连接操作,优先使用独立子查询
    • 利用覆盖索引,分页操作
    • 拆分SQL,加缓存表或者汇总表
    • 外在条件下推,减少中间结果集
    • 重写SQL,利用过滤性更好的索引

主从延迟

  • 避免

    • 避免3B
    • 较少从库压力,包括服务器和数据库本身的
    • 从库上有触发操作,控制更新量
  • 改善
    • 升级从库机器硬件ssd
    • 升级数据库版本,5.6的库并发 5.7的binlog线程并发
    • 第三方工具,丁奇的transfer插件
    • inset...select rbr模式,可以先select 缓存结果,后insert

排查方法

  • 服务器

    • top

      • 查看负载
      • 查看CPU耗时
    • iostat
    • free
    • ps aux | grep pid
      • 查看具体进程信息
  • MySQL
    • SHOW FULL PROCESSLIST / dbaslowing

      • 数据库目前运行SQL,连接数
      • 慢查询实时采集,格式话输出
    • SHOW ENGINE INNODB STATUS
      • 运行事务信息
      • 死锁信息 / pt-deadlock-logger 周期采集死锁信息
      • buffer pool 信息查看
    • dbaprocess.sh
      • 查看连接数排序,显示连接服务

紧急恢复

  • 切换

    • 主从切换

      • 双主模式,设置自增间隔,不停服
      • read_only 切换,保留静态老主
  • 连接数打满
    • pt-kill
    • mysqladmin kill

日常指标

  • zabbix

    • 历史状态查询
    • 报警监控
    • 组合定制脚本监控
  • 运维脚本
    • 慢查询脚本每日邮件
    • 数据库周健康度邮件
    • 核心表每日备份
    • 扩容从库脚本
    • 搭建级联脚本
    • 测试库同步脚本
    • 试运行环境对比脚本
  • 备份
    • hotbak,dump
    • nfs挂载磁盘
    • hdfs数据冗余

自动化运维

  • 自动审核inception
  • 自动授权系统

MySQL HA

  • 中间件

    • dbproxy

      • 读写分离
      • 从库HA,负载均衡
    • mycat
      • 读写分离
      • 从库负载均衡
      • 分库分表&全局表
      • HA
      • 不支持分布式事务
      • 业务SQL限制,需要有路由key
      • 性能有所损耗
  • MHA

  • PXC

常用PT

  • pt-config 数据库替换时,验证参数一致性
  • pt-deadlock-logger 记录历史死锁信息
  • pt-duplicate-key-checker 冗余索引检测
  • pt-ioprofile IO调试
  • pt-kill 定制kill连接线程
  • pt-online-schema-change OSC
  • pt-query-digest 状态输出慢查询
  • pt-table-checksum 主从一致性验证
  • pt-slave-find 主从拓扑结构
  • pt-fifo-split 大文件导入

MY SQL 知识的更多相关文章

  1. Atitit  补充说明 sql知识图谱与线路图attilax总结补充说明

    Atitit  补充说明 sql知识图谱与线路图attilax总结补充说明 1. 常见编程语言的分类  :命令式语言.函数式语言.逻辑语言1 1.1. 按照编程语言的代际划分,又2gl,3gl,4gl ...

  2. TFS二次开发、C#知识点、SQL知识总结目录

    TFS二次开发系列 TFS二次开发系列:一.TFS体系结构和概念 TFS二次开发系列:二.TFS的安装 TFS二次开发系列:三.TFS二次开发的第一个实例 TFS二次开发系列:四.TFS二次开发Wor ...

  3. 学习之路三十六:SQL知识总结 - [游标||字符串分割]

    好久没有写文章了,今天把前不久项目用到的SQL知识总结一下. 一丶字符串分割 SQL内置函数中是没有Split分割函数的,所以需要自己去实现,不多说,上代码: )) RETURNS @result T ...

  4. TFS二次开发、C#知识点、SQL知识

    TFS二次开发.C#知识点.SQL知识总结目录   TFS二次开发系列 TFS二次开发系列:一.TFS体系结构和概念 TFS二次开发系列:二.TFS的安装 TFS二次开发系列:三.TFS二次开发的第一 ...

  5. 测试人员需要了解的sql知识(提高篇)

    上一篇写了一些基础的sql知识,这里再深挖一些常用的 ------------------------------------------------------------------骄傲的分割线- ...

  6. mysql sql知识总结

    SQL知识总结: 检索不同的行: SELECT DISTINCT VEND_ID FROM PRODUCTS; DISTINCT 应用于所有的列 =================== 限制结果: S ...

  7. SQL知识整理一:触发器、存储过程、表变量、临时表

    触发器 触发器的基础知识 create trigger tr_name on table/view {for | after | instead of } [update][,][insert][,] ...

  8. sql知识

    SQL 基本知识 SQL Server 是Microsoft 公司推出的关系型数据库管理系统.具有使用方便可伸缩性好与相关软件集成程度高等优点,可跨越从运行Microsoft Windows 98 的 ...

  9. SQL知识三(Day 27)

    大家好,好几天都没写博客了.因为自己的一些原因,落下了很多.今天没有学什么新的知识,自己就把以前落下的好好看了一下.好了,今天就先总结一下SQL剩下的一些知识吧. 主要学的知识有:循环语句(case语 ...

  10. SQL知识目录

    SQL理论知识 -------理论知识总结 -------理论知识总结 -------理论知识总结 -------理论知识总结 -------理论知识总结 -------理论知识总结 -------理 ...

随机推荐

  1. 集合的概念 Stack和Queue Dictionary ArrayList和List<T>方法及用法

    Stack和stack<T>方法一样// 管理方式: 后进先出 LIFO 栈// Stack<string> s=new Stack<string>();//(放一 ...

  2. Breakpoint is not hit

    新拿到一个Silverlight项目,能够正常运行,但是一旦运行起来,断点处由实心点变成了空心的,并警告:The breakpoint will not currently be hit. No sy ...

  3. 关于Thomas Brinkhoff移动对象生成器的修改

    关于地图数据的写出 控制地图路径数据的输出 修改routing.Edge.java 路径写出源码 public void write (EntryWriter out) { out.print(id) ...

  4. 博弈SG

    先转一篇看得比较懂的,以后有时间自己再归纳下 转自:http://blog.csdn.net/logic_nut/article/details/4711489 博弈问题若你想仔细学习博弈论,我强烈推 ...

  5. R语言画全基因组关联分析中的曼哈顿图(manhattan plot)

    1.在linux中安装好R 2.准备好画曼哈顿图的R脚本即manhattan.r,manhattan.r内容如下: #!/usr/bin/Rscript #example : Rscript plot ...

  6. nginx php rewrite配置

    server { listen 80; server_name xxx.cn www.xxx.cn; index index.html index.htm index.php; root /data/ ...

  7. JS浮点数的加减乘除运算

    文章来源地址:http://blog.csdn.net/lyd518/article/details/7236464 转载请注明出处,尊重作者劳动成果,谢谢!问题这样的: 37.5*5.5=206.0 ...

  8. pip 加速方案

    每当我pip install * 的时候,总是发现速度很慢,通过google,发现还是有方法来解决这种状况的 在~/ 命令下,创建 .pip/pip.conf,我用的是阿里的镜像,速度还是杠杠的 mk ...

  9. JAVA中获得一个月最大天数的方法(备忘)

    Calendar 类是一个抽象类,为日历字段之间的转换提供了一些方法.其中有一个重要方法 getActualMaximum ,该方法用于返回指定日历字段实际的最大值. 利用这个方法(Calendar. ...

  10. WNDR3700V4 安装SVN Server

    下文所用路由器型号为:WNDR3700V4 参考链接:http://dd-wrt.ca/phpBB2/viewtopic.php?t=86912&highlight=optware http: ...