my sql管理基础 李春_v2

44
MySQL DBA Team 李李 http://www.hatemysql.com MySQL 李李李李

Upload: lichun-pickup

Post on 11-Feb-2015

1.075 views

Category:

Technology


7 download

DESCRIPTION

mysql overviewmysql replicationmysql HA

TRANSCRIPT

Page 1: My sql管理基础 李春_v2

MySQL DBA Team

李春 http://www.hatemysql.com

MySQL 管理基础

Page 2: My sql管理基础 李春_v2

B2B DBA 全家福

Page 3: My sql管理基础 李春_v2

内容概要

• MySQL Overview

• MySQL Replication

• MySQL HA

Page 4: My sql管理基础 李春_v2

MySQL 结构层次

Page 5: My sql管理基础 李春_v2

• MySQL 提供一个抽象层,允许不同的存储引擎使用相同的API 对表进行访问

• 该接口通过一个被称为 Handler 的抽象类来实现

• 该处理器提供了一些可实现基本操作的方法,如: 打开和关闭表、连续扫描记录、按键值检索记录、存储记

录以及删除记录 等

• 每个存储引擎都执行处理器的一个子类以实现接口方法,以便将处理器操作转化为特定存储引擎的此层次存储 / 检索 API 调用

存储引擎机制

Page 6: My sql管理基础 李春_v2

MySQL 主要存储引擎

• NDB ( 集群引擎 )

• Archive ( 归档引擎 )

• Memory ( 内存引擎 )

• MyISAM ( 非事务引擎 )

• InnoDB ( 事务引擎 )

性能不符合要求

仅支持 SELECT 、 INSERT 操作

数据保存在内存中

Page 7: My sql管理基础 李春_v2

• MyISAM :表级锁,不支持事务

• Innodb :行级锁,支持事务, 高并发

• 默认采用 Innodb ,处理高并发情况下的数据访问

• MyISAM 用于历史表,基本上没有更新的,不涉及业务

MySQL 存储引擎选择

Page 8: My sql管理基础 李春_v2

InnoDB 索引结构

Page 9: My sql管理基础 李春_v2

InnoDB vs MyISAM on Index

Page 10: My sql管理基础 李春_v2

InnoDB 物理文件组成

Page 11: My sql管理基础 李春_v2

InnoDB 物理文件组成• InnoDB 的数据文件包括:

innodb_file_per_table

• .frm 表结构文件• .ibd 表数据文件(数据目录)• 系统元数据和 undo space (共享表空间)• ib_logfile* 重做日志文件 ( Oracle 的 Redo Lo

g )

Page 12: My sql管理基础 李春_v2

• INSERT BUFFER

Innodb 使用 insert buffer 作为缓存:它并不马上更新索引的叶子页,而是把若干对同一页面的更新缓存起来,一次性更新,从而有效节约 I/O

InnoDB 优化设计

Page 13: My sql管理基础 李春_v2

• DOUBLE WRITE

InnoDB 在将数据写到数据文件的时候,会出现只写了一半但由于某种原因剩下的数据没有写到 innodb file 上如果 double write buffer 写成功的话,但是写磁盘失败,innodb 就不用通过事务日志来计算了,而是直接用 buffer 的数据再写一遍

InnoDB 优化设计

Page 14: My sql管理基础 李春_v2

• ADAPTIVE HASH INDEX

InnoDB 存储引擎会监控对表上索引的查找,如果观察到建立哈希索引可以带来速度的提升,则建立哈希索引,所以称之为自适应( adaptive )哈希索引

InnoDB 优化设计

Page 15: My sql管理基础 李春_v2

Adaptive Hash Index

Page 16: My sql管理基础 李春_v2

内容概要

• MySQL Overview

• MySQL Replication

• MySQL HA

Page 17: My sql管理基础 李春_v2

• 提供实时热备,保证高可用性

• MySQL 的所有高可用架构都是基于复制的, Replication 是高可用的核心和基础

DBA 的使命:提供高可用,可扩展,高性能的数据存储服务

Replication 作用

Page 18: My sql管理基础 李春_v2

• 将在 A 机器上执行的所有 SQL 序列在 B 上原样重复执行一遍

• 在 MySQL 中称之为 : statementbinlog-format=statement

• mysqlbinlog 工具mysqlbinlog binlog 文件名

实现方式 1

Page 19: My sql管理基础 李春_v2

• rand() 函数• uuid() 函数• 自增......

statement 方式的问题

Page 20: My sql管理基础 李春_v2

• 将在 A 机器上数据行的变化在 B 上原样做一遍

• 在 MySQL 中称之为 : row

binlog-format=row

• mysqlbinlog 工具

mysqlbinlog binlog 文件名

实现方式 2

Page 21: My sql管理基础 李春_v2

• mysqlbinlog -vv

mysqlbinlog

Page 22: My sql管理基础 李春_v2

• binlog 文件大小的问题

如: update a set c1=100 where id <1000000;

row 方式的问题

Page 23: My sql管理基础 李春_v2

• Statement 和 row 方式的组合

• 在 MySQL 中称之为 : mixed

binlog-format=mixed

• mysqlbinlog 工具

mysqlbinlog binlog 文件名

实现方式 3

Page 24: My sql管理基础 李春_v2

• 第二种方式: binlog-format=row

• 理由:

statement 可能造成主备不一致

一次更新很多行的情况在网站的数据库上应用很少erosa解析日志需要 row 方式

线上数据库选择

Page 25: My sql管理基础 李春_v2

MySQL 复制基本原理

Page 26: My sql管理基础 李春_v2

• MySQL Replication 的基本原理是通过 binlog 复制应用的方式来还原数据

• MySQL 通过 server_id 来识别产生 binlog 的主机,因此即使双Master 复制,也不会出现 binlog 被重复应用

MySQL 复制基本原理

Page 27: My sql管理基础 李春_v2

• 复制线程分为 Slave IO 和 Slave SQL : Slave IO线程只负责注册到 Master 上,读取 binlog ,然后解析到本地, Slave SQL线程只负责把 Slave IO线程产生的可执行 SQL 应用到本地

• 避免主键冲突, MySQL 提供了auto_increment_increment 和 auto_increment_offset 来控制主键生成的序列,只要双Master 的两台主机没有相同的序列,就绝对不可能复制冲突

MySQL 复制基本原理

Page 28: My sql管理基础 李春_v2

双向复制

Page 29: My sql管理基础 李春_v2

级联复制

Page 30: My sql管理基础 李春_v2

双向 + 级联复制

Page 31: My sql管理基础 李春_v2

• 环形复制架构

• 1 Master + n slave 读写分离架构(百度)

其他复制架构

Page 32: My sql管理基础 李春_v2

内容概要

• MySQL Overview

• MySQL Replication

• MySQL HA

Page 33: My sql管理基础 李春_v2

• HA ( High Availability )作用

提供高可用方案

• HA 的需求

提供透明的数据库访问,即使 MySQL 主机宕机

• 实现方式:

Heartbeat

Cobar

为什么需要 HA

Page 34: My sql管理基础 李春_v2

Heartbeat 1

Page 35: My sql管理基础 李春_v2

Heartbeat 2

Page 36: My sql管理基础 李春_v2

• 优点

开源,发展迅速,目前为 3.0版本

双 master 结构, VIP漂移

• 缺点

脑裂问题

不支持分库

VIP漂移应用需要重连数据库

Heartbeat 优劣势分析

Page 37: My sql管理基础 李春_v2

Cobar 1.0

Page 38: My sql管理基础 李春_v2

• 优点 平台部门开发

支持分库 连接池管理

JDBC协议

• 缺点所有 SQL 都需要带上分库键的 where条件

cobar 内存限制 各 cobar 服务器之间没有通讯

Cobar 1.0 优劣势分析

Page 39: My sql管理基础 李春_v2

Cobar 1.1

Page 40: My sql管理基础 李春_v2

• 优点

连接池管理

MySQL协议

没有 cobar 内存限制

• 缺点

不支持分库

推出时间不长,未进入稳定期

Cobar 1.1 优劣势分析

Page 41: My sql管理基础 李春_v2

Offer 集群架构解析

Page 42: My sql管理基础 李春_v2

Virtual partition

Virtual partition

Virtual partition

Virtual partition

Virtual partition

Virtual partition

Physical node

Virtual partition

Virtual partition

Virtual partition

Virtual partition

Virtual partition

Virtual partition

Physical node

Virtual partition

Virtual partition

Virtual partition

Virtual partition

Virtual partition

Virtual partition

Physical node

Virtual partition

Virtual partition

Virtual partition

Virtual partition

Virtual partition

Virtual partition

Physical node

Virtual partition

Virtual partition

Virtual partition

Virtual partition

Virtual partition

Virtual partition

Virtual partition

Virtual partition

Physical node

Physical node

Virtual partition

Virtual partition

Virtual partition

Virtual partition

Virtual partition

Virtual partition

Virtual partition

Virtual partition

数据切分策略 --Virtual Partition Hash

Page 43: My sql管理基础 李春_v2

推荐书目

Page 44: My sql管理基础 李春_v2

Q&A