免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: cnlnzz01
打印 上一主题 下一主题

浅谈Mysql高可用,DBA们将如何应对? [复制链接]

论坛徽章:
8
2015年亚洲杯之阿联酋
日期:2015-02-19 13:23:46拜羊年徽章
日期:2015-03-03 16:15:432015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:57:092015亚冠之胡齐斯坦钢铁
日期:2015-05-29 12:47:50程序设计版块每日发帖之星
日期:2015-06-03 10:32:58综合交流区版块每日发帖之星
日期:2015-06-03 10:32:582016猴年福章徽章
日期:2016-02-18 15:30:34
11 [报告]
发表于 2015-12-11 10:55 |只看该作者
一直很喜欢Mysql的路过

论坛徽章:
18
2015亚冠之阿尔希拉尔
日期:2015-06-02 09:56:10数据库技术版块每日发帖之星
日期:2016-08-13 06:20:00数据库技术版块每日发帖之星
日期:2016-04-24 06:20:00数据库技术版块每日发帖之星
日期:2016-03-19 06:20:00数据库技术版块每日发帖之星
日期:2015-12-25 06:20:35数据库技术版块每日发帖之星
日期:2015-12-25 06:20:35数据库技术版块每日发帖之星
日期:2015-12-25 06:20:35数据库技术版块每日发帖之星
日期:2015-09-12 06:20:00数据库技术版块每日发帖之星
日期:2015-09-11 06:20:00ChinaUnix专家徽章
日期:2015-06-30 16:29:48ChinaUnix专家徽章
日期:2015-06-30 16:29:342015年中国系统架构师大会
日期:2015-06-29 16:11:28
12 [报告]
发表于 2015-12-11 13:59 |只看该作者
回复 1# cnlnzz01


       1.如果是你,你怎么处理慢查询引起的问题,并且在以后避免这种情况发生?
这个问题要解决的话问题就在研发的了,最好上sql 审计的话可以避免问题

     2.除了慢查询,还有哪些情况会导致MySQL卡顿,查询较慢?
         这个主要有很多主要还是跟调优方面的分类差不多
         硬件征用: 内存cpu io  网络
         配置方面  内存分配不合理  主机参数
        sql 设计: sql 的锁 大的sql  抢占资源等
     3.针对于数据库优化,您有哪些比较实用的建议和想法?
      其实调优的话还是调整平衡  看你得消耗了  调整好 内核参数  配置文件 等
    4.结合生产环境,您觉得MySQL,较于PG NOsql DB2 Sybase MongoDB Oracle等数据库来,他的优点在哪?在什么情况下你会使用其它类型的DB
      其实选择的话没有什么最合适的。还是看业务吧
      交易系统还是适合oracle
      展示等系统 适合mysql
       redis memcached 做缓存
      mongodb  适合分析
      没有绝对的还是看你用什么用的最好把,有时候用的好的话 还是可以省事好多

    5.如果您是数据库的设计者,您会去怎么设计数据库的引擎和结构?
    基本上mysql innodb 存储引擎为主  表必须主键  最好是自增的id 剩下出查询的索引 就好了

论坛徽章:
6
丑牛
日期:2013-09-17 00:18:40未羊
日期:2013-10-31 12:10:47午马
日期:2013-12-07 01:58:50水瓶座
日期:2013-12-24 22:43:12水瓶座
日期:2014-03-15 21:12:13操作系统版块每日发帖之星
日期:2016-08-07 06:20:00
13 [报告]
发表于 2015-12-11 15:12 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
45
2016猴年福章徽章
日期:2016-02-18 16:42:24平安夜徽章
日期:2015-12-27 09:46:0315-16赛季CBA联赛之八一
日期:2015-12-15 17:08:23黄金圣斗士
日期:2015-12-11 09:16:31天蝎座
日期:2015-12-11 09:16:22戌狗
日期:2015-12-11 09:16:19程序设计版块每周发帖之星
日期:2015-12-11 09:15:21操作系统版块每周发帖之星
日期:2015-12-11 09:15:16IT运维版块每周发帖之星
日期:2015-12-11 09:15:09IT运维版块每月发帖之星
日期:2015-12-11 09:15:01CU十四周年纪念徽章
日期:2015-12-11 09:14:40操作系统版块每日发帖之星
日期:2015-12-11 09:13:36
14 [报告]
发表于 2015-12-11 15:24 |只看该作者
不会,拿起小板凳围观

论坛徽章:
6
数据库技术版块每日发帖之星
日期:2015-10-11 06:20:00数据库技术版块每日发帖之星
日期:2015-10-12 06:20:00数据库技术版块每日发帖之星
日期:2015-10-15 06:20:00数据库技术版块每日发帖之星
日期:2015-10-30 06:20:00综合交流区版块每月发帖之星
日期:2015-12-02 14:59:01数据库技术版块每日发帖之星
日期:2015-12-15 06:20:00
15 [报告]
发表于 2015-12-12 20:35 |只看该作者
1. 如果是你,你怎么处理慢查询引起的问题,并且在以后避免这种情况发生?
==>对于这种情况,运维是应该监控,并提前知道的,通过show full processlist;对于什么用用户(User)从哪台主机(Host)来在哪个库(db)上所执行的sql语句运行的状态(Command),该sql运行超过了设定的时间(Time)进行告警.

2. 除了慢查询,还有哪些情况会导致MySQL卡顿,查询较慢?         
==>禁用DNS反向解析,OS以外的,就用1来监控

3. 针对于数据库优化,您有哪些比较实用的建议和想法?
==>数据库的优化,DBA首先要对业务逻辑很熟悉,要在设计阶段进行把控,数据类型尽量精准,尽量避免锁竞争、死锁(尽可能的避免gap)的情况产生,索引要定期的进行检查,检查是否合理,是否达到了最优.

4. 结合生产环境,您觉得 MySQL,较于PG NOsql DB2 Sybase MongoDB Oracle等数据库来,他的优点在哪?在什么情况下你会使用其它类型的DB
  ===》只对Mysql有研究,其他不太熟悉,目前mysql在我们生产环境中用于交易系统(外汇、二元期权、P2P等)此处关于外汇系统,由于汇率tick数据量巨大(接收7家银行、30个货币对一周3亿条数据),后台检索比较麻烦,只能定期进行处理,此处感觉不足.
  
5. 如果您是数据库的设计者,您会去怎么设计数据库的引擎和结构?
===>我首先会去花大量的时间去熟悉业务逻辑,然后根据业务需要进行设计,要让开发者完全认同你的设计.

论坛徽章:
0
16 [报告]
发表于 2015-12-14 10:00 |只看该作者
这本书其实还不错,看完就会觉得不那么高大上,哎,慢慢学,不要着急啊。

论坛徽章:
72
20周年集字徽章-20	
日期:2020-10-28 14:04:30操作系统版块每日发帖之星
日期:2016-07-13 06:20:0015-16赛季CBA联赛之广夏
日期:2016-07-10 09:04:02数据库技术版块每日发帖之星
日期:2016-07-09 06:20:00操作系统版块每日发帖之星
日期:2016-07-09 06:20:00数据库技术版块每日发帖之星
日期:2016-07-07 06:20:00操作系统版块每日发帖之星
日期:2016-07-07 06:20:00操作系统版块每日发帖之星
日期:2016-07-04 06:20:00数据库技术版块每日发帖之星
日期:2016-07-03 06:20:00操作系统版块每日发帖之星
日期:2016-07-03 06:20:00数据库技术版块每日发帖之星
日期:2016-07-02 06:20:00操作系统版块每日发帖之星
日期:2016-07-02 06:20:00
17 [报告]
发表于 2015-12-14 10:08 |只看该作者
本帖最后由 cjfeii 于 2015-12-14 11:54 编辑

1.如果是你,你怎么处理慢查询引起的问题,并且在以后避免这种情况发生?
如果确定是由于慢查询引起的MySQL数据库性能问题,首先通过“show processlist”以及“slow.log”确定具体哪些慢查询,确定之后根据慢查询不同的情况去优化:
    1. 如果是SQL有问题,那么就优化SQL;
    2. 优化之后的SQL,可以通过添加索引来提升查询性能,但是,添加索引是一把双刃剑:会降低“insert/update”的性能,并且还要占用额外的存储空间,所以谨慎的对待添加索引;
    3. 如果添加索引不能很好的提高性能,那么可以根据数据的读写特点以及数据规模去选择合适的存储引擎,虽然在目前innodb引擎性能很好,支持事务,用的也很广泛,但是也不要忽视其他的存储引擎的优势,比如TokuDB的高压缩比以及高insert属性等;
    4. 如果数据规模超出了单机MySQL存储容量范围,那么就需要扩展机器做集群或者替换MySQL数据库寻求更适合的存储数据库;

2.除了慢查询,还有哪些情况会导致MySQL卡顿,查询较慢?
引起MySQL卡顿的情况有很多,但是根本原因主要就是CPU以及IO的抢占。比如:
    1. 大规模的写会占用大量的IO资源会引起MySQL卡顿;
    2. 如果MySQL所在的服务器上运行着其他的应用程序,并占用太多的CPU或是IO,那么也会导致MySQL查询较慢;
    3. 等等。
生产环境永远是最复杂的系统,线上MySQL卡顿也会有多种原因,这就使得掌握查找卡顿原因的方法尤为重要,如:show processlist,top/htop,iostat/iotop,strace等()。

3.针对于数据库优化,您有哪些比较实用的建议和想法?
数据库优化不是一朝一夕就能做好,在平时的工作中要一点一滴的来做,不同部门协同来做:
    1. 数据库设计的时候:合理设计表结构以及合理访问数据库表;
    2. 数据库运行过程中,注意性能的监控,最直观的就是:slowlog和show processlist,还需要注意其他指标的波动(disk, io, net等);
    3. 优化的时候,要全盘考虑,避免只考虑将来而忘掉过去(程序员会发疯的);
    4. 等等。

4.结合生产环境,您觉得MySQL,较于PG NOsql DB2 Sybase MongoDB Oracle等数据库来,他的优点在哪?在什么情况下你会使用其它类型的DB
相对于其他关系型数据库,主要就是:社区比较活跃,软件更新快,从业人员比较多,还有就是免费。
和nosql数据库相比,就是:支持事务,复杂的sql,稳定。
具体选用哪种DB,主要有三个因素——业务数据特点、DB的成熟度、团队的技术栈。比较主流的SQL+NOSQL就是:MySQL+Redis等。


5.如果您是数据库的设计者,您会去怎么设计数据库的引擎和结构?
主要看对数据库的定位,不同的定位导致不同的底层设计(引擎和结构),如果侧重点是事务型,那么就是MySQL、PG的设计等,非事务的话可以考虑nosql的存储模式(Log Structured Merge等)。
我说一个我自己工作中用到的场景:
    有一个特别大的表,这个表用于保存终端上传的数据,只增加不修改,并主要承载一些查询业务(主要是范围查找),目前这张表的存储引擎是innodb。其实不管是事务型的innodb还是非事务型的MyISAM,底层都是B-树或是B+树的存储结构(其他大部分数据库系统也是这样),都是平衡树,写的过程中总会有blance的时候,而且会导致逻辑上相邻的数据在物理上不相邻,在范围访问的过程中会造成很多的随机IO,使得性能有所降低,针对这样的情况有没有更好的存储方式呢?


抛砖引玉:待后者续。。。

论坛徽章:
54
2017金鸡报晓
日期:2017-02-08 10:39:42操作系统版块每日发帖之星
日期:2016-03-08 06:20:00操作系统版块每日发帖之星
日期:2016-03-07 06:20:00操作系统版块每日发帖之星
日期:2016-02-22 06:20:00操作系统版块每日发帖之星
日期:2016-01-29 06:20:00操作系统版块每日发帖之星
日期:2016-01-27 06:20:00操作系统版块每日发帖之星
日期:2016-01-20 06:20:00操作系统版块每日发帖之星
日期:2016-01-06 06:20:0015-16赛季CBA联赛之江苏
日期:2015-12-21 20:00:24操作系统版块每日发帖之星
日期:2015-12-21 06:20:00IT运维版块每日发帖之星
日期:2015-11-17 06:20:002015亚冠之广州恒大
日期:2015-11-12 10:58:02
18 [报告]
发表于 2015-12-14 10:13 |只看该作者
遇到慢查询就想办法绕过去,特别是那些join了一大堆的sql语句,必须绕过去才行,否则卡住整个数据库都不是困难的事,虽然原理上来说join效率应该不低,但有时候还真不如把sql拆分,然后再语言(PHP)上来解决。

论坛徽章:
0
19 [报告]
发表于 2015-12-14 12:18 |只看该作者
回复 1# cnlnzz01

之前我用inforbright ,也曾常出现这样情况,通常是内存耗完后发生。


   

论坛徽章:
4
CU大牛徽章
日期:2013-03-13 15:29:07CU大牛徽章
日期:2013-03-13 15:29:49CU大牛徽章
日期:2013-03-13 15:30:192015亚冠之广州恒大
日期:2015-07-22 17:20:15
20 [报告]
发表于 2015-12-14 17:57 |只看该作者
本帖最后由 ghostwwl 于 2015-12-14 17:57 编辑

1. 开慢查询日志
2. 记得没错的话 应该可以记录所有没有使用索引的语句
3. 根据日志做具体处理
4. innodb 最好每张表 单独表空间
5. 看mysql的状态值 相关配置该调整的调整


有了一少年宫结果慢慢处理
如果结构索引没问题 量大的表 分表才是硬道理

然后 sar ionice iostat 之类 看是否硬件瓶颈
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP