在线ddl原理对比分析和实践-acmug.pdf

  1. 1、本文档共39页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
在线DDL原理、对比分析和实践 Summerxwu 2017.03 个人简介 • summerxwu(吴夏) • 腾讯 / TEG / 计费平台部 • tdsql内核开发 ,主要负责binlog解释与复制 ,在线ddl模块的开发。 目录 1. 在线DDL概述 2. Mysql5.7 online DDL概述 3. PT-ONLINE-SCHEMA-CHANGE原理分析 4. GH-OST原理分析 5. TDSQL目前采用的方案 在线DDL概述 • 要求 :在不中断数据库服务的情况下进行DDL操作 • 现有的方案 : • 使用原生mysql在线DDL • 在从库上修改表结构 ,主从切换 • 第三方工具 MYSQL 5.7 online ddl • Mysql 5.5之前的版本 ddl的实现方式 •存在的问题 •copydata的过程需要耗费额外的存 储空间 ,并且执行过程耗时较长。 •copydata的过程有写锁 ,无法持续 的对外进行服务。 MYSQL 5.7 online ddl • MYSQL 5.5 • FAST INDEX CREATE(FIC) • IN-PLACE方式 ,但依旧阻塞INSERT UPDATE DELETE操作 • MYSQL 5.6 • 支持更多的ALTER TABLE类型避免copydata操作。 • 支持在DDL的过程中不阻塞DML操作 ,即实现ONLINE特性。 • MYSQL 5.7 • 增加了ALTER TABLE RENAME INDEX的语法支持 ,同时支持ONLINE DDL特性。 • 增加VARCHAR列的长度操作支持online特性。 MYSQL 5.7 online ddl ALTER TABLE testdb.testtable ADD COLUMN _new_column ALGORITHM = inplace,LOCK = default; ALGORITHM子句用来指定执行DDL所采用的方式 ,取值为{DEFAULT|INPLACE|COPY} •ALGORITHM = COPY •ALGORITHM = INPLACE •ALGORITHM = DEFAULT LOCK子句描述持有的锁的类型来控制DML的并发 ,取值{DEFAULT|NONE|SHARED|EXCLUSIVE} •LOCK = EXCLUSIVE •LOCK = SHARED •LOCK = NONE •LOCK = DEFAULT MYSQL 5.7 online ddl MYSQL 5.7 online ddl—实现原理 MYSQL 5.7 online ddl—使用限制与问题 •仍然存在排它锁 ,有锁等待的风险。 •增量 日志大小是有限制的 (innodb_online_alter_log_max_size ) •有可能造成较大的主备延迟。 •无法暂停 PT-OLINE-SCHEMA-CHANGE • Percona-toolkit • 特点与优势 • 支持并发DML操作 • 经过多年生产环境验证 ,较为可靠 PT-OSC原理分析 PT-OSC原理分析—如何处理外键 假设t1是要修改的表 ,t2有外键依赖于t1 ,_t1_new是alter t1产生的新临时表。 --alter-foreign-keys-method •rebuild_constraints •优先采用这种方式 •先通过 alter table t2 drop fk1,add _fk1 重建外键参考 ,指向新表 •再 rename t1 t1

您可能关注的文档

文档评论(0)

zhuwo + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档