Suche senden
Hochladen
MySQL运维那些事
•
0 gefällt mir
•
326 views
L
Leo Zhou
Folgen
2015中华数据库与运维大会
Weniger lesen
Mehr lesen
Technologie
Melden
Teilen
Melden
Teilen
1 von 34
Jetzt herunterladen
Downloaden Sie, um offline zu lesen
Empfohlen
OceanBase-破解数据库高可用难题
OceanBase-破解数据库高可用难题
everestsun
Jmm与map reduce简介
Jmm与map reduce简介
huozhanfeng
HBase@taobao for 技术沙龙
HBase@taobao for 技术沙龙
bluedavy lin
From Java Stream to Java DataFrame
From Java Stream to Java DataFrame
Chen-en Lu
基于hbase的实时计算框架prom(20111114)
基于hbase的实时计算框架prom(20111114)
yiihsia
MySQL InnoDB 源码实现分析(一)
MySQL InnoDB 源码实现分析(一)
frogd
My sql 5.6新特性深入剖析——innodb引擎
My sql 5.6新特性深入剖析——innodb引擎
frogd
Database.Cache&Buffer&Lock
Database.Cache&Buffer&Lock
Lixun Peng
Empfohlen
OceanBase-破解数据库高可用难题
OceanBase-破解数据库高可用难题
everestsun
Jmm与map reduce简介
Jmm与map reduce简介
huozhanfeng
HBase@taobao for 技术沙龙
HBase@taobao for 技术沙龙
bluedavy lin
From Java Stream to Java DataFrame
From Java Stream to Java DataFrame
Chen-en Lu
基于hbase的实时计算框架prom(20111114)
基于hbase的实时计算框架prom(20111114)
yiihsia
MySQL InnoDB 源码实现分析(一)
MySQL InnoDB 源码实现分析(一)
frogd
My sql 5.6新特性深入剖析——innodb引擎
My sql 5.6新特性深入剖析——innodb引擎
frogd
Database.Cache&Buffer&Lock
Database.Cache&Buffer&Lock
Lixun Peng
Mysql调优
Mysql调优
ken shin
Spark性能调优分享
Spark性能调优分享
Wenchun Xu
Leveldb background
Leveldb background
宗志 陈
Mvcc (oracle, innodb, postgres)
Mvcc (oracle, innodb, postgres)
frogd
Level db
Level db
宗志 陈
Spark streaming经验介绍
Spark streaming经验介绍
Wenchun Xu
基于Spring batch的大数据量并行处理
基于Spring batch的大数据量并行处理
Jacky Chi
InnoDB Transaction Lock and MVCC
InnoDB Transaction Lock and MVCC
frogd
Google LevelDB Study Discuss
Google LevelDB Study Discuss
everestsun
SMACK Dev Experience
SMACK Dev Experience
Chih-Hsuan Hsu
数据库内核分享——第一期
数据库内核分享——第一期
frogd
从学校到职场
从学校到职场
LC2009
Managing Complex Transformations
Managing Complex Transformations
Niresh Rajah
Dr dinakar talk
Dr dinakar talk
Teleradiology Solutions
Evidence based neonatology
Evidence based neonatology
mohamed osama hussein
Code review
Code review
Raquel Pau
HGConcept-ITOM-Service Centric Operations
HGConcept-ITOM-Service Centric Operations
HGConcept Inc.
An approach to a Floppy infant - Dr Sujit
An approach to a Floppy infant - Dr Sujit
Sujit Shrestha
approach to a floppy infant
approach to a floppy infant
Anil Kumar KM
Textile research & innovation from 2005 to 2025
Textile research & innovation from 2005 to 2025
European Technology Platform for the Textile & Clothing Industry
Professional Etiquette At The Workplace
Professional Etiquette At The Workplace
Rajiv Bajaj
The Workforce Engages
The Workforce Engages
Webtrends
Weitere ähnliche Inhalte
Was ist angesagt?
Mysql调优
Mysql调优
ken shin
Spark性能调优分享
Spark性能调优分享
Wenchun Xu
Leveldb background
Leveldb background
宗志 陈
Mvcc (oracle, innodb, postgres)
Mvcc (oracle, innodb, postgres)
frogd
Level db
Level db
宗志 陈
Spark streaming经验介绍
Spark streaming经验介绍
Wenchun Xu
基于Spring batch的大数据量并行处理
基于Spring batch的大数据量并行处理
Jacky Chi
InnoDB Transaction Lock and MVCC
InnoDB Transaction Lock and MVCC
frogd
Google LevelDB Study Discuss
Google LevelDB Study Discuss
everestsun
SMACK Dev Experience
SMACK Dev Experience
Chih-Hsuan Hsu
数据库内核分享——第一期
数据库内核分享——第一期
frogd
Was ist angesagt?
(11)
Mysql调优
Mysql调优
Spark性能调优分享
Spark性能调优分享
Leveldb background
Leveldb background
Mvcc (oracle, innodb, postgres)
Mvcc (oracle, innodb, postgres)
Level db
Level db
Spark streaming经验介绍
Spark streaming经验介绍
基于Spring batch的大数据量并行处理
基于Spring batch的大数据量并行处理
InnoDB Transaction Lock and MVCC
InnoDB Transaction Lock and MVCC
Google LevelDB Study Discuss
Google LevelDB Study Discuss
SMACK Dev Experience
SMACK Dev Experience
数据库内核分享——第一期
数据库内核分享——第一期
Andere mochten auch
从学校到职场
从学校到职场
LC2009
Managing Complex Transformations
Managing Complex Transformations
Niresh Rajah
Dr dinakar talk
Dr dinakar talk
Teleradiology Solutions
Evidence based neonatology
Evidence based neonatology
mohamed osama hussein
Code review
Code review
Raquel Pau
HGConcept-ITOM-Service Centric Operations
HGConcept-ITOM-Service Centric Operations
HGConcept Inc.
An approach to a Floppy infant - Dr Sujit
An approach to a Floppy infant - Dr Sujit
Sujit Shrestha
approach to a floppy infant
approach to a floppy infant
Anil Kumar KM
Textile research & innovation from 2005 to 2025
Textile research & innovation from 2005 to 2025
European Technology Platform for the Textile & Clothing Industry
Professional Etiquette At The Workplace
Professional Etiquette At The Workplace
Rajiv Bajaj
The Workforce Engages
The Workforce Engages
Webtrends
Bridging the Gap Between Data Science & Engineer: Building High-Performance T...
Bridging the Gap Between Data Science & Engineer: Building High-Performance T...
ryanorban
Andere mochten auch
(12)
从学校到职场
从学校到职场
Managing Complex Transformations
Managing Complex Transformations
Dr dinakar talk
Dr dinakar talk
Evidence based neonatology
Evidence based neonatology
Code review
Code review
HGConcept-ITOM-Service Centric Operations
HGConcept-ITOM-Service Centric Operations
An approach to a Floppy infant - Dr Sujit
An approach to a Floppy infant - Dr Sujit
approach to a floppy infant
approach to a floppy infant
Textile research & innovation from 2005 to 2025
Textile research & innovation from 2005 to 2025
Professional Etiquette At The Workplace
Professional Etiquette At The Workplace
The Workforce Engages
The Workforce Engages
Bridging the Gap Between Data Science & Engineer: Building High-Performance T...
Bridging the Gap Between Data Science & Engineer: Building High-Performance T...
Ähnlich wie MySQL运维那些事
Mysql数据库开发的三十六条军规 石展_完整
Mysql数据库开发的三十六条军规 石展_完整
Yousri Yan
My sql数据库开发的三十六条军规
My sql数据库开发的三十六条军规
isnull
MySQL数据库开发的三十六条军规
MySQL数据库开发的三十六条军规
mysqlops
MySQL运维那些事
MySQL运维那些事
Jinrong Ye
服务器基准测试-叶金荣@CYOU-20121130
服务器基准测试-叶金荣@CYOU-20121130
Jinrong Ye
诗檀软件 Oracle开发优化基础
诗檀软件 Oracle开发优化基础
maclean liu
Mysql fast share
Mysql fast share
rfyiamcool
Hacking Nginx at Taobao
Hacking Nginx at Taobao
Joshua Zhu
浅谈 My sql 性能调优
浅谈 My sql 性能调优
thinkinlamp
MySQL应用优化实践
MySQL应用优化实践
mysqlops
分布式Key Value Store漫谈
分布式Key Value Store漫谈
Tim Y
分布式Key-value漫谈
分布式Key-value漫谈
lovingprince58
Nosql三步曲
Nosql三步曲
84zhu
MySQL多机房容灾设计(with Multi-Master)
MySQL多机房容灾设计(with Multi-Master)
Lixun Peng
MySQL压力测试经验
MySQL压力测试经验
Jinrong Ye
How do we manage more than one thousand of Pegasus clusters - backend part
How do we manage more than one thousand of Pegasus clusters - backend part
acelyc1112009
分布式存储与TDDL
分布式存储与TDDL
mysqlops
基于MySQL开放复制协议的同步扩展
基于MySQL开放复制协议的同步扩展
Sky Jian
Web请求异步处理和海量数据即时分析在淘宝开放平台的实践
Web请求异步处理和海量数据即时分析在淘宝开放平台的实践
mysqlops
李战怀 大数据环境下数据存储与管理的研究
李战怀 大数据环境下数据存储与管理的研究
jins0618
Ähnlich wie MySQL运维那些事
(20)
Mysql数据库开发的三十六条军规 石展_完整
Mysql数据库开发的三十六条军规 石展_完整
My sql数据库开发的三十六条军规
My sql数据库开发的三十六条军规
MySQL数据库开发的三十六条军规
MySQL数据库开发的三十六条军规
MySQL运维那些事
MySQL运维那些事
服务器基准测试-叶金荣@CYOU-20121130
服务器基准测试-叶金荣@CYOU-20121130
诗檀软件 Oracle开发优化基础
诗檀软件 Oracle开发优化基础
Mysql fast share
Mysql fast share
Hacking Nginx at Taobao
Hacking Nginx at Taobao
浅谈 My sql 性能调优
浅谈 My sql 性能调优
MySQL应用优化实践
MySQL应用优化实践
分布式Key Value Store漫谈
分布式Key Value Store漫谈
分布式Key-value漫谈
分布式Key-value漫谈
Nosql三步曲
Nosql三步曲
MySQL多机房容灾设计(with Multi-Master)
MySQL多机房容灾设计(with Multi-Master)
MySQL压力测试经验
MySQL压力测试经验
How do we manage more than one thousand of Pegasus clusters - backend part
How do we manage more than one thousand of Pegasus clusters - backend part
分布式存储与TDDL
分布式存储与TDDL
基于MySQL开放复制协议的同步扩展
基于MySQL开放复制协议的同步扩展
Web请求异步处理和海量数据即时分析在淘宝开放平台的实践
Web请求异步处理和海量数据即时分析在淘宝开放平台的实践
李战怀 大数据环境下数据存储与管理的研究
李战怀 大数据环境下数据存储与管理的研究
Mehr von Leo Zhou
第三名 3rd zhyict
第三名 3rd zhyict
Leo Zhou
异常检测在苏宁的实践
异常检测在苏宁的实践
Leo Zhou
第二名 2nd 火眼金睛
第二名 2nd 火眼金睛
Leo Zhou
第四名 4th H3C AI Institute
第四名 4th H3C AI Institute
Leo Zhou
第一名 1st Bocoiops
第一名 1st Bocoiops
Leo Zhou
第六名 6th Aurora
第六名 6th Aurora
Leo Zhou
AI使能网络自动驾驶 AI Building Autonomous Driving Network
AI使能网络自动驾驶 AI Building Autonomous Driving Network
Leo Zhou
2.2 go在阿里云cdn系统的应用
2.2 go在阿里云cdn系统的应用
Leo Zhou
1.6 米嘉 gobuildweb
1.6 米嘉 gobuildweb
Leo Zhou
1.4 go在数据存储上面的应用—毛剑
1.4 go在数据存储上面的应用—毛剑
Leo Zhou
1.2 刘奇 go在分布式数据库中的应用
1.2 刘奇 go在分布式数据库中的应用
Leo Zhou
Protocol libraries the right way
Protocol libraries the right way
Leo Zhou
美团数据库运维平台介绍
美团数据库运维平台介绍
Leo Zhou
特卖场景下的大数据平台和机器学习实践
特卖场景下的大数据平台和机器学习实践
Leo Zhou
我的互联网运维理论与实践
我的互联网运维理论与实践
Leo Zhou
如何选择 Docker 监控方案
如何选择 Docker 监控方案
Leo Zhou
美团数据库运维平台介绍
美团数据库运维平台介绍
Leo Zhou
The net is dark and full of terrors - James Bennett
The net is dark and full of terrors - James Bennett
Leo Zhou
Hypothesis randomised testing for django
Hypothesis randomised testing for django
Leo Zhou
NoSQL@VIP — 唯品会NoSQL平台⾃动化发展及运维经验分享
NoSQL@VIP — 唯品会NoSQL平台⾃动化发展及运维经验分享
Leo Zhou
Mehr von Leo Zhou
(20)
第三名 3rd zhyict
第三名 3rd zhyict
异常检测在苏宁的实践
异常检测在苏宁的实践
第二名 2nd 火眼金睛
第二名 2nd 火眼金睛
第四名 4th H3C AI Institute
第四名 4th H3C AI Institute
第一名 1st Bocoiops
第一名 1st Bocoiops
第六名 6th Aurora
第六名 6th Aurora
AI使能网络自动驾驶 AI Building Autonomous Driving Network
AI使能网络自动驾驶 AI Building Autonomous Driving Network
2.2 go在阿里云cdn系统的应用
2.2 go在阿里云cdn系统的应用
1.6 米嘉 gobuildweb
1.6 米嘉 gobuildweb
1.4 go在数据存储上面的应用—毛剑
1.4 go在数据存储上面的应用—毛剑
1.2 刘奇 go在分布式数据库中的应用
1.2 刘奇 go在分布式数据库中的应用
Protocol libraries the right way
Protocol libraries the right way
美团数据库运维平台介绍
美团数据库运维平台介绍
特卖场景下的大数据平台和机器学习实践
特卖场景下的大数据平台和机器学习实践
我的互联网运维理论与实践
我的互联网运维理论与实践
如何选择 Docker 监控方案
如何选择 Docker 监控方案
美团数据库运维平台介绍
美团数据库运维平台介绍
The net is dark and full of terrors - James Bennett
The net is dark and full of terrors - James Bennett
Hypothesis randomised testing for django
Hypothesis randomised testing for django
NoSQL@VIP — 唯品会NoSQL平台⾃动化发展及运维经验分享
NoSQL@VIP — 唯品会NoSQL平台⾃动化发展及运维经验分享
MySQL运维那些事
1.
MySQL运维那些事 叶金荣 2015.06.06
2.
模式设计、优化
3.
InnoDB表主键设计 • 默认地,采用INT AUTO_INCREMENT作为主键
• 读多写少的从库或归档库除外 • 优点 • B+Tree分裂代价小,写入效率相对高9%+ • 该字段和业务无关,变更灵活 • 类似分页场景中,表连接效率更高 • 缺点 • 基于secondary key查找时,需要多一次读 • 多占用一些存储空间 案例: hAp://t.cn/RhJlR9n hAp://t.cn/RPGkTeI
4.
BIGINT/char(3)/TINYINT • type列:8-‐bytes vs
3(实际*3)-‐bytes vs 1-‐byte • 1000万行记录,type列分别采用上述三种类型 • 存储空间对比 • char(3)相比Rnyint大280MB • bigint相比Rnyint大136MB
5.
BIGINT/char(3)/TINYINT • type列:8-‐bytes vs
3(实际*3)-‐bytes vs 1-‐byte • 1000万行记录,type列分别采用上述三种类型 • 根据PK随机读取1000万次 • char(3)相比Rnyint多691MB • bigint相比Rnyint多3758MB
6.
BIGINT/char(3)/TINYINT • type列:8-‐bytes vs
3(实际*3)-‐bytes vs 1-‐byte • 1000万行记录,type列分别采用上述三种类型 • 根据type列(有索引)随机读取50万次 • char(3)相比Rnyint多423MB • bigint相比Rnyint多446MB • char(3)还有隐式类型转换风险 • 综上,强烈建议小范围的枚举型采用Rnyint
7.
TEXT/BLOB有多糟糕 • 超长TEXT/BLOB字段off-‐page存储 •
I/O效率差,消耗磁盘空间大,读写以及搜索效率也会差很多 • SELECT * 的时候也会完全读取大字段 • 哪怕只多出来1个字节,也会独自占用一个page • 案例 • 大量的TEXT字段尽量对齐重整 • 原先100G的大表拆分成多个子表 • 总大小也只有原来的1/4 • 建议:少用TEXT,或者分离到子表上
8.
还要用TIMESTAMP代替DATETIME吗 • 5.6.5以前确实强烈建议这么做 •
5.6.5以后基本可忽略这个规范了 • 5-‐bytes(之前是8-‐bytes) vs 4-‐bytes • DATETIME支持的范围更大 • DATETIME也支持初始及自动更新成CURRENT_TIMESTAMP • 综上,根据实际情况选择吧
9.
联合索引怎么用 • 哪个不能完整用到联合索引k1(c1, c2,
c3) WHERE c1 = ? AND c2 IN (?, ?) AND c3 = ? WHERE c1 = ? AND c2 =? ORDER BY c3 WHERE c3 = ? AND c1 = ? AND c2 IN (?, ?) WHERE c1 = ? AND c2 IN (?, ?) ORDER BY c3 建议新增 (c1, c3) 索引 √ x √ √
10.
JOIN中驱动表的选择 [employees]>EXPLAIN SELECT b.emp_no,a.Rtle,a.from_date,a.to_date
-‐> FROM Rtles a -‐> INNER JOIN employees b -‐> on a.emp_no = b.emp_no;
11.
JOIN中驱动表的选择 [employees]>EXPLAIN SELECT b.emp_no,a.Rtle,a.from_date,a.to_date
-‐> FROM Rtles a -‐> LEFT JOIN employees b -‐> on a.emp_no = b.emp_no;
12.
JOIN中驱动表的选择 [employees]>EXPLAIN SELECT b.emp_no,a.Rtle,a.from_date,a.to_date
-‐> FROM Rtles a -‐> STRAIGHT_JOIN employees b -‐> on a.emp_no = b.emp_no;
13.
JOIN中驱动表的选择
• INNER JOIN驱动顺序由优化器指定,有时会选择错误,可用LEFT JOIN或STRAIGHT_JOIN指定顺序,但要注意结果的正确性 • 案例:hAp://t.cn/RZV2Fya
14.
SQL怎么写不会踩坑 • 写法1:UPDATE t1
SET c3 = ‘v3’ WHERE c1 = @c1 AND c2 = @c2; • 写法2:UPDATE t1 SET c3 = ‘v3’ WHERE c1 = @c1 AND c2 = @c2; • 写法3:UPDATE t1 SET c3 = ‘v3’ WHERE 1 = 1 AND c1 = @c1 AND c2 = @c2;
15.
模式设计总结 • 字段长度够用就好 •
用好索引,尤其是联合索引 • 关注新版本的变化,比如5.7里的很多新特性非常诱人 • 自己多动手,不要“听说、据说”
16.
关于架构设计
17.
分库分表真的有必要吗 • 为什么提倡分库分表 •
好处,单实例压力小,单节点故障影响范围小 • 坏处,架构更复杂,逻辑实现更麻烦 • 那么,你想清楚了吗 • 建议量力而行
18.
前端cache/nosql层重要吗 • 如果没有cache/nosql层会怎样 •
数十万级tps vs 数千级tps • 每秒数万次简单UPDATE COUNT+1就能搞垮MySQL • 点击数、阅读数无需实时存盘,更新到nosql层 • 不常更新但频繁读取的数据,放在cache层 • 简单K-‐V数据放在nosql层
19.
什么样的高可用方案是最合适的 • 简单的,用keepalived管理双主/主从两个节点 •
略复杂的,用MHA管理1主(或双主)多从 • 或者,也可以考虑PXC方案 • 更大一些的,用ZK管理集群 • 哪个用的最顺手,就选择哪个 • 全自动还是半自动切换呢?心里没底时,就先半自动吧
20.
运维经验
21.
单表大小建议 • 物理大小不超过10G •
行数不过亿 • 平均物理行长度不超过8KB
22.
最好还是关闭query cache吧 • query
cache大多数情况下鸡肋,最好关闭 • QC锁是全局锁,每次更新QC的内存块锁代价高,很容易出现 WaiRng for query cache lock状态 • 想关闭query cache的话,size和type两个选项都设为0 • 参考:hAp://t.cn/RAF4d7z hAp://t.cn/RAF4d7Z
23.
分支版本选择个人看法 • 优先选择Percona •
其次才是MariaDB • 未来更看好MariaDB,其更具核心竞争力 • 但MariaDB和ORACLE MySQL越离越远,兼容性是个大问题 • 用Percona/MariaDB时,记得开thread pool
24.
几个案例分享
25.
案例一 • too many
connecRons的处理 • 常规的做法是这样:想办法杀掉多余的连接,加大连接数 • 其实应该是这样:限制连接数,设定max_user_connecRons • 如果是这样呢:extra-‐port • 建议:定时检查,干掉慢查询,避免阻塞,自我保护
26.
案例二 • 新初始化的slave实例启动时报告InnoDB数据页损坏错误 •
原因 • redo log file大小和my.cnf配置值不一样 • 5.6.8后会判断innodb_log_file_size值,决定是否自动重建redo log • 重建后,导致部分数据丢失,发生page crash 案例: hAp://t.cn/RAYTCbP
27.
关于运行环境
28.
运行环境 • raid卡:FORCE WB
29.
运行环境 • 关闭numa
30.
运行环境 • 关闭numa
31.
运行环境 • I/O,deadline •
ext3早已渣的不行了 • I/O压力不大时也可选择ext4,高I/O时选择xfs最可靠 Directory contents File alloca1on xfs B+ trees B+ trees ext4 Linked list, hashed B-‐tree Extents/Bitmap
32.
运行环境 • 内核相关参数 •
内存、I/O相关 • vm.swappiness,不高于5-‐10 • /proc/sys/vm/dirty_background_raRo,不高于10 • /proc/sys/vm/dirty_raRo,不高于30,比dirty_background_raRo大,避免I/O子系统 hang住 • /sys/block/xxx/queue/read_ahead_kb,对读为主的场景影响较大,其余可不关注 • /sys/block/xxx/queue/nr_requests,对顺序写入为主的场景影响较大,其余可不关注 • 网络相关 • net.ipv4.tcp_tw_recycle = 1 • net.ipv4.tcp_tw_reuse = 1
33.
值得期待的5.7 • 官方号称比5.6快2倍多 •
实际OLTP测试时,比Percona-‐5.6还要快8%,但高并发时则慢了10% • 多源复制(mulR-‐source replicaRon) • 对于分库分表的场景尤其实用 • 在线扩展VARCHAR列长度 • 支持多个page cleaner线程 • 更好支持Fusion-‐io设备 • 在线修改innodb buffer pool大小 • EXPLAIN for Running Queries • InnoDB新增只读事务模式 • InnoDB Faster & Parallel Flushing • 以及查询优化器上的各种改进
34.
• 微信号
• 微博号
Jetzt herunterladen