You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

TypeORM配置主从复制时执行migrations如何同步变更到slave从库

TypeORM主从复制架构下迁移结构同步到从库的方案

TypeORM 内置的migration:run命令设计逻辑就是仅向replication配置中的master节点写入DDL变更,本身不会主动连接slave节点执行迁移。结构变更同步到从库不需要修改TypeORM的迁移逻辑,正确实现方式依赖数据库自身能力,配合配置调整即可,具体如下:

核心依赖:MySQL原生主从复制自动同步

正常配置的MySQL主从架构会自动将主库执行的所有DDL、DML语句通过binlog同步到所有挂载的从库,不需要ORM层做任何额外操作。如果执行迁移后从库结构未更新,优先排查复制故障:

  • 登录从库执行SHOW SLAVE STATUS\G,确认Slave_IO_Running、Slave_SQL_Running两个状态值均为Yes
  • 检查复制过滤规则,确认没有配置库、表级别忽略规则,导致业务库的结构变更被过滤
  • 多级从库架构下逐级排查每一层的复制状态,确认binlog正常投递、应用无报错

修正现有配置的风险项

你当前的TypeORM配置存在两个容易引发主从结构不一致的问题,需要调整:

  • 删除synchronize: true配置项:该配置会在应用启动时根据Entity定义自动生成执行DDL,生产环境开启不仅存在数据丢失风险,还可能因为连接路由逻辑异常,出现DDL未走主库执行的问题。所有结构变更必须统一通过migration:run命令在主库执行
  • 不要自定义迁移执行的连接路由逻辑:migration:run默认会选择master连接执行,不要额外修改迁移类的连接选择配置,避免DDL被误发到从库,引发主从复制中断、数据冲突。

特殊场景兜底方案(非特殊架构不推荐使用)

如果你的从库没有配置和主库的自动同步链路(比如独立只读实例、离线分析库),可以选择以下两种方式手动同步:

  • 方式一:临时调整TypeORM配置,将待同步的从库连接信息填入master配置项,单独对该从库执行一次migration:run。执行前必须确认从库的迁移记录表(默认表名为migrations)和主库记录完全一致,避免漏执行、重复执行迁移
  • 方式二:导出主库最新表结构,手动导入到未同步的从库。导入操作前需要先暂停从库复制进程,结构导入完成、校验一致后再恢复复制。

注意:禁止在业务运行期间直接对从库执行DDL变更,这类操作会直接导致主从复制中断、数据校验失败。所有结构变更必须优先在主库执行,等待数据库原生复制机制同步到从库即可。

内容的提问来源于stack exchange,提问作者Tiago Cunha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.13 16:15:54