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

时间:2015-11-02 18:56:34

标签: mysql

我正在寻找正确的自动方式来更新正在生产和充满数据的MySQL数据库。我也有开发db,我添加/更改一些过程并添加/更改表。因此,在我决定一切都准备好生产的某个时刻,我需要使用这个新配置更新我的生产数据库并保留所有数据。我知道删除某些字段可能需要对新表配置进行复杂的转换,但我的大多数更改都会扩展功能,或稍微更改一下。

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

  1. 转储db中的所有数据。
  2. 删除数据库中的所有内容并创建新内容 表/功能/过程。
  3. 使用new将数据恢复到数据库 配置。
  4. 这是最好的方法,还是有更好的方法来应用没有数据操作的新配置?

1 个答案:

答案 0 :(得分:0)

一根绳子有多长?没有正确的'方式,它总是取决于具体情况。大多数方法都需要在您执行操作时使生产数据库脱机

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

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