首页 > 数据库 >MY SQL 知识

MY SQL 知识

时间:2024-01-23 15:04:32浏览次数:36  
标签:缓存 pt 知识 查询 索引 SQL 从库 MY

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 大文件导入

 



标签:缓存,pt,知识,查询,索引,SQL,从库,MY
From: https://blog.51cto.com/u_16532032/9380035

相关文章

  • Table '.\mysql\proc' is marked as crashed and should be repaired 报错
    Table'.\MySQL\proc'ismarkedascrashedandshouldberepaired报错 解决方法:找到mysql的安装目录的bin/myisamchk工具,在命令行中输入:myisamchk-c-r../data/mysql/proc.MYI然后myisamchk工具会帮助你恢复数据表的索引。重新启动mysql,问题解决。......
  • mysql主主复制(双主复制)配置步骤
    以前我们介绍的都是主从复制,这里给各位介绍一个双主复制了,下面都希望两个主服务器数据自动复制的话可参考一下此文章。 MySQL主主复制结构区别于主从复制结构。在主主复制结构中,两台服务器的任何一台上面的数据库存发生了改变都会同步到另一台服务器上,这样两台服务器互为主从,并且......
  • MySQL MHA配置
     MySQL环境:   master:192.168.202.129:3306   slave:192.168.202.129:3307,192.168.202.129:3307,192.168.202.130:3306,192.168.202.130:3307,192.168.202.130:3308   MariaDB-10.0.13   MHA环境:   manager:192.168.202.129   node:192.168.202.130(3306端......
  • mysql mha 主从自动切换 高可用
    mha(MasterHighAvailability)目前在MySQL多服务器(超过二台),高可用方面是一个相对成熟的解决方案。 一,什么是mha,有什么特性1.主服务器的自动监控和故障转移MHA监控复制架构的主服务器,一旦检测到主服务器故障,就会自动进行故障转移。即使有些从服务器没有收到最新的relaylog,MHA自动......
  • mysql innobackupex xtrabackup 大数据量 备份 还原
    大数据量备份与还原,始终是个难点。当MYSQL超10G,用mysqldump来导出就比较慢了。在这里推荐xtrabackup,这个工具比mysqldump要快很多。 一、Xtrabackup介绍1,Xtrabackup是什么Xtrabackup是一个对InnoDB做数据备份的工具,支持在线热备份(备份时不影响数据读写),是商业备份工具InnoDBHot......
  • mysql 查询所有表
    MySQL是一种开源的关系型数据库管理系统,在各种Web应用中使用广泛,因为它是高度可定制且易于管理的。MySQL包含一组操作,使您可以创建,更新和查询数据库中的数据。其中一个重要操作是查询所有表的数据,本文将介绍如何实现这一操作。一、使用SHOWTABLES命令SHOWTABLES命令是最简单和......
  • mysql权限的一个细枝
    业务需求:对一个用户回收一个表的所有权限,但是之前对这个用户是授权表所在库的整个权。 背景:某个表后来插入了机密数据,不能再让人随便查阅了。  比如:存在库test01 库下存在表T1,那mysql是否支持呢,来复盘下整个操作:  首先整库授权: grantallprivilgesontest01.*to......
  • 安装数据库Sql Server 12版本评估版过期后,如何卸载?以及如何安装Sql Server2019版本。
        昨晚由于之前实施的一个小姑娘把我们数据安装的版本装成评估版,导致数据库任务无法每天正常备份作业。然后我就开始了踩坑之路。幸好在晚上操作的,如果在白天,想都不敢想。心想着升级后会好,结果升级后打都打不开,数据库直接无法访问。那就重新下一个安装,但是装好后,无法......
  • Mygin实现动态路由
    本篇是Mygin的第四篇目的使用Trie树实现动态路由解析。参数绑定前缀树本篇比前几篇要复杂一点,原来的路由是用map实现,索引非常高效,但是有一个弊端,键值对的存储的方式,只能用来索引静态路由。遇到类似hello/:name这动态路由就无能为力了,实现动态路由最常用的数据结构,被称为......
  • SQL server 系统优化--通过执行计划优化索引(3)
    执行时间要7205ms,语句如下:    selecttop30this_.idasid10_0_,this_.objidasobjid10_0_,this_.objnameasobjname10_0_,this_.midasmid10_0_,this_.logtypeaslogtype10_0_,this_.logdescaslogdesc10_0_,this_.submitorassubmitor10_0_,this_.submitda......