goinception:v1.3.0-98-mysql84fix — 在官方 goInception 镜像基础上修复 MySQL 8.4+ 备份失败问题的补丁镜像。
MySQL 8.4 起移除了 SHOW MASTER STATUS 语句(改名为 SHOW BINARY LOG STATUS)。官方 goInception(已停止维护,最后版本 2024-11)在执行带备份的工单时,用 SHOW MASTER STATUS 获取 binlog 位点来生成回滚语句,因此对 MySQL ≥ 8.4 的目标库执行任何带备份的 SQL 工单都会失败,报错:
Execute: You have an error in your SQL syntax ... near 'MASTER STATUS' (sql: SHOW MASTER STATUS;).
Execute: 无法获取master binlog信息.
本镜像修复后,目标库为 MySQL ≥ 8.4 时自动改用 SHOW BINARY LOG STATUS(两者返回列完全相同),低版本 MySQL 和 MariaDB 行为不变。
仅一处:/goInception 二进制。其余所有镜像层(alpine 基底、glibc、pt-online-schema-change、gh-ost、dumb-init、默认配置)与官方 hanchuanchuan/goinception:latest(digest sha256:b3c0dd26fb50...)逐字节相同。
二进制相对官方源码(master @ cfb88db,即 v1.3.0-97)的代码改动只有 5 行,位于
session/session_inception.go 的 mysqlFetchMasterBinlogPosition():
sql := "SHOW MASTER STATUS;"
if s.dbType == DBTypeMysql && s.dbVersion >= 80400 {
sql = "SHOW BINARY LOG STATUS;"
}
补丁来源:社区 fork young-0/goInception@a97ca25e(原样 cherry-pick,未做其他改动)。
服务启动后通过 MySQL 协议可查询版本,补丁版会报告:
inception get variables like 'version';
-- v1.3.0-98-g7abdc30 (官方线上版本为 v1.3.0-97-gcfb88db)
git clone https://github.com/hanchuanchuan/goInception.git
cd goInception # master HEAD = cfb88db
curl -sL https://github.com/young-0/goInception/commit/a97ca25e1c.patch | git am
# 静态编译 linux/amd64 二进制(工具链版本以 go.mod 为准)
GOTOOLCHAIN=go1.22.1 CGO_ENABLED=0 GOOS=linux GOARCH=amd64 \
go build -o bin/goInception tidb-server/main.go
# 以线上同 digest 官方镜像为基底,仅覆盖二进制
docker build --platform linux/amd64 -f Dockerfile.mysql84fix \
-t goinception:v1.3.0-98-mysql84fix .
Dockerfile.mysql84fix:
FROM hanchuanchuan/goinception@sha256:b3c0dd26fb50d1660f0ae86de118a336ff335464efa402efa5dd6da77ed8ba46
COPY bin/goInception /goInception
与官方镜像完全相同,直接替换镜像引用即可(Archery 的 archery-goinception Deployment 把
hanchuanchuan/goinception:latest 换成本镜像),配置文件、端口(4000)、启动命令均无变化。
镜像改回 hanchuanchuan/goinception:latest(或其 digest sha256:b3c0dd26fb50...)即回到原状,无任何数据或配置迁移。
Content type
Image
Digest
sha256:4612a81fb…
Size
72.2 MB
Last updated
4 months ago
docker pull mrzhxl/goinception:v1.3.0-98-mysql84fix