Mysql Online DDL 和 pt-ost 、gh-ost 简要
作者&投稿:年虏 (若有异议请与网页底部的电邮联系)
具体步骤如下:
下面是Mysql官方文档对于DDL操作的总结:
http://dev.mysql.com/doc/refman/5.6/en/innodb-create-index-overview.html
http://dev.mysql.com/doc/refman/5.7/en/innodb-create-index-overview.html
可以使用 Alter 语句支持 DDL 特性 ,比如可以用 LOCK = NONE 无锁变更。
percona是一个开源产品 , 是管理Mysql的工具。
PT-OSC(Percona Toolkit Online Schema Change)
https://www.percona.com/doc/percona-toolkit/3.0/pt-online-schema-change.html
Percona Toolkit 包含很多 mysql 管理的功能 ,现在要说的是 online-schema-change上
PT-OSC 原理是建表 ,使用触发器同步数据 ,然后原子性rename。
这样可以支持在线无锁,不停机Online-DDL 。
具体步骤如下:
Percona 有一些限制和缺陷 ,根据它的原理 ,原表不能存在触发器 ,这玩意是唯一。另外原表必须存在PK或者UK。另外就是触发器的问题了,触发器带来性能开销,并且无法停止,那我就不能控制我同步的开关和速度。
但是gh-ost说它可以。
https://github.com/github/gh-ost
go-ost基于bin-log同步 , 基于binlog肯定都是伪装成一个replica。
由于使用单线程回放binlog来替换触发器,所以增量DML回放效率不如触发器,因为pt-osc的增量回放并发度是与业务DML并发度相同的,是多线程的。
相对于percona的优势是:
因为出的太晚了 ,然后percona 和 gh-ost等等开源产品已经大规模实践了,Mysql就更加没什么实践案例和经验了,大家就不太愿意尝试或者迁移了。
大厂来说基本上都是平台封装了,类似idb ,会把无锁变更细节屏蔽了,只需要提工单就可以了 ,但是底层基本上也是建表同步rename个思路。
小公司的话,可以使用percona 、 go-ost 等工具。
MySQL 8.0 Online DDL和pt-osc、gh-ost深度对比分析
Mysql Online DDL
pt-online-schema-change
gh-ost
MySQL5.6在线表结构变更(online ddl)总结
无咽可还: 1 2show tables; select* fromtable
通渭县18430052857: 如何从mysql数据库中获取一个表的表结构 - ?
无咽可还: 列出表(列)结构: mysql< DESCRIBE tableName; mysql< DESCRIBE tableName columnName; mysql< DESC tableName; mysql< SHOW COLUMNS FROM tableName; % mysqlshow dbName tableName!
通渭县18430052857: mysql5.7 online ddl怎么查看进度 - ?
无咽可还: 实际测试中add primary key 和修改字段类型是需要copy tmp table的并且阻塞dml操作,另外在5.6.17版本之前时候用alter table table_name engine=innodb 是需要 copy table的并且也阻塞dml. 本来打算翻译成中文,后来发现这些英文实在是太简单了...
通渭县18430052857: 如何避免 MySQL 修改表结构时导致表无法使用的问题 - ?
无咽可还: 来源:oschina.net 作者:whats_java MySQL 在修改表结构的时候可能会中断产品的正常运行影响用户体验,甚至更坏的结果,丢失数据.不是所有的数据库管理员、程序员、系统管理员都非常了解MySQL能避免这种情况.DBA会经常碰到这...
通渭县18430052857: Oracle新手入门:如何提高索引创建速度? - ?
无咽可还: 默认情况下,数据库系统是不允许DML操作与创建索引的操作同时进行的.也就是说,在创建索引的过程中,是不允许其他用户对其所涉及的表进行任何的DML操作.这主要是因为对基础表进行DML操作时,会对基础表进行加锁.所以在基础...
通渭县18430052857: 怎么查看用户的SQL执行历史 - ?
无咽可还: 【方法一】查询v$sqltext、v$sqlarea、v$sqlstats视图 select * from v$sqlarea t where t.PARSING_SCHEMA_NAME in ('schema') order by t.LAST_ACTIVE_TIME desc; #对v$sqltext、v$sqlarea查看的是shared pool中的SQL,其时间索引是其解...
通渭县18430052857: 中美时差24小时对照表(旧金山)(中美时差24小时对照表) ?
无咽可还: 1、北京是东八区区时.2、美国华盛顿时间是西五区区时.3、相差13小时 .
通渭县18430052857: 战胜无留陀的化身需要升级角色吗 ?
无咽可还: 战胜无留陀的化身不需要升级角色.原神玩家在完成须弥主线任务时,会遇到战胜无留陀的化身任务,因为剧情会强制使用旅行者打无留陀的化身,所以不需要配队,直接跟着兰罗摩走.注意需要使用草种子攻击无留陀的化身,扣除3分之一血时,再次跟随兰罗摩移动,重复三次即可战胜无留陀的化身.《原神》是由上海米哈游网络科技股份有限公司制作发行的一款开放世界冒险游戏.游戏发生在一个被称作提瓦特的幻想世界,在这里被神选中的人将被授予神之眼,导引元素之力.玩家将扮演一位名为旅行者的神秘角色,在自由的旅行中邂逅性格各异、能力独特的同伴们,和他们一起击败强敌,找回失散的亲人,同时逐步发掘原神的真相.
通渭县18430052857: 使道是什么意思(使道是什么意思) ?
无咽可还: 1、道,无形无象,无声无嗅,大而无外,小而无内,但却是产生天地万物,主宰天地万物的总能源.2、道,又名真空、性、灵、炁、金丹、佛性,在不同的宗教和经典里,名称叫法不一,但本质指的都是一个.3、道是产生一切形式的根本,也是主宰一切形式的根本.4、人们唯有去除一切的形式,才能够见道,此谓“为道日损”.5、可惜的是,当今大多的修道者和学术研究者,不是“为道日损”,而是“为道日增”,总想通过有为的方式,形式上的手段认识和了解大道,如此只能背道而驰.