-- 1.0.128.sql -- S8-WATCHRULE-DATASOURCE-ENDPOINT-POOLING-1 -- 给 ado_s8_data_source.id=1 的 endpoint 末尾追加连接池参数,让 S8 watch rule -- 旁路的 new SqlSugarScope 连接串显式具备与主库 Database.json 同款的连接池 -- 治理参数,降低 S8 旁路重连风暴与 MySQL 1129 复发风险。 -- -- 阶段 1 审计已确认: -- * ado_s8_data_source 全表唯一 1 行(id=1, data_source_code=G01_TEST_DS) -- * 当前 endpoint 指向主库:Server=123.60.180.165 / Port=3306 / Database=aidopdev -- * 当前 endpoint 不含 Pooling / Maximum Pool Size / Connection LifeTime / Connection Idle Timeout -- * 6 条 enabled TIMEOUT watch rule 全部 poll_interval=60s,全部 data_source_id=1 -- * S8 旁路 evaluator / scheduler 用 ConfigId=Guid.NewGuid():N,不继承 Database.json 连接池参数 -- -- 修正范围: -- 仅给 ado_s8_data_source.id=1 的 endpoint 末尾追加 6 项参数: -- Pooling=true; Minimum Pool Size=0; Maximum Pool Size=20; -- Connection Timeout=10; Connection Idle Timeout=180; Connection LifeTime=300; -- -- 安全边界: -- * 仅 UPDATE 1 行;禁 DELETE/INSERT/DROP/TRUNCATE/ALTER -- * WHERE 精确锁定 id=1 + endpoint 主库特征 + 幂等门 (NOT LIKE '%Pooling=%') -- * 不改 host / port / database / uid / pwd / SslMode / Charset / AllowLoadLocalInfile / AllowUserVariables -- * 不动 ado_s8_watch_rule(不改启停 / poll_interval / data_source_id / rule_type) -- * 不动 Database.json -- * 不动 S8 旁路 evaluator / scheduler 代码 -- * ado_s8_data_source 表无 is_deleted 列,WHERE 不写 is_deleted=0 -- -- 边界与不能: -- * 本脚本不能解封已发生的 MySQL 1129 host block;已发生封禁仍需 DBA FLUSH HOSTS。 -- * 本脚本不解决 S8 旁路 ConfigId=Guid.NewGuid() 导致的 SqlSugar 层无 scope 复用问题; -- 该问题由后续独立批次 S8-DYNAMIC-SQLSUGAR-SCOPE-FACTORY-1 治理。 -- * 本脚本不承诺旁路 endpoint 与 Database.json 连接串字节级一致,也不承诺与主库共享 -- 同一个 MySqlConnector 物理池;只承诺旁路 endpoint 显式具备同样的连接池治理参数。 -- -- 幂等性: -- * NOT LIKE '%Pooling=%' 保证二次执行 0 affected rows -- * AutoVersionUpdate 按版本号决定是否跑,1.0.128 执行一次即完成 -- -- 字段长度安全: -- * endpoint 字段类型 varchar(1024) -- * 当前 endpoint 长度约 116 -- * 追加约 120 字符后约 236,远小于 1024 -- -- 兼容性: -- * 仅使用 UPDATE / CASE WHEN / CONCAT / LIKE / NOT LIKE,MySQL 5.7+ / 8.x 通用 -- -- 阶段 4 验证(重演后必查): -- SELECT id, LENGTH(endpoint), -- endpoint LIKE '%Pooling=true%' AS has_pooling, -- endpoint LIKE '%Maximum Pool Size=20%' AS has_maxpool, -- endpoint LIKE '%Connection LifeTime=300%' AS has_lifetime -- FROM ado_s8_data_source WHERE id=1; -- → has_pooling=1, has_maxpool=1, has_lifetime=1, LENGTH ≈ 236 -- 2026-05-26 UPDATE `ado_s8_data_source` SET `endpoint` = CONCAT( CASE WHEN `endpoint` LIKE '%;' THEN `endpoint` ELSE CONCAT(`endpoint`, ';') END, 'Pooling=true;', 'Minimum Pool Size=0;', 'Maximum Pool Size=20;', 'Connection Timeout=10;', 'Connection Idle Timeout=180;', 'Connection LifeTime=300;' ) WHERE `id` = 1 AND `endpoint` LIKE '%Server=123.60.180.165%' AND `endpoint` LIKE '%Database=aidopdev%' AND `endpoint` NOT LIKE '%Pooling=%';