美文网首页
2021-07-22 gh-ost使用说明整理

2021-07-22 gh-ost使用说明整理

作者: 5A风景区 | 来源:发表于2021-07-22 10:59 被阅读0次

gh-ost使用说明整理

特点:无触发器、可暂停、
通过分析binlog日志的形式监听表中的数据变更。(异步的)
gh-ost要求binlog是row复制形式,若不是可加参数配置

gh-ost操作模式:
1.连接到从库,在主库做迁移(默认)
  通过检查从库状态,找到集群结构中的主库并连接。执行:
   ·行数据在主库上读写
   ·读取从库的二进制日志,将变更应用到主库
   ·在从库收集表格式,字段&索引,行数等信息
   ·在从库读取内部变更事件
   ·在主库切换表
从库必须启动二进制日志(log_bin,log_slave _updates)并且设置binlog_format=ROW
log_slave_updates参数用来控制M01是否把所有的操作写入到binary log,默认的情况下mysql是关闭的
2.连接到主库
需要添加--allow-on-master参数(ROW)

3.在从库迁移/测试
  --migrate-on-replica表示gh-ost直接在从库进行迁移,即使在复制运行阶段也可以进行表的切换操作。
  --test-on-replica 表示迁移操作只是为了测试,在切换之前复制会停止。

gh-ost执行DDL过程

① 检查有没有外键和触发器。
② 检查表的主键信息。
③ 检查是否主库或从库,是否开启log_slave_updates,以及binlog信息  
④ 检查gho和del结尾的临时表是否存在
⑤ 创建ghc结尾的表,存数据迁移的信息,以及binlog信息等    
---以上校验阶段
⑥ 初始化stream的连接,添加binlog的监听
---以下迁移阶段
⑥ 创建gho结尾的临时表,执行DDL在gho结尾的临时表上
⑦ 开启事务,按照主键id把源表数据写入到gho结尾的表上,再提交,以及binlog apply。
---以下cut-over阶段
⑧ lock源表,rename 表:rename 源表 to 源_del表,gho表 to 源表。
⑨ 清理ghc表。
单实例DDL语句举例
gh-ost -user="sys" -password="1234.Com" -host=192.168.19.130  -database="test" -table="t3"  -alter="CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;" -allow-on-master -panic-flag-file=/tmp/gh-ost.panic.t1.flag  -execute -debug

gh-ost --user="root" --password="root" --host=192.168.163.131  --database="test" --table="t1"  --alter="ADD COLUMN cc2 varchar(10),add column cc3 int not null default 0 comment 'test' " --allow-on-master  --execute

经测试gh-ost在mysql8.0.11版本会出现锁等待超时的问题(由于mysql8版本新增静态锁。兼容性出现问题。)更换至mysql5.7时可以正常使用。

ghost-1

经调整innodb_lock_wait_timeout及lock_wait_timeout参数,仍出现上图问题

反复验证查询资料后,发现在github中有相关故障介绍。

ghost-2.png

mysql8版本中新增存在静态锁导致gh-ost报出上面错误。Waiting for column statistics lock

在mysql5.7版本中测试发现可以正常使用对应gh-ost功能

相关文章

  • 2021-07-22 gh-ost使用说明整理

    gh-ost使用说明整理 gh-ost执行DDL过程 经测试gh-ost在mysql8.0.11版本会出现锁等待超...

  • 138. 复制带随机指针的链表

    2021-07-22 LeetCode每日一题 链接:https://leetcode-cn.com/proble...

  • NodeMCU使用说明整理

    一、固件编译 选择在线编译最简单,地址: 1.打开后需要填邮箱,编译好的固件会发送到邮箱中:https://nod...

  • gh-ost原理

    [toc] 工作流程 初始化设置&验证 初始化设置不是一个并发操作。 连接从库(推荐)/主库,检查主库标志 预验证...

  • 转载 Snippets的使用

    为方便LayaAir快速开发,打算整理一份Code Template。 使用说明:打开LayaAir ,通过快捷键...

  • 面试可以吹的mysql实际问题(不断更新)

    13、收缩表,del不回收空间,可创建临时表,大表用gh-ost 控制时间,所占资源 14、count(*)存到d...

  • Markdown语法

    一标题 使用说明:# + 空格 + 标题文字。 标题2 使用说明:## + 空格 + 标题文字。 二引用 使用说明...

  • 2021-07-27

    【知识内化 】┊11.读书全流程 2021-07-22 周四 论语式阅读和Q&A笔记如何配合使用? 如何将读书--...

  • 你成®MM培训计划-图七

    本月我即将搬入新居,这幅图是我为搬家所做的准备。整理旧物,筹划新家,过几天我将附上新家使用说明书。

  • 遇见灼·悦

    减肥不是嘴上说,是行动和意志力! 饭后30分钟《论语》; 整理七升八四课; 读书《大脑使用说明书》

网友评论

      本文标题:2021-07-22 gh-ost使用说明整理

      本文链接:https://www.haomeiwen.com/subject/mfuemltx.html