开发者社区> 问答> 正文

实例下数据库全同步,当源实例新建数据库会导致同步失败原因为目标数据库库未创建

实例下数据库全同步,当源实例新建数据库会导致同步失败原因为目标数据库库未创建,源数据库实例A下数据库与目标数据库B实例下数据库建立同步关系,当A实例新建了数据库,在目标B上面不能自动新建数据库导致同步失败,这个可以通过设置otter解决这个问题吗

原提问者Github用户 lklkxcxc

展开
收起
云上静思 2023-06-14 23:31:30 48 0
5 条回答
写回答
取消 提交回答
  • 可以设置“同步ddl” 但是DDL不会自动创建库

    原回答者 Github用户 lzbjut

    2023-06-16 15:19:54
    赞同 展开评论 打赏
  • 值得去的地方都没有捷径

    是的,你可以通过在 Otter 中配置目标数据库的自动创建来解决这个问题。具体步骤如下:

    在 Otter 中创建一个新的同步任务,选择源数据库实例 A 和目标数据库实例 B。

    在“目标端配置”中,找到“同步对象”下的“自动创建目标端对象”选项,将其设置为“是”。

    在“同步对象”下,选择要同步的数据库,并确保在源实例 A 上已经创建了这些数据库。

    保存并运行任务,当源实例 A 创建新的数据库时,Otter 将自动在目标实例 B 上创建相应的数据库,并开始同步数据。

    需要注意的是,自动创建目标端对象可能会带来一些安全风险,因此需要谨慎配置。在配置 Otter 时,请确保你已经按照最佳实践进行了安全配置,并且只允许受信任的用户访问 Otter。

    2023-06-15 16:54:23
    赞同 2 展开评论 打赏
  • 是的,您可以通过 Otter 的配置来解决这个问题。具体来说,您可以在同步任务的配置文件中设置参数otter.node.extend.ddl.enabletrue,这将启用 Otter 的 DDL 扩展功能,允许 Otter 在目标数据库中自动创建新的数据库。

    另外,您还需要确保目标数据库的账户拥有足够的权限来创建新的数据库。如果您使用的是 MySQL 数据库,可以使用以下语句为账户授予创建数据库的权限:

    GRANT CREATE DATABASE ON *.* TO 'username'@'host';
    

    其中,username为账户名称,host为账户所在的主机名或 IP 地址。

    2023-06-15 08:40:32
    赞同 展开评论 打赏
  • 北京阿里云ACE会长

    可以通过Otter来解决这个问题。具体来说,您可以在Otter的数据源配置中启用“自动创建数据库”选项,以确保目标数据库在源数据库中创建新数据库时自动创建。

    要启用此选项,请在Otter的数据源配置中找到“目标端点”部分,并将“自动创建数据库”选项设置为“是”。这样,当您在源数据库中创建新数据库时,目标数据库将自动创建相应的数据库,从而确保同步顺利进行。

    需要注意的是,启用“自动创建数据库”选项后,Otter将使用与源数据库相同的数据库名称和字符集来创建目标数据库。如果您希望在目标数据库中使用不同的数据库名称或字符集,请手动在目标数据库中创建相应的数据库,并在Otter的数据源配置中指定相应的数据库名称和字符集。

    另外,需要注意的是,启用“自动创建数据库”选项可能会带来一些安全风险,因为Otter将具有在目标数据库中创建新数据库的权限。

    2023-06-15 08:06:19
    赞同 展开评论 打赏
  • 是的,可以通过设置Otter解决这个问题。在进行数据库同步之前,需要在目标数据库B上面手动创建需要同步的数据库,然后在Otter的pipeline同步配置中设置"auto-create-table"属性为true。这样当源实例A新建数据库时,目标实例B会自动创建同名的数据库,并进行同步。此外,还需要注意在新增字段时,只能在表结尾新增,不能删除老字段,并且建议先把新增字段同步到目标库,然后再同步到主库,以确保数据不会丢失。

    2023-06-15 08:05:37
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
DTCC 2022大会集锦《云原生一站式数据库技术与实践》 立即下载
阿里云瑶池数据库精要2022版 立即下载
2022 DTCC-阿里云一站式数据库上云最佳实践 立即下载