首先当我们通过命令行登陆到MySQL的时候,它会打印出来一下欢迎信息,其实这个欢迎信息告诉了我们很多有用的信息.
例如:当前MySQL服务器的版本号
使用那个命令来参看MySQL的帮助信息
接下来我们查看一下MySQL文档包含哪些部分,按照MySQL的大分类查询一下,有哪些帮助主题供我们查看.
命令为: ? contents
如果想查看上面大分类具体某一个分类应该怎么办那?同样的道理用 ? 大分类的名称.
例如: ? Data Types [大小写无所谓]
同理我们想具体的查看Data Types下面的INT类型的取值范围怎么办那?也可以用? INT得到相应的帮助信息
对应的命令:? Data Types
? INT
还有在开发过程中经常遇到MySQL的一些函数不知道怎么用,应该怎么查看那?接下来我们就用常用的字符串函数举一个例子.
对应的命令: ? Functions
? String Functions
? CONCAT
最后就我们常用的一些SQL的语法,例如建表语句或者是创建用户的语法怎么写,再做一个示范.
对应命令为:? GRANT
7
记住上面的帮助命令的使用,我们即使在不联网的情况下也能快速找到我们想要的帮助信息,提高工作效率.
官方文档建议当参考书看,发现问题就去看一看,7000多页就算看3遍未必能记住10%所以自己去实践,发现问题了到官方文档找相关的知识,看懂了做好笔记,用自己的思维去记录才会更高效。
另外成为DBA高手并不是一朝一夕能实现的,DBA是一个经验积累的过程,数据库出问题一般不是单一的原因造成的,都是综合的去思考,然后用排除法一个一个排查,慢慢积累经验。
希望以上回答对您有一定帮助。
在 Mysql 5.6 之前版本中 , 如果要修改一个表的ddl信息 ,需要锁表 。
具体步骤如下:
下面是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)总结
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)