数据库运维
记录DBA学习成长历程

MySQL故障案例

平时遇到的故障包括:故障处理,备份恢复,架构设计,优化等。
身边的故障案例扩充:
1.开发在业务繁忙期间,更新一个列 
2.开发在写文章时,没有脱敏
3.select *
4.让人脱库了
5.断电了,导致数据库重启不了
------------------------------

1.软件版本,64和32位选择错误导致系统安装不上

2.安装故障:

1.用户没创建,权限没给
2.mysqld,mysql_install_db
本地mariadb没卸载,导致历史环境影响初始化时失败;/etc/my.cnf
3.配置文件和实际情况不对应(basedir,datadir)
4.重启,数据盘没有自动挂载(/dev/sdb--->/data)通过Linux(多路径)multipath或者uuid方式挂载去处理
排查思路:看日志
5.升级失败,5.5->8.0
领导让测试8.0的环境,我下载了8.0.1x,安装到了测试服务器,原生产核心功能表的一部分数据MDP工具导出来,恢复到
测试中,进行应用测试,发现连接不上,通过查看官方文档8.0,发现8.0密码和用户管理发生了巨大变化,
先升级到5.7,再升级到8.0,sql_mode,数据类型差别

3.数据库连接不上

1.网络不通(网线,网卡,bood,交换,路由,回路,网络流量满负荷)
防火墙-F,写错规则,内网服务器不能访问,规则冲突
2.没启动,端口,ip
3.应用端客户端工具版本过低
4.连接数
214问题limit.conf还没生效,重启mysql,配置修改为1000,但是最终生效的是214个connections?为啥?
/etc/curity/limits.conf忘记调整
nofile  文件句柄数放开限制65535
http 409错误,达到连接数上限
5.由于redis雪崩,穿透,redis集群节点挂了,由于redis kv设置了过期时间,导致大批量失效,
集群节点丢失,大量链接穿透到mysql数据库进行访问,导致数据库被压满。
解决办法:
看日志。
show status like max_used_connections
show processlist

4.配置文件问题

5.多实例

OOM(out of Memory)由于实例过多,内存参数设置不合理,导致系统OOM超出了最大内存限制

6.sql_mode

主要是only for group by ,时间类型,一般做迁移升级时会出现这些问题。

7.数据类型

由于数据类型设置较短不够用的情况,导致业务上数据插入不了

8.字符集:乱码

9.校对规则问题

业务需要大小写敏感的时候,改某些表的校对规则

10.update问题

误更新,可以用binlog2sql来进行binlog反转,要求binlog_format=row;

11.DDL问题

ddl操作导致数据库夯住,主从从库延时很高
解决办法:
show processlist或者应用pt-osc工具,建议晚上操作

12.select查询语句慢

统计信息不准确,太旧
解决办法:
optimize table t1;
analyze table t1;
重新收集统计信息,或者重建索引

13.慢语句处理

通过slowlog找到同一个存储过程,一天执行了几十次

14.delete误删除

binlog2sql反转,delete替换为update伪删除的方式

15.索引问题

冗余索引过多,索引列比较长(前缀),联合索引(索引覆盖长度,顺序)
slowlog->explain->索引

16.存储引擎

1.表空间迁移
2.每周六全备,其他时候binlog增量,异常断电,binlog损坏,ibdata1损坏
3.碎片整理,alter table t1 engine innodb
4.所等待
5.幻读,不可重复读

17.日志

1.reset master,rm -rf,导致主从IO线程故障
2.gtid:mysqlbinlog时未添加--skip-gtids,导致数据无法恢复
3.slowlog

18.备份恢复

1.mysqldump加了--set-gtid-purged=off,主从构建不成功
2.--max_allowed_packet,大表备份时报错
3.-E -R --triggers没加
4.xbk增量合并失败。
解决办法:全备+二进制日志

19.主从

1.主从故障:IO,SQL,show slave status\G
2.主从延时:延时时间,日志量差异
3.主从不一致:从库宕机,pt工具.(pt-sync,pt-checksum)
4.延时从库,解决逻辑故障
5.过滤复制,只复制了部分库,没有复制mysql,查询时连接不上或者没有权限
6.gtid复制搭建

20.高可用MHA

只有vip功能,缺了binlogserver,故障提醒功能
MHA+keepalive 如果不设置权重,vip和主节点就不对应了

21.分布式Mycat

1.分片方式,策略设计不合理
2.跨分片join,全局表 ER表

22.优化

1.innodb_flush_log_at_trx_commit=0
2.sync_bbinlog=0
双1没有开启,导致宕机数据丢失
3.innodb_flush_method=fsync 占用大量的额外内存,配合固态盘使用O_direct

数据库面试过程问题

1.你们公司用什么数据库产品?介绍一下你熟悉的数据库产品
数据库选型,数据库版本,GA时间
2.公司数据库数据量多大,什么业务?
互联网,电商,教育,车贷,传统行业,物流,数据量级5T以上,
3.你遇到过什么故障,处理过什么故障,平时做什么?
4.SQL语句的执行过程
5.介绍MySQL物理存储结构
6.你对SQL语句熟练吗?
上家公司,在SQL方面的职责:配合开发做schema设计,做一些规范,SQL审核(平台Yearning),配合开发做一些优化。
7.你对存储过程熟练吗?
8.Btree原理
10.做过哪些索引方面的优化?
11.explain都有哪些指标?
12.一条SQL前一天好好的,第二天比较慢?
13.联合索引原则?把握最左原则
14.ACID
15.锁
16.事务工作流程
17.隔离级别,MVCC
18.InnoDB核心特性
19.binlog_format
20.你们用什么工具备份,备份策略是什么?
21.mysqldump核心参数,xbk核心参数,备份原理
22.简述主从复制的搭建过程,主从复制原理
23.主从复制故障和主从延时原因
24.异步复制,半同步复制,MGR,paxos
25.MHA Failover高可用原理
26.公司架构,比如mycat
27.MySQL怎样优化?

Linux云计算技能列表

DBA技能列表

熟悉 Oracle MySQL, Mariadb, Percona, Aliyun RDS多类同源MySQL产品特性功能
熟悉MySQ体系结构原理,深入理解MSQL连接层,SQL层,存储引擎层工作原理
熟悉 MySQL INNODB, TOKUDB, MYROCKS等存储引擎核心特性
熟悉 INNODB事务ACID、Redo、Undo、MCC、锁、隔离级別等核心原理实现
熟悉 MySQL主从复制原理、主从状态监控、主从故障分析处理、主从延时分析处理
熟悉主流MySQL高可用技术MHA,PXC的架构设计与实现
熟悉MDP,XBK工具的备份、恢复流程原理,熟悉不同数据量和业务的备份策略设计与实现
熟悉 Redis安全管理、数据类型、持久化、 Replica-set原理
熟悉 Redis-Sentinel哨兵高可用集群、Rediscluster分布式高可用集群设计与实现.
熟悉 MONGODB复制集原理、MONGODB MSC分片集群工作原理及分片策略定制
熟悉 Mycat、DBLE企业级分布式架构的设计与实现
熟悉 MySQL SQL语句应用和规范审核
熟悉B+tree构建原理及査找算法,对聚簇索引,辅助索引应用有深入理解
熟悉 MySQL优化,对于硬件,OS,文件系统,数据库实例,SQL,索引,锁,引擎,架构全面优化
熟悉 Linux操作系统,熟练使用She1编程进行自动化脚本开发
熟悉 Oracle基础管理:网络,用户权限,数据文件,表空间,日志,DG,RAC等
熟悉 Docker Images、 Container、 Network、 Volumes、 Dockerfile、 Registry、 Docker...
多年TB以上级别数据库运维经验,擅长大数据量表的维护及运维工作

工作经历

负责数据库实例配置管理、用户安全管理
配合开发进行 schema设计及开发,负责日常SQL审核及优化
负责MySQL数据库s1owlog收集及执行计划分析,进行语句和索引优化
负责锁、内存等各指标监控及优化
日常检査备份可用性,定期的恢复演练,版本迁移升级
主从复制架构的设计、实施、故障监控,延时分析及处理
负责高可用架构监控,故障处理及主从延迟解决
负责 MYSOL的分布式高可用架构的设计及实现。
负责设计及优化NOSQL高可用及分布式架构.
赞(2)
MySQL学习笔记 » MySQL故障案例