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, 高并发搞挂数据库

    内存中合并数据,再提交到数据库

 

猜你喜欢

转载自www.cnblogs.com/yujiaershao/p/11304347.html