MySQL新项目如何确保上线安全
Posted yujiaershao
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL新项目如何确保上线安全相关的知识,希望对你有一定的参考价值。
DBA最应该做的事情
备份:
建议每天全备
每天把binlog也要进行备份
理想的目标: 可以把数据还原到任意时间点(可以恢复到近两周的任意时间点)(半年以上:每个月一份 )
hdfs,ceph
监控:
了解环境使用情况
zabbix做一个从库,通过数据分析(环比),智能分析平台。
环境可控:
了解数据增长及环比情况
磁盘剩余,要大于单表最大的表的1.5~2倍空间,防止DDL撑满磁盘
新项目开发环境应该注意什么
long_query_time = 1 => 0 记录所有SQL
了解核心业务SQL,提出读写分离和缓存指导建议
功能测试,性能测试中注意校对
备份开发环境(每天一备),放到其他机器上,最好也要有从库
开发把数据误操作干掉
开发服务器机器故障
并发连接太多,DB相应太慢
核心SQL优化,schema调整尽量在这个阶段完成
特别提示:
新技术也可以在这个环境测试一下
功能测试和压测mysql DBA关注点
功能测试环境(保稳)
保障环境正常,基本DBA不在调整该环境的读写
数据库新版本验证(也可以放到这个环节)
数据库权限尽量保持和线上一样要求(严格控制)
重视该环境的性能问题
web端测试(Python + Selenium)
功能测试可能遇到的问题
索引不合理
功能不完善,调整表结构
存储过程,定时任务缺失
主从故障
性能测试(测极限)
一般基于LR测试
数据初始化(备份)
获取SQL执行品读,优化,读写分离相关工作进一步校验
工具:
sysbench / mysql-tpcc
产出:
基于业务的性能评估(性能测试人员)
数据库的性能星空(DBA)
压测环境问题
数据库压挂
IO不行 /Buffer Pool太小 / 索引不合理
慢查询较多
优化SQL
线上环境关注点
DML 操作量 & 事务队列
数据增长量
每张表每天增长多少行
每周增加的大小
每天binlog形成量,高峰期binlog切换速度
每天慢日志情况 & 错误日志
每天备份(数据,binlog)
高可用架构
线上问题
更改表结构
迁移
性能问题(异常)
SQL优化 (SQL审核)
数据一致性校验 (主从切换,异常处理)
高可用切换 (手工维护)
业务在大压力情况下,MySQL如何能活下来
高可用切换后,新节点直接挂掉
从节点负载超过50% (30% 以下)
从节点Buffer Pool 没缓存数据
连接数较高,出现 thread_running 过高,数据库挂掉
过载保护 (thread_running 超过CPU 核数 告警,pt-kill )
引入 thread_pool
单表出现热点
读写拆分(认证)
Updata tb set c1 = c1 + 1 where id = xxx, 高并发搞挂数据库
内存中合并数据,再提交到数据库
以上是关于MySQL新项目如何确保上线安全的主要内容,如果未能解决你的问题,请参考以下文章
如何保护您的SpringBoot项目:防止源代码泄露,确保更安全的部署
10分钟带你了解Android项目构建流程,助你顺利通过面试!