31
MySQL 数数数数数数数数数数数 2013 年 7 年 数数数 136 6166 8096 [email protected]

MySQL 数据库运维管理基础知识

Embed Size (px)

DESCRIPTION

MySQL 数据库运维管理基础知识. 金官丁 136 6166 8096 [email protected]. 2013 年 7 月. 目录. 数据库版本选择 数据库监控体系 数据库备份恢复策略 大数据量 DML 操作的技巧 DDL 变更注意事项和变更技巧 在线数据库迁移的技巧. 数据库版本选择. MySQL 数据库分支. 数据库版本选择. MySQL 数据库版本种类. 版本号小于 5.0 : MySQL3.X MySQL4.X 等 MySQL5.0.X - PowerPoint PPT Presentation

Citation preview

Page 1: MySQL 数据库运维管理基础知识

MySQL 数据库运维管理基础知识

2013 年 7 月

金官丁136 6166 8096

[email protected]

Page 2: MySQL 数据库运维管理基础知识

2

数据库版本选择

数据库监控体系

数据库备份恢复策略

大数据量 DML 操作的技巧

DDL 变更注意事项和变更技巧

在线数据库迁移的技巧

目录

Page 3: MySQL 数据库运维管理基础知识

3

数据库版本选择 MySQL 数据库分支

Page 4: MySQL 数据库运维管理基础知识

4

数据库版本选择 MySQL 数据库版本种类 版本号小于 5.0 : MySQL3.X MySQL4.X 等 MySQL5.0.X

MySQL5.1.X+Build-in InnoDB 存储引擎 MySQL5.1.X+Plug-in InnoDB 存储引擎 MySQL5.5.X

MySQL5.6.X

MySQL Cluster 6.2.X 和 MySQL Cluster 6.3.X

MySQL Cluster 7.0.X

MySQL Cluster 7.1.X

MySQL Cluster 7.2.X

MySQL Cluster 7.3.X

Page 5: MySQL 数据库运维管理基础知识

5

数据库版本选择 挑选版本的技巧

大版本发布,至少要大于或等于 18 个版本号

最新版本号倒退 1-2 个版本号

假设选择版本号为 MySQL5.5.31

看版本号 MySQL5.5.31 修复的 BUG 数和新增功能

看版本号 MySQL5.5.32 修复的 BUG 数

看版本号 MySQL5.5.30 修复的 BUG 数和新增功能

Page 6: MySQL 数据库运维管理基础知识

6

数据库版本选择 版本定型的过程 内部的功能测试,以用到的 MySQL 功能为测试基准

针对用到的 MySQL 功能做基准的压力测试

内部开发环境试用

内部产品的功能和性能测试环境试用

稳定性要求不高且请求量一般的生产环境试用

稳定性要求中等且请求量高的生产环境试用

生产环境正式试用

Page 7: MySQL 数据库运维管理基础知识

7

数据库版本选择

数据库监控体系

数据库备份恢复策略

大数据量 DML 操作的技巧

大表 DDL 变更注意事项和变更技巧

在线数据库迁移的技巧

目录

Page 8: MySQL 数据库运维管理基础知识

8

数据库监控体系 数据库服务是否正常 数据库的性能 数据库的逻辑 IO 和物理 IO

数据库的业务量 数据库的数据与二进制日志的增长量 主机的 CPU 、 IO 、内存、网卡流量、数据增长 数据库的日志 主机系统的日志

Page 9: MySQL 数据库运维管理基础知识

9

数据库版本选择

数据库监控体系

数据库备份恢复策略

大数据量 DML 操作的技巧

大表 DDL 变更注意事项和变更技巧

在线数据库迁移的技巧

目录

Page 10: MySQL 数据库运维管理基础知识

10

数据库备份恢复策略 数据故障恢复指标 业务中断小于 10 秒钟,则在线热备 业务中断小于 5 分钟,则在线延迟恢复热备 业务中断小于 2 小时,则完整备份 + 二进制日志备份

数据库备份恢复规划 双主在线热备 双主在线热备 + 延迟恢复备库 每天完整备份 + 每小时二进制日志备份

数据库备份恢复软件组合 开源工具: mysqldump

开源工具: xtrabackup 或 收费工具: InnoDB hot backup

Page 11: MySQL 数据库运维管理基础知识

11

数据库版本选择

数据库监控体系

数据库备份恢复策略

大数据量 DML 操作的技巧

大表 DDL 变更注意事项和变更技巧

在线数据库迁移的技巧

目录

Page 12: MySQL 数据库运维管理基础知识

12

大数据量 DML 操作的技巧

大数据量 INSERT

大数据量 UPDATE

大数据量 DELETE

Page 13: MySQL 数据库运维管理基础知识

13

大数据量 DML 操作的技巧

大数据量 INSERT

INSERT INTO … VALUES(),(),()….

LOAD DATA ….

写入临时表,再 INSERT … SELECT … 或循环判断写入

Page 14: MySQL 数据库运维管理基础知识

14

大数据量 DML 操作的技巧

大数据量 UPDATE

SELECT 唯一字段,变更字段

查询结果集写入临时表

给临时表创建组合索引

循环临时表的每条记录

依据临时表的唯一字段值,更新目标表的相关字段值

Page 15: MySQL 数据库运维管理基础知识

15

大数据量 DML 操作的技巧

大数据量 DELETE

若是定期且特殊规则删除大批量的数据,则建议采用分区表

若是定期且无特殊规则删除大批量的数据,则分区表 +UPDATE

若是上述 2 种方式无法使用,则可以主备轮流删除 + 数据服务

切换

若是上述 3 种方式无法使用

调整参数…,直接执行 DELETE 批量语句

先查询出要删除数据的唯一标识写入临时表,然后游标循环删除

Page 16: MySQL 数据库运维管理基础知识

16

数据库版本选择

数据库监控体系

数据库备份恢复策略

大数据量 DML 操作的技巧

大表 DDL 变更注意事项和变更技巧

在线数据库迁移的技巧

目录

Page 17: MySQL 数据库运维管理基础知识

17

大表 DDL 变更注意事项和变更技巧

变更注意事项

表级锁

InnoDB 存储引擎的数据字典锁

DDL 加速技巧

Page 18: MySQL 数据库运维管理基础知识

18

大表 DDL 变更注意事项和变更技巧

变更注意事项 增加字段必须要有默认值例如 :ALTER TABLE tmp_test ADD COLUMN gmt_CreateDate TIMESTAMP NOT NULL DEFAULT ‘0000-00-00 00:00:00’;

增加的字段不能指定字段顺序,必须默认尾部增加模式例如:增加一个字段到表对象的头部ALTER TABLE tmp_test ADD COLUMN age TINYINT UNSIGNED NOT NULL DEFAULT 0 FIRST;

这是我们强烈反对的行为,可能导致需要更多时间用于数据重整,以及对复制同步可能造成数据错乱,应该写成:ALTER TABLE tmp_test ADD COLUMN age TINYINT UNSIGNED NOT NULL DEFAULT 0;

Page 19: MySQL 数据库运维管理基础知识

19

大表 DDL 变更注意事项和变更技巧

变更注意事项 建议表设计都设置为 NOT NULL 且默认值 非 NULL 且有默认值的字段属性,有利于提高数据比对检索的性能,更加有利于索引结构的优化 同一表增加多个字段,不分多条语句,而应只用一条变更语句例如:ALTER TABLE tmp_test ADD COLUMN age TINYINT UNSIGNED NOT NULL DEFAULT 0;

ALTER TABLE tmp_test ADD COLUMN gmt_CreateDate TIMESTAMP NOT NULL DEFAULT ‘0000-00-00’;

应该改写成:ALTER TABLE tmp_test

ADD COLUMN age TINYINT UNSIGNED NOT NULL DEFAULT 0,

ADD COLUMN gmt_CreateDate TIMESTAMP NOT NULL DEFAULT '0000-00-00';

Page 20: MySQL 数据库运维管理基础知识

20

大表 DDL 变更注意事项和变更技巧 表级锁

InnoDB 存储引擎的数据字典锁

Page 21: MySQL 数据库运维管理基础知识

21

DDL 变更注意事项

DDL 加速技巧 DDL 操作的过程① 申请表对象加锁,只允许读不允许更新② 复制一份变更对象表的结构代码③ 原数据结构基础之上修改,新建一组临时文件, MyISAM 引擎和 InnoDB 引擎 的文件有所不同,分别为: #***.frm 、 #***.MYD 、 #***.MYI, #***.frm 、 #***.ibd

④ 变更对象表中的数据写入到临时表中⑤ 数据读写完毕的情况下,完全锁定被变更的表,并且删除被变更表⑥ 对临时文件执行 RENAME 操作⑦ 刷新数据字典信息⑧ 释放锁

Page 22: MySQL 数据库运维管理基础知识

22

DDL 变更注意事项

DDL 加速技巧

调整的 SESSION 变量① 建议增加 SESSION 级别的 sort_buffer_size 值,以加速 DDL 过程 需要做的排序操作② 建议增加 SESSION 级别的 read_buffer_size 值,增加顺序读的速度③ 建议增加 SESSION 级别的 tmp_table_size 和 max_heap_table_size

值,增加内存缓存数据的能力④ 若是存在 InnoDB 引擎转MyISAM 的操作,建议在线增加 key_buffer_size 的值,增加索引数据的缓存能力

Page 23: MySQL 数据库运维管理基础知识

23

DDL 变更技巧

大表删除

创建被删除表的硬链接

执行 DROP TABLE 语句

业务低谷期删除磁盘上真实的数据文件

Page 24: MySQL 数据库运维管理基础知识

24

DDL 变更技巧

主备切换变更 业务低谷期,备库上创建连接,设置 SESSION.sql_log_bin=0

备库上执行 DDL 变更命令 待备库执行完毕,切换数据服务的主备库关系 新备库上创建连接,设置 SESSION.sql_log_bin=0

新备库上执行 DDL 变更命令 变更完毕

Page 25: MySQL 数据库运维管理基础知识

25

数据库版本选择

数据库监控体系

数据库备份恢复策略

大数据量 DML 操作的技巧

大表 DDL 变更注意事项和变更技巧

在线数据库迁移的技巧

目录

Page 26: MySQL 数据库运维管理基础知识

26

数据迁移服务

数据库实例迁移

Page 27: MySQL 数据库运维管理基础知识

27

数据迁移服务

数据库迁移 目标数据库服务器安装、配置、初始化 目标数据库服务器加载完整备份与重新初始化 搭建目标数据库服务器与迁移数据库服务器之间的主从复制关系 暂停迁移数据库的业务应用访问 修改应用访问连接地址 目标数据库服务器提供数据服务 断开目标数据库服务器与迁移数据库服务器之间的主从复制关系 特殊技术删除迁移数据库服务器上多余的数据库

Page 28: MySQL 数据库运维管理基础知识

28

数据迁移服务 异构数据库迁移到 MySQL 数据库 业务模型分析 数据容量预估与拆分规则 目标业务模型的 POC

数据库结构设计与优化 模拟生产环境的性能测试 全量数据导出与加载到 MySQL 数据库 实时同步原异构数据库的变更到 MySQL 数据库 数据读服务切换到 MySQL 数据库 数据写服务切换到 MySQL 数据库 数据服务质量检测与优化调整

Page 29: MySQL 数据库运维管理基础知识

29

个人介绍 2003 年 -2006 年 主攻 SQL Server

2005 年 - 至今 主攻MySQL

2008 年 -2010 年至少帮助过 3000名不同技术人员解答疑难问题

2010 年 -2012 年培养 “门生”超过 30名,现分布各大互联网公司

2012 年 - 至今,以独立顾问身份,负责惠普 - 中国联通 U-Cloud

项目的数据库平台 DaaS 的架构设计、研发和实施 曾加盟阿里巴巴,推动数据库平台转型 MySQL ,组建 MySQL

团队、规范、标准、流程等,参与研发的项目超过 50 个 开心农场早期员工,日活跃用户数超过 5000万,负责技术研发

部 现任上海热璞网络科技有限公司的 CTO兼创始人

Page 30: MySQL 数据库运维管理基础知识

30

业务范围:数据库服务 数据迁移 运维服务 整体解决方案软件开发 企业培训

服务宗旨:解决企业当下的疑难帮助企业规避未来可能发生的故障借助技术和经验为企业降低成本

企业文化:诚信是立足之本,口碑是客户认可的标志, 技术、服务、信誉是核心竞争力

上海热璞网络科技有限公司

Page 31: MySQL 数据库运维管理基础知识

财务管理渗透于业务活动信息系统支撑流程化管理

李福申

中国联通 集团副总裁

2011 年 4 月 27 日

谢谢!