请问下,Flink CDC sql client创建的表,在flink重启后消失了,有什么方法可以?

请问下,Flink CDC sql client创建的表,在flink重启后消失了,有什么方法可以持久化吗?

展开
收起
真的很搞笑 2023-07-01 19:07:25 854 发布于黑龙江 分享
分享
版权
举报
3 条回答
写回答
取消 提交回答
  • 根据您的描述,Flink CDC SQL Client创建的表在Flink重启后消失了。这通常是因为Flink CDC SQL Client默认创建的表是临时表(temporary table),在Flink重启后会被删除。如果您希望在Flink重启后仍然保留表的定义和数据,可以考虑以下两种方法:

    1. 创建永久表(persistent table):您可以使用Flink CDC SQL Client创建永久表,以便在Flink重启后仍然保留表的定义和数据。具体而言,您可以使用CREATE TABLE语句来将表创建为永久表。例如:

    CREATE TABLE my_table (
      id INT,
      name STRING,
      PRIMARY KEY (id)
    ) WITH (
      'connector' = 'jdbc',
      'url' = 'jdbc:mysql://localhost:3306/my_database',
      'table-name' = 'my_table',
      'username' = 'my_username',
      'password' = 'my_password'
    );
    

    在上述示例中,通过在WITH子句中设置'connector' = 'jdbc',可以将表创建为永久表,并将其连接到MySQL数据库。

    2. 使用Flink的状态后端:如果您不希望创建永久表,可以考虑使用Flink的状态后端,以便在Flink重启后仍然保留表的数据。具体而言,您可以将表的数据保存到Flink的状态后端中,以便在Flink重启后从状态后端中恢复表的数据。需要注意的是,使用状态后端可能会对Flink的性能产生一定的影响,因此需要根据具体需求和场景进行权衡和调整。

    2023-07-30 13:57:08 发布于河南 举报
    赞同 3

    评论

    全部评论 (3)

    登录后可评论
    头像
    Flink SQL> show tables; Empty set
    2023-09-06 08:41:26
    赞同回复举报
    头像
    重启之后依旧为null
    2023-09-06 08:41:06
    赞同回复举报
    头像
    [ERROR] Could not execute SQL statement. Reason: org.apache.flink.sql.parser.error.SqlValidateException: Flink doesn't support ENFORCED mode for PRIMARY KEY constraint. ENFORCED/NOT ENFORCED controls if the constraint checks are performed on the incoming/outgoing data. Flink does not own the data therefore the only supported mode is the NOT ENFORCED mode
    2023-09-06 08:38:48
    赞同回复举报
  • 北京阿里云ACE会长

    根据您的描述,您在使用 Flink CDC SQL Client 创建的表,在 Flink 重启后消失了。这种情况通常是因为 Flink CDC SQL Client 默认创建的表是临时表(temporary table),在 Flink 重启后会被删除。如果您希望在 Flink 重启后仍然保留表的定义和数据,可以考虑以下两种方法:

    创建永久表(persistent table):您可以使用 Flink CDC SQL Client 创建永久表,以便在 Flink 重启后仍然保留表的定义和数据。具体而言,您可以使用 CREATE TABLE 语句,将表创建为永久表。例如:

    scheme
    Copy
    CREATE TABLE my_table (
    id INT,
    name STRING,
    PRIMARY KEY (id)
    ) WITH (
    'connector' = 'jdbc',
    'url' = 'jdbc:mysql://localhost:3306/my_database',
    'table-name' = 'my_table',
    'username' = 'my_username',
    'password' = 'my_password'
    );
    在上述示例中,通过在 WITH 子句中设置 'connector' = 'jdbc',可以将表创建为永久表,并且将表连接到 MySQL 数据库中。

    使用 Flink 的状态后端:如果您不希望创建永久表,可以考虑使用 Flink 的状态后端,以便在 Flink 重启后仍然保留表的数据。具体而言,您可以将表数据保存到 Flink 的状态后端中,以便在 Flink 重启后从状态后端中恢复表的数据。需要注意的是,使用状态后端可能会对 Flink 的性能产生一定的影响,因此需要根据具体需求和场景进行权衡和调整。

    2023-07-30 12:54:49 发布于北京 举报
    赞同 评论

    评论

    全部评论 (0)

    登录后可评论
  • catalogs,此回答整理自钉群“Flink CDC 社区”

    2023-07-01 19:23:30 发布于黑龙江 举报
    赞同 评论

    评论

    全部评论 (0)

    登录后可评论

实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。

还有其他疑问?
咨询AI助理