From e260fef7c6d731689409934669c9d81c40eea595 Mon Sep 17 00:00:00 2001 From: xuans Date: Thu, 1 Oct 2026 18:03:06 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AE=B0=E5=BD=95MySQL=E4=B8=AD=E6=96=AD?= =?UTF-8?q?=E6=81=A2=E5=A4=8D=E5=85=A8=E9=87=8F=E9=80=9A=E8=BF=87=E5=8F=8A?= =?UTF-8?q?=E5=8F=8C=E6=9C=BA=E6=AD=A3=E5=BC=8F=E5=8D=87=E7=BA=A7=E7=BB=93?= =?UTF-8?q?=E6=9E=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- doc/Linux生产流程测试记录.md | 37 +++++++++++++++++++++ doc/Scert整改任务执行清单.md | 14 ++++++++ doc/Scert整改合并优化清单.md | 14 ++++++++ doc/构建版本与数据库支持矩阵.md | 14 ++++++++ 4 files changed, 79 insertions(+) diff --git a/doc/Linux生产流程测试记录.md b/doc/Linux生产流程测试记录.md index f9b590f..4e7ce86 100644 --- a/doc/Linux生产流程测试记录.md +++ b/doc/Linux生产流程测试记录.md @@ -1324,3 +1324,40 @@ SQLite 新测试程序 SHA-256:4c81656fae63a2eebad999d58e6a79e63e6f441810e02ce - [~] 正在实测可重入建表、字段和索引校验、回填与版本标记同事务提交,以及部分回填、冲突数据、异常结构负向场景。待后续结果更新,不能根据运行中的单元 Result=success 提前判定通过。 - [✓] 双机端口复核符合 Nginx 80/443 反代要求;Scert 与 MySQL 均未新增公网监听。 - [!] 第一台测试域名公网平台拦截、无可信证据的历史事务及此前剩余生产门禁继续保留,不以数据库子项通过替代。 + +## MySQL 中断修复、正式构建与双机升级复核(2026-10-01 18:02,北京时间) + +### 修复和实库证据 + +- 修复提交:c6982ab827038c2cb16bc1432fb393f68a5296e2,已推送。首次推送遇到认证失败,重试成功;没有修改远程认证设置。 +- 第一轮修复测试单元 scert-mysql-reentry-20261001-1743 退出 0,106 个子场景通过;此后补充默认空字符串、排序规则和大小写冲突保护,没有用第一轮结果替代最终代码验证。 +- 最终单元 scert-mysql-reentry-guards-20261001-1751:inactive、Result=success、ExecMainStatus=0。日志 /var/tmp/scert-db-matrix-20261001-1720/mysql-reentry-guards.log。 +- TestMySQLRealDeploymentMigrationRecovery:18 个子场景通过,92.25 秒;覆盖建表前后、部分及完整回填、重复历史任务、不同域名相同键、空键排除、错误任务及时间、孤立映射、大小写冲突、错误列类型或默认值、允许空值、缺失唯一约束、缺失或逆序索引、额外字段、排序规则和非 InnoDB 表。 +- TestMySQLRealMigrations:91 个子场景通过,385.84 秒;覆盖 0~18 版升级、各语句中断边界、现有数据、作用域账户、非法迁移历史和重启持久化。总计 109 个子场景,无失败或跳过。 +- 最终测试程序 SHA-256:243a42a3826d5e77547346bb95ed56394ca67bab7334568d3202b193a3c31019,上传后核对一致。 + +### 本地门禁与正式包 + +- go test -count=1 ./...、go vet ./... 退出 0;go test -race -count=1 ./internal/database ./internal/cli 退出 0;前端 241 项通过、0 失败、0 跳过。未启用的本地外部数据库场景不计实库通过。 +- 正式入口 build/build-release.ps1 -Target linux-amd64,包目录 build/release-20261001-mysql-reentry,manifest 标记 source_commit=c6982ab827038c2cb16bc1432fb393f68a5296e2、source_dirty=false。23 项产物大小及哈希核验一致。 +- 归档 SHA-256:c075297e9f8f76f4ebb8fa28d43a4099ca853a3619212d5e7f51e78d4b0e9e4d。 +- 主程序 SHA-256:39b70a1a11148982baeb699bae749f7e2988a2fba02b001c0da740ba8b86f36d。 +- 新正式程序用于 SQLite 再测:scert-sqlite-release-20261001-1754,两个子场景通过,1.34 秒,退出 0。 +- 新正式程序用于 PostgreSQL 16.15 再测:scert-postgres16-release-20261001-1754,七场景通过,14.49 秒,退出 0;六场景独立正式 CLI,取消场景为进程内入口,不扩大证明范围。 + +### 双机升级与健康复核 + +- 运维通过密码 SSH 连接,保留严格主机指纹检查。发布包上传双机后,归档哈希及包内 21 项 SHA256SUMS 全部通过。 +- 发布目录 /var/tmp/scert-release-mysql-reentry-20261001;安装日志 /var/tmp/scert-install-mysql-reentry-20261001.log。 +- 两台首次运行安装器时主服务仍在运行,被保护检查拒绝;停止主服务后仍因 Scert-storage.socket 在监听再次被拒绝。随后完整停止 Scert、Scert-admin、Scert-storage.service、Scert-storage.socket,官方安装成功,再启动目录 socket 和主服务,最终退出 0。所有失败记录保留在同一追加日志中;未将拒绝事件计为成功安装。 +- Nginx 未停止;管理上游在停服窗口不可用,本次不宣称零停机。安装器按自身事务流程保留发布文件,没有额外制作业务数据备份,也没有手工删除历史文件。 +- 两台 /scert/scert 哈希均与上述新正式包一致;第一台 PID 2091132,第二台 PID 158279,均 active、NRestarts=0,目录 socket active。 +- 双机 nginx -t 成功。第二台管理首页 HTTP 200,readyz 返回 ready,HTTP 入口 301;第一台测试域名本机带 SNI 且严格校验证书的 HTTPS 为 200,不能代替其公网访问通过。 +- 双机 Scert 均仍监听 127.0.0.1:8443,MySQL 监听 127.0.0.1:3306;第二台 MySQL X 协议也仅监听 127.0.0.1:33060。Web 仍由 Nginx 80/443 对外,未添加公网规则。 +- 只读核查双机迁移版本均为 18,升级前后任务及事务状态计数一致,没有活动任务被中断。第二台两条 recovery_required 历史事务保留,不伪造证据,不强改状态。 + +### 下一项正在运行 + +- 单元 scert-mysql-cli-20261001-1801,日志 mysql-cli-release.log,运行项目现有 TestMySQLReal 维护测试。测试程序 SHA-256:73cd220dfcb898d452ca9de752c2e19b40d5951c693d6fab28e2e6c00c9ea7b9。 +- 官方 mysqld、mysql、mysqldump 在系统中位于不同目录;仅在隔离目录 mysql-tools 创建指向原程序的符号链接,以满足夹具同目录要求,没有编写包装或辅助验收脚本,没有修改系统程序。 +- 当前运行中,不提前判定通过。该套测试包含进程内正式命令入口及实际工具互操作,不等同于所有独立发行 CLI、完整 Web 和最终生产流程通过。 diff --git a/doc/Scert整改任务执行清单.md b/doc/Scert整改任务执行清单.md index 01cfb50..127a716 100644 --- a/doc/Scert整改任务执行清单.md +++ b/doc/Scert整改任务执行清单.md @@ -1591,3 +1591,17 @@ P0-05 从 `[!]` 调整为 `[~]`,并未标记完成;P0-04 剩余门禁和全 - [ ] 待完成:MySQL 修复后的全量门禁、正式构建及双机部署;MySQL 5.7、本轮三库完整 Web 流程、系统发信及密码重置、备份恢复剩余矩阵、最终清库首次部署等。 本轮各实库测试创建自己的隔离数据库,未清空现有业务数据库;没有创建辅助验收脚本、没有额外备份远端业务数据。整体生产验收仍未放行。 + +## 最新有效复核结果(2026-10-01 18:02,北京时间) + +本节更新 17:45 记录中的 MySQL 迁移修复及正式包部署状态;只关闭这些子项,不放行整体生产验收。 + +- [✓] MySQL 中断重入修复:提交 c6982ab827038c2cb16bc1432fb393f68a5296e2 已推送。模式 15~17 恢复前校验字段、默认值、空值约束、排序规则、索引和存储引擎;模式 15 将幂等回填与版本标记放在同一事务,拒绝不一致历史,不覆盖冲突数据。 +- [✓] Linux MySQL 8.0.46 最终实库回归:18 个部署迁移恢复与负向子场景、91 个完整迁移子场景,共 109 个子场景全部通过,无失败或跳过;临时单元已结束,退出 0。此前四个真实失败边界已复测通过。 +- [✓] 本地质量门禁:后端 go test -count=1 ./...、go vet ./... 通过;database 和 cli 两个包竞态测试通过;前端 241 项通过。未启用的本地外部数据库测试不因此视为通过。 +- [✓] 正式构建:仅生成 Linux 包,source_dirty=false,23 项 manifest 产物哈希与大小核对一致;此为交叉编译,不冒充 Linux 原生构建。归档 SHA-256 为 c075297e9f8f76f4ebb8fa28d43a4099ca853a3619212d5e7f51e78d4b0e9e4d。 +- [✓] 新正式程序回归:SQLite 历史与升级后备份恢复两个子场景通过;PostgreSQL 16.15 七场景再次通过,独立 CLI 与进程内取消的范围区分不变。 +- [✓] 双机部署:官方安装器安装及启动成功,主程序 SHA-256 均为 39b70a1a11148982baeb699bae749f7e2988a2fba02b001c0da740ba8b86f36d;服务 active、NRestarts=0,Nginx 校验成功,管理入口首页及 readyz 正常。双机仍为 Scert 回环监听、Nginx 80/443 对外,无新增公网业务端口。 +- [x] 停服保护现场:安装器先后拒绝主服务及目录 socket 尚未停止的操作;完整停服后重试成功,失败记录保留。这是停服升级,不宣称零中断。 +- [~] MySQL 备份恢复剩余实库矩阵:已启动 scert-mysql-cli-20261001-1801,运行中,尚无最终结论。该套测试主要调用正式命令与维护实现的进程内入口,不能冒充全部独立发行 CLI 验收。 +- [!] 其余限制仍有效:第一台测试域名公网平台拦截、两条无可信恢复证据历史事务、MySQL 5.7、完整 Web 流程、系统发信与密码重置、最终清库首次部署及其余原清单门禁尚未全部闭环。 diff --git a/doc/Scert整改合并优化清单.md b/doc/Scert整改合并优化清单.md index b00c72d..e5352f9 100644 --- a/doc/Scert整改合并优化清单.md +++ b/doc/Scert整改合并优化清单.md @@ -2220,3 +2220,17 @@ P0-11 生产验收门禁 - [ ] 待完成:MySQL 修复后的全量门禁、正式构建及双机部署;MySQL 5.7、本轮三库完整 Web 流程、系统发信及密码重置、备份恢复剩余矩阵、最终清库首次部署等。 本轮各实库测试创建自己的隔离数据库,未清空现有业务数据库;没有创建辅助验收脚本、没有额外备份远端业务数据。整体生产验收仍未放行。 + +## 最新有效复核结果(2026-10-01 18:02,北京时间) + +本节更新 17:45 记录中的 MySQL 迁移修复及正式包部署状态;只关闭这些子项,不放行整体生产验收。 + +- [✓] MySQL 中断重入修复:提交 c6982ab827038c2cb16bc1432fb393f68a5296e2 已推送。模式 15~17 恢复前校验字段、默认值、空值约束、排序规则、索引和存储引擎;模式 15 将幂等回填与版本标记放在同一事务,拒绝不一致历史,不覆盖冲突数据。 +- [✓] Linux MySQL 8.0.46 最终实库回归:18 个部署迁移恢复与负向子场景、91 个完整迁移子场景,共 109 个子场景全部通过,无失败或跳过;临时单元已结束,退出 0。此前四个真实失败边界已复测通过。 +- [✓] 本地质量门禁:后端 go test -count=1 ./...、go vet ./... 通过;database 和 cli 两个包竞态测试通过;前端 241 项通过。未启用的本地外部数据库测试不因此视为通过。 +- [✓] 正式构建:仅生成 Linux 包,source_dirty=false,23 项 manifest 产物哈希与大小核对一致;此为交叉编译,不冒充 Linux 原生构建。归档 SHA-256 为 c075297e9f8f76f4ebb8fa28d43a4099ca853a3619212d5e7f51e78d4b0e9e4d。 +- [✓] 新正式程序回归:SQLite 历史与升级后备份恢复两个子场景通过;PostgreSQL 16.15 七场景再次通过,独立 CLI 与进程内取消的范围区分不变。 +- [✓] 双机部署:官方安装器安装及启动成功,主程序 SHA-256 均为 39b70a1a11148982baeb699bae749f7e2988a2fba02b001c0da740ba8b86f36d;服务 active、NRestarts=0,Nginx 校验成功,管理入口首页及 readyz 正常。双机仍为 Scert 回环监听、Nginx 80/443 对外,无新增公网业务端口。 +- [x] 停服保护现场:安装器先后拒绝主服务及目录 socket 尚未停止的操作;完整停服后重试成功,失败记录保留。这是停服升级,不宣称零中断。 +- [~] MySQL 备份恢复剩余实库矩阵:已启动 scert-mysql-cli-20261001-1801,运行中,尚无最终结论。该套测试主要调用正式命令与维护实现的进程内入口,不能冒充全部独立发行 CLI 验收。 +- [!] 其余限制仍有效:第一台测试域名公网平台拦截、两条无可信恢复证据历史事务、MySQL 5.7、完整 Web 流程、系统发信与密码重置、最终清库首次部署及其余原清单门禁尚未全部闭环。 diff --git a/doc/构建版本与数据库支持矩阵.md b/doc/构建版本与数据库支持矩阵.md index e1cd426..cdd157b 100644 --- a/doc/构建版本与数据库支持矩阵.md +++ b/doc/构建版本与数据库支持矩阵.md @@ -1355,3 +1355,17 @@ go test -p 1 -count=1 -json -timeout=6m ./internal/bootstrap - [ ] 待完成:MySQL 修复后的全量门禁、正式构建及双机部署;MySQL 5.7、本轮三库完整 Web 流程、系统发信及密码重置、备份恢复剩余矩阵、最终清库首次部署等。 本轮各实库测试创建自己的隔离数据库,未清空现有业务数据库;没有创建辅助验收脚本、没有额外备份远端业务数据。整体生产验收仍未放行。 + +## 最新有效复核结果(2026-10-01 18:02,北京时间) + +本节更新 17:45 记录中的 MySQL 迁移修复及正式包部署状态;只关闭这些子项,不放行整体生产验收。 + +- [✓] MySQL 中断重入修复:提交 c6982ab827038c2cb16bc1432fb393f68a5296e2 已推送。模式 15~17 恢复前校验字段、默认值、空值约束、排序规则、索引和存储引擎;模式 15 将幂等回填与版本标记放在同一事务,拒绝不一致历史,不覆盖冲突数据。 +- [✓] Linux MySQL 8.0.46 最终实库回归:18 个部署迁移恢复与负向子场景、91 个完整迁移子场景,共 109 个子场景全部通过,无失败或跳过;临时单元已结束,退出 0。此前四个真实失败边界已复测通过。 +- [✓] 本地质量门禁:后端 go test -count=1 ./...、go vet ./... 通过;database 和 cli 两个包竞态测试通过;前端 241 项通过。未启用的本地外部数据库测试不因此视为通过。 +- [✓] 正式构建:仅生成 Linux 包,source_dirty=false,23 项 manifest 产物哈希与大小核对一致;此为交叉编译,不冒充 Linux 原生构建。归档 SHA-256 为 c075297e9f8f76f4ebb8fa28d43a4099ca853a3619212d5e7f51e78d4b0e9e4d。 +- [✓] 新正式程序回归:SQLite 历史与升级后备份恢复两个子场景通过;PostgreSQL 16.15 七场景再次通过,独立 CLI 与进程内取消的范围区分不变。 +- [✓] 双机部署:官方安装器安装及启动成功,主程序 SHA-256 均为 39b70a1a11148982baeb699bae749f7e2988a2fba02b001c0da740ba8b86f36d;服务 active、NRestarts=0,Nginx 校验成功,管理入口首页及 readyz 正常。双机仍为 Scert 回环监听、Nginx 80/443 对外,无新增公网业务端口。 +- [x] 停服保护现场:安装器先后拒绝主服务及目录 socket 尚未停止的操作;完整停服后重试成功,失败记录保留。这是停服升级,不宣称零中断。 +- [~] MySQL 备份恢复剩余实库矩阵:已启动 scert-mysql-cli-20261001-1801,运行中,尚无最终结论。该套测试主要调用正式命令与维护实现的进程内入口,不能冒充全部独立发行 CLI 验收。 +- [!] 其余限制仍有效:第一台测试域名公网平台拦截、两条无可信恢复证据历史事务、MySQL 5.7、完整 Web 流程、系统发信与密码重置、最终清库首次部署及其余原清单门禁尚未全部闭环。