hidu/mysql-schema-sync
hidu/mysql-schema-sync has 784 GitHub stars and 285 forks. Star changes are not measured yet. Last checked 2026-11-14 10:57 UTC. Last push 2025-10-29.
Crecimiento de estrellas medido
- in 24h
- Recopilando historial
- in 7 days
- Recopilando historial
- in 15 days
- Recopilando historial
- in 1 month
- Recopilando historial
Cambios netos en períodos que se solapan, no totales diarios. Los datos no disponibles se dejan en blanco. Las estrellas indican interés, no calidad.
Acerca de
mysql表结构自动同步工具(目前只支持字段、索引的同步,分区等高级功能暂不支持)
DatosREADME.md
Originalmysql-schema-sync
MySQL Schema 自动同步工具
用于将 线上 数据库 Schema 变化同步到 本地测试环境!
只同步 Schema、不同步数据。
支持功能:
- 同步新表
- 同步字段 变动:新增、修改
- 同步索引 变动:新增、修改
- 同步字段顺序:支持调整字段在表中的顺序
- 支持预览(只对比不同步变动)
- 邮件通知变动结果
- 支持屏蔽更新表、字段、索引、外键
- 支持本地比线上额外多一些表、字段、索引、外键
- 在该项目的基础上修复了比对过程中遇到分区表会终止后续操作的问题,支持分区表,对于分区表,会同步除了分区以外的变更。
- 支持每条 ddl 只会执行单个的修改,目的兼容tidb ddl问题 Unsupported multi schema change,通过single_schema_change字段控制,默认关闭。
安装
go install github.com/hidu/mysql-schema-sync@master
配置
参考 默认配置文件 config.json 配置同步源、目的地址。
修改邮件接收人 当运行失败或者有表结构变化的时候你可以收到邮件通知。
默认情况不会对多出的表、字段、索引、外键删除。若需要删除字段、索引、外键 可以使用 -drop 参数。
默认情况不会同步字段顺序差异。若需要同步字段顺序,可以使用 -field-order 参数(注意:此操作可能需要重建表,影响性能)。
配置示例(config.json):
cp config.json mydb_conf.json
{
//source:同步源
"source":"test:test@(127.0.0.1:3306)/test_0",
//dest:待同步的数据库
"dest":"test:test@(127.0.0.1:3306)/test_1",
//alter_ignore: 同步时忽略的字段和索引
"alter_ignore":{
"tb1*":{
"column":["aaa","a*"],
"index":["aa"],
"foreign":[]
}
},
// tables: table to check schema,default is all.eg :["order_*","goods"]
"tables":[],
// tables_ignore: table to ignore check schema,default is Null :["order_*","goods"]
"tables_ignore": [],
//有变动或者失败时,邮件接收人
"email":{
"send_mail":false,
"smtp_host":"smtp.163.com:25",
"from":"[email protected]",
"password":"xxx",
"to":"[email protected]"
}
}
JSON 配置项说明
source: 数据库同步源
dest: 待同步的数据库
tables: 数组,配置需要同步的表,为空则是不限制,eg: ["goods","order_*"]
alter_ignore: 忽略修改的配置,表名为tableName,可以配置 column 和 index,支持通配符 *
email : 同步完成后发送邮件通知信息
single_schema_change:是否每个ddl只执行单个修改
运行
直接运行
./mysql-schema-sync -conf mydb_conf.json -sync
预览并生成变更sql
./mysql-schema-sync -drop -conf mydb_conf.json 2>/dev/null >db_alter.sql
使用shell调度
bash check.sh
每个json文件配置一个目的数据库,check.sh脚本会依次运行每份配置。 log存储在当前的log目录中。
自动定时运行
添加crontab 任务
30 * * * * cd /your/path/xxx/ && bash check.sh >/dev/null 2>&1
参数说明
mysql-schema-sync [-conf] [-dest] [-source] [-sync] [-drop] [-field-order]
说明:
mysql-schema-sync -help
-conf string
配置文件名称
-dest string
待同步的数据库 eg: test@(10.10.0.1:3306)/test_1
该项不为空时,忽略读入 -conf参数项
-drop
是否对本地多出的字段和索引进行删除 默认否
-field-order
是否同步字段顺序(可能需要重建表,影响性能)默认否
-http
启用web站点显示运行结果报告的地址,如 :8080,默认否
-source string
mysql 同步源,eg test@(127.0.0.1:3306)/test_0
-sync
是否将修改同步到数据库中去,默认否
-tables string
待检查同步的数据库表,为空则是全部
eg : product_base,order_*
-single_schema_change
生成 SQL DDL 语言每条命令是否只会进行单个修改操作,默认否
Explorar proyectos relacionados
Asabeneh/30-Days-Of-Python
El reto de programación 30 Days of Python es una guía paso a paso para aprender el lenguaje de programación Python en 30 días. Este reto puede llevar más de 100 días. Sigue tu propio ritmo. Estos vídeos también pueden ayudarte: https://www.youtube.com/channel/UC7PNRuno1rzYPb1xLa4yktw
78,730 estrellasgrafana/grafana
Plataforma abierta y componible de observabilidad y visualización de datos. Visualiza métricas, registros y trazas de múltiples fuentes, como Prometheus, Loki, Elasticsearch, InfluxDB, Postgres y muchas más.
77,898 estrellasredis/redis
Para los desarrolladores que crean aplicaciones en tiempo real basadas en datos, Redis es la opción preferida, la más rápida y la de más funciones como caché, servidor de estructuras de datos y motor de consultas de documentos y vectores.
77,491 estrellasapache/superset
Apache Superset es una plataforma de visualización y exploración de datos.
75,523 estrellas