技术分享 | gh-ost 原理剖析
作者简介: 杨奇龙,网名“北在南方”,7年DBA老兵,目前任职于杭州有赞科技DBA,主要负责数据库架构设计和运维平台开发工作,擅长数据库性能调优、故障诊断。 一、简介 上一篇文章 (gh-ost 在线 ddl 变更工具) 介绍 gh-ost 参数和具体的使用方法、核心特性(可动态调整暂停)、动态修改参数等等。本文分几部分从源码方面解释 gh-ost 的执行过程,数据迁移,切换细节设计。 二、原理 2.1 执行过程 本例基于在主库上执行 DDL 记录的核心过程。核心代码在 github.com/github/gh-ost/go/logic/migrator.go 的 Migrate() func (this *Migrator) Migrate() //Migrate executes the complete migration logic. This is the major gh-ost function. 1.检查数据库实例的基础信息 a 测试db是否可连通, b 权限验证 show grants for current_user() c 获取binlog相关信息,包括row格式和修改binlog格式后的重启replicate select @@global.log_bin, @@global.binlog_format select @@global.binlog_row