更新mysql数据库结构(表配置和过程/函数)并保留数据

更新mysql数据库结构(表配置和过程/函数)并保留数据,mysql,Mysql,我正在寻找正确的自动更新MySQL数据库的方法,该数据库正在生产中,并且充满了数据。我也有开发数据库,在那里我添加/更改了一些过程和添加/更改表。因此,在我决定一切都可以投入生产的某个时刻,我需要用这个新配置更新我的生产数据库,并在那里保存所有数据。我知道删除一些字段可能需要对新的tables config进行复杂的转换,但我所做的大多数更改都会扩展功能,或者对其进行轻微更改 据我所知,正确的方法可以是: 从数据库转储所有数据 删除数据库中的所有内容并创建新的 表/功能/程序 使用新的 配置 这

我正在寻找正确的自动更新MySQL数据库的方法,该数据库正在生产中,并且充满了数据。我也有开发数据库,在那里我添加/更改了一些过程和添加/更改表。因此,在我决定一切都可以投入生产的某个时刻,我需要用这个新配置更新我的生产数据库,并在那里保存所有数据。我知道删除一些字段可能需要对新的tables config进行复杂的转换,但我所做的大多数更改都会扩展功能,或者对其进行轻微更改

据我所知,正确的方法可以是:

  • 从数据库转储所有数据
  • 删除数据库中的所有内容并创建新的 表/功能/程序
  • 使用新的 配置

  • 这是最好的方法,还是有更好的方法在不进行数据操作的情况下应用新配置?

    一段字符串有多长?没有“正确”的方法,它总是取决于具体情况。大多数方法都需要在执行生产数据库时使其脱机

    一种更好的方法是使用新结构创建新的数据库模式,并将现有数据迁移到新模式中。然后只需更改应用程序连接到的架构的名称。这样可以保留旧的结构和数据,以防出现问题。这被称为制定退出计划。这样做可以在新模式投入使用之前对其进行彻底的测试。它还可以最大限度地减少停机时间。最大的问题是在迁移过程中插入和更新现有数据


    在大多数情况下,当您只是扩展功能时,只需运行一系列CREATE和ALTER语句即可。创建新表/视图/过程对现有表/视图/过程没有影响。改变同样的对象也可以。每一项都需要根据具体情况进行评估,以确定潜在的数据损坏和丢失。例如,向表中添加列时,需要考虑现有行的默认值。在所有情况下,变化的顺序都是重要的。例如:在更改使用列的过程之前添加列。

    您是否有正式的数据迁移工具,可以在其中定义、测试和复制对模式和数据的更改?如果没有,那就是你需要的。