大纲
DBA最应该做的事情
新项目开发环境应该注意什么
功能测试和压力测试MySQL DBA关注点
线上环境关注点
业务在大压力情况下,MySQL如何能活下来
DBA最应该做的事情
备份
建议每天全备
每天把Binlog也要进行备份
理想的目标:可以把数据还原到任意时间点(近2周的能力)
监控
了解环境的情况
环境可控
了解数据增长及和环比情况
新项目开发环境应该注意什么
long_query_time=1->0
了解核心业务SQL,提出读写分离和缓存指导建议
功能测试,性能测试中注意校对
备份开发环境(每天一备),放在其他机器上,最好也要有从库
核心SQL优化,Schema调整尽量在这个阶段完成
特别提示:
新技术也可以在这个测试环境测试一下
开发环境常见问题
开发把数据误操作干掉
开发服务器机器故障
并发连接太多,DB响应太慢
功能测试和压力测试MySQL DBA关注点
功能测试环境(保稳)
保障环境正常,基本DBA不在调整该环境的东西
数据库新版本验证(也可以放到这个环节)
数据库权限尽量保持和线上一样的要求(严格控制)
重视该环境的性能问题
功能环境可能遇到的问题
1.索引不合理
2.功能不完善,调整表结构
3.存储过程,定时任务缺失
4.主从故障
性能环境(测极限)
一般基于LR测试
数据初始化(备份)
获取SQL执行频度,优化,读写分离相关工作进一步校验
产出:
基于业务的性能评估(性能测试人员)
数据库的性能情况(DBA)
压测环境可能遇到的问题
1.数据库压挂
2.IO不行
3.buffer pool太小
4.索引不合理
5.慢查询较多
6.优化SQL
线上环境关注点
1.DML操作量 & 事务队列
2.数据增长量
每张表每天增长多少行
每周增加的大小
3.每天binlog形成量,高峰期binlog切换速度
4.每天慢日志情况,错误日志情况
5.每天备份(数据,binlog)
6.高可用架构
线上问题
1.更改表结构
2.迁移
3.性能问题(异常)
4.SQL优化
5.数据一致性校验
6.高可用切换
高性能环境MySQL如何活下来
1.高可用切换后,新节点直接挂掉
从节点负载超过50%
从节点buffer pool没缓存数据
2.连接数较高,出现thread_running过高,数据库挂掉
过载保载
引入thread_pool
3.单表出现热点
读写拆分(认证)
4.update tb set c1 = c1 + 1 where id = xxx; 高并发搞挂数据库
内存中合并更新