快速同步架构

本主题说明如何执行简单的数据库架构比较和同步。

比较架构

  1. 单击“开始”的“数据库设计”选项卡上的“新模式比较”。 或者,在“比较”菜单上单击“新建架构比较”。 将打开“架构比较”向导。

    注意
    比较项目仅在dbForge Studio for MySQL中可用。 在Schema Compare for MySQL中,窗口的实际外观可能会略有不同。

  2. 选择源和目标连接。 (您可以通过单击“编辑”按钮或“新建”按钮来编辑选定的连接或创建新的连接。)要快速比较架构,可以在设置数据库后立即单击“比较”按钮,并跳过步骤3。
  3. 要调整比较过程,请设置比较选项。

  4. 要设置要比较的对象类型,请切换到“对象过滤器”选项卡。

同步架构

  1. 分析比较结果,通过选中相应的复选框来选择要同步的数据库对象。

  2. 选择要在网格中与比较结果同步的数据。 (为此,请选中顶部网格中表(或视图)旁边的复选框。您还可以在底部网格的Only in Source,Only Target和Different Records选项卡上的单个记录旁边选中复选框。
  3. 单击“比较”工具栏上的“同步”按钮,以打开“模式同步”向导。
  4. 在向导中选择输出同步脚本的位置,然后单击“同步”按钮。

预览架构同步脚本

分析比较结果时,可以选择任何对象并为其预览预览同步脚本,该脚本将由dbForge Schema Compare for MySQL生成。 此选项非常方便,因为您可以检查脚本并确保获得正确的同步并在此之后获得所需的结果。

预览同步脚本:

在网格中选择所需的对象(或多个对象),然后执行以下任一操作:

    单击“比较”工具栏上的“查看架构更新脚本”按钮。 右键单击网格,然后选择“查看架构更新脚本”选项。
默认情况下,带有脚本片段的窗口将在“模式比较”窗口下打开,并显示比较结果。 您可以将打开的窗口移动到dbForge Schema Compare for MySQL UI中的任何位置。

通过命令行比较和同步架构

您可以使用命令行自动进行模式比较和同步。

  1. 单击开始,然后在运行行中键入cmd。按ENTER。命令提示符将打开。
  2. 键入位于PC上的dbForge Schema Compare for MySQL安装文件夹中的schemacompare.com文件的路径,然后按空格键。
  3. 在命令提示符中键入所有参数(要运行的动作)。您可以通过三种方式完成此操作:

    直接在命令提示符中键入所有参数,例如:
    /schemacompare /source host:<server_name> database:<database_name> [port:<port>] user:<user_name> [password:<password>]
    [charset:<charset>] /target host:<server_name> database:<database_name> [port:<port>] user:<user_name> password:<password>
    [charset:<charset>] 
    
    指定以前保存的比较文档的路径,以使用连接设置以及文档中指定的比较设置。
        /schemacompare /compfile:"D:\file_name.scomp"
    

    c. 键入带有所需命令行参数的先前生成的文件的路径(例如,请参见下面的如何准备文件),例如:

        /argfile:"D:\file_name.txt"
    

    例如,在命令提示符中键入文件中未指定的其他参数。:

        C:\Program Files\Devart\dbForge Schema Compare for MySQL>schemacompare.com /argfile:file_name.txt /schemacompare /sync
    

    建议: 要查看命令行中可用参数的快速帮助,请键入以下内容:

    schemacompare.com /?
    
  4. 按ENTER运行该过程。

使用命令行参数准备文件

  1. 定义源和目标连接字符串:
/schemacompare /source connection:"host:host_name;port:port;user:user_name;password:password;database:database_name" /target
 connection:"host:host_name;port:port;user:user_name;password:password;database:database_name"

您也可以使用已经包含源和目标连接字符串的架构比较文档。

/schemacompare /compfile:"C:\MyComparison.scomp"
  1. 要生成并保存日志文件,请指定文件名和位置。 例如:
/log:"C:\Log.log"
  1. 要生成和保存比较报告文件,请指定文件名和位置。 例如:
/report:"C:\Report.html"
  1. 要同步架构,即更新目标架构,请输入以下内容:
/sync
  1. 要生成并保存同步脚本,请指定文件位置和名称。 例如:
/sync:"C:\sync_script_name.sql"

比较和同步不同MySQL服务器版本上的架构

比较不同MySQL服务器上的架构时,架构对象中可能会出现一些不兼容性。例如,在MySQL 3.23和5.x上比较架构时。 MySQL 5.x上的模式可以具有3.23服务器上不支持的对象,例如视图,触发器,存储的例程。本主题描述了dbForge Schema Compare for MySQL如何处理这种不兼容性。

不支持的对象

如果源模式包含目标MySQL服务器上不支持的对象,则它们不会显示在“模式比较”文档中,并且不受同步影响。 如果目标模式包含源MySQL服务器上不支持的对象,则这些对象将显示在文档中。 它们的默认操作为“无”,并且不会受到同步的影响。 您可以将其操作更改为Drop,以便将对象从目标架构中删除。

部分支持的对象

有时即使源数据库和目标数据库都支持数据库对象的类型,也存在一些不兼容性。 例如,MySQL 3.23和MySQL 5.x均支持表,但是一台服务器上的表可能具有另一列不支持的类型的列。 当源服务器上支持对象但目标服务器上不支持对象时,该对象的状态将不一致,并且无法参与同步。如果目标中存在源中不支持的对象,但是目标服务器上支持源对象,则可以同步目标架构,并且不兼容的数据库对象的状态为“不同”。

这是这种不兼容的一些示例:

  • 不支持的列类型(例如,MySQL 3.23不支持BIT列类型)。
  • 不支持的表引擎。
  • 不支持的ROW_FORMAT
  • 在DDL中使用不受支持的内置函数。

分区

除其他不兼容性外,还以其他方式处理分区。 让我们研究几种情况:

    除了分区外,源表和目标表具有相同的结构。 在这种情况下,可以更新目标表。 如果目标模式支持分区,则状态为“不同”,否则为“相等”。 源分区表的结构不同于对应的目标表,或者没有对应的目标表(具有相同的名称)。 在这种情况下,表具有“不同”状态。

如果目标模式支持分区,则将分区表包括在模式比较结果中,否则将忽略它们。

语法不相容

如果相等的架构对象由于放在不同的服务器版本上而在语法上有所不同,则根据目标对象DDL生成对象DDL。