如何在不删除文件的情况下使用 mysqldump 更改 mysql 中的数据结构

7 mysql mysqldump

基本上我想要做的是将生产服务器沙箱服务器同步,但只有表结构和存储过程。这些过程没有任何问题,因为它们可以被覆盖,但问题在于表格。我想在更改任何现有数据的情况下使用mysqldump(或您可以提出的任何其他方式)在生产服务器上同步和更改它们的结构。

如果有帮助,我只想添加更多列,而不是删除任何现有列。另外,我正在使用mysqlyog.

有没有办法做到这一点?

red*_*guy 5

只要您不重命名表和列并且不使用分区,您就可以使用schemasync

基本用法是:

schemasync mysql://user:pass@dev-host:3306/dev_db mysql://user:pass@prod-host:3306/prod_db
Run Code Online (Sandbox Code Playgroud)

这将生成两个 SQL 脚本 - 一个用于“修补”生产数据库,另一个用于恢复更改。

请注意,模式更改将锁定受影响的表,因此无论如何您都会有一些停机时间。有一些工具可以避免这种情况:来自 Percona 的pt-online-schema-change和来自 openarkkit 的Oak-online-alter-table

此外,与任何可能具有破坏性的更改一样,请在临时数据库(或其他非生产用途,但生产数据和模式)数据库上测试该过程。


小智 0

  1. 从父服务器导出数据并删除表。
  2. 仅将沙箱中的表结构导入生产中。
  3. 现在再次将数据导入生产中

    保留数据库的备份;