更新时间:2024-04-29 GMT+08:00
分享

进行数据同步

操作场景

您可能需要对GaussDB(for MySQL)实例中的某些数据库中的数据进行分析,可以选择使用数据同步功能将GaussDB(for MySQL)中的数据同步到HTAP实例中进行分析。

前提条件

  • GaussDB(for MySQL)实例需要按照表1进行参数设置。
    表1 参数说明

    参数名称

    参数值

    修改方式

    default_authentication_plugin

    mysql_native_password

    修改实例参数

    binlog_expire_logs_seconds

    86400

    说明:

    binlog的保留时间建议大于1天:60(秒)*60(分钟)*24(小时)=86400,防止由于binlog时间设置过短,导致增量复制失败。

    修改实例参数

    log_bin

    说明:

    GaussDB(for MySQL)内核版本小于2.0.45.230900时,使用该参数。

    ON

    GaussDB(for MySQL)服务如何开启binlog?

    rds_global_sql_log_bin

    说明:

    GaussDB(for MySQL)内核版本大于或等于2.0.45.230900时,使用该参数。

    ON

    GaussDB(for MySQL)服务如何开启binlog?

    binlog_format

    ROW

    通过“SHOW VARIABLES;”命令查看参数的值,如需修改,请联系客服人员修改。

    binlog_row_image

    FULL

    通过“SHOW VARIABLES;”命令查看参数的值,如需修改,请联系客服人员修改。

    log_bin_use_v1_row_events

    OFF

    通过“SHOW VARIABLES;”命令查看参数的值,如需修改,请联系客服人员修改。

  • GaussDB(for MySQL)实例已创建数据库和表。

创建数据同步

  1. 登录管理控制台
  2. 单击管理控制台左上角的,选择区域和项目。
  3. 在页面左上角单击,选择数据库 > 云数据库 GaussDB(for MySQL)
  4. “实例管理”页面的实例列表中,选择目标实例,单击实例名称进入“基本信息”页面。
  5. 在左侧导航栏选择“HTAP实时分析”。
  6. 单击目标HTAP只读实例名称,进入实例的“基本信息”页面。
  7. 在左侧导航栏选择“数据同步”,单击“创建数据同步”。

    请参考查看监控指标同步前检查HTAP磁盘空间大小,实例连接状态等。

  8. 在创建数据同步页面,进行参数设置。

    图1 创建数据同步

    • 当前不支持数据库名称为中文的库同步。
    • 从只读节点同步数据:选择“是”,勾选实例下的目标只读节点,会从目标只读节点进行全量数据同步,以避免全量同步阶段对主节点产生查询压力。如果仅有一个只读节点,默认选择该节点为目标节点。全量同步过程中需保证只读节点可用,否则全量同步失败后需重新开始同步。
    • 库同步设置:单击下拉列表选择需要进行数据同步的目标库,可根据实际需求修改HTAP实例的数据库参数。
      表2 参数说明

      参数名称

      默认值

      允许值

      描述

      设置建议

      default_isolation_level

      QUERY_SNAPSHOT

      • READ_COMMITTED
      • READ_UNCOMMITTED
      • QUERY_RAW
      • QUERY_SNAPSHOT

      默认隔离级别,仅对MaterializeMySQL引擎有效。

      若同步的数据后续会发生修改,建议使用QUERY_SNAPSHOT,能加速查询,但生成snapshot会增大数据同步的时延;若同步的数据后续不会修改,则建议使用READ_COMMITTED,能降低数据同步的时延。

      enable_snapshots

      true

      • true
      • false

      创建快照以支持mvcc_isolation_level='query_snapshot'。

      当default_isolation_level参数选择QUERY_SNAPSHOT时需要开启,其他场景建议关闭。

      enable_chunk_level

      true

      • true
      • false

      支持chunk级别的并行复制,复制会更快。

      若希望能快速完成全量同步,则建议开启,但同步期间会增大GaussDB(for MySQL)只读节点的读取压力;若对全量同步时长无要求,则建议关闭。

      max_sync_threads

      1

      1~实例CPU数/2

      全量复制最大线程数。

      若希望能快速完成全量同步,HTAP节点性能较好,则建议配置多个线程,但同步期间会增大GaussDB(for MySQL)只读节点的读取压力和HTAP节点的性能压力;若对全量同步时长无要求,则建议不修改。

      max_rows_in_buffer

      2000000

      1~10000000

      内存中允许缓存数据的最大行数(对于单表和无法查询的缓存数据而言)。当行数超过时,数据将被物化。

      -

      max_rows_in_buffers

      6000000

      1~10000000

      内存中允许缓存的最大行数(用于数据库和无法查询的缓存数据而言)。当行数超过时,数据将被物化。

      -

      max_bytes_in_buffer

      200000000

      1~1000000000

      数据在内存中允许缓存的最大字节数(对于单表和无法查询的缓存数据)。当字节数超过时,数据将被物化。

      -

      max_bytes_in_buffers

      600000000

      1~1000000000

      数据在内存中允许缓存的最大字节数(对于数据库和无法查询的缓存数据)。当字节数超过时,数据将被物化。

      -

      max_flush_data_time

      5000

      1~10000

      允许数据缓存在内存中的最大时长(毫秒)。

      若希望同步数据延迟较小,可以调小该参数,但建议不要小于1000毫秒,值过小,可能会导致表分片过多,影响查询性能。该参数和max_rows_in_buffer,max_rows_in_buffers,max_bytes_in_buffer,max_bytes_in_buffers一起决定数据刷新到磁盘的时间。满足其中一个条件,数据就会刷新到磁盘。

      treat_numeric_string_as_integer

      false

      • true
      • false

      允许在全量同步期间块级任务生成中将数字字符串视为整数。

      -

      min_binlog_expire_logs_seconds

      86400

      0~2592000

      数据同步对GaussDB(for MySQL) Binlog保存的最小时长要求,如果Binlog保存的最小时长小于该阈值,同步无法进行。0表示不做限制。

      -

    • 同步范围:根据实际情况选择同步范围,支持对所有表或部分表进行同步。
    • 表黑白名单:当同步范围选择部分表时,需要设置表黑白名单。根据实际情况需要对选择的表进行黑名单和白名单设置。
      表黑白名单设置完成后,后续也可以根据业务需要进行修改,具体请参见修改表黑白名单
      • 表黑白名单不支持设置为空的白名单和空的黑名单。

      • 白名单和黑名单设置可根据实际需要选择其一进行设置,无法同时配置。如配置白名单,则只同步白名单中选择的表。如配置黑名单,则不同步黑名单中选择的表。
      • 需要同步的表,需要包含主键或非空unique key,否则无法同步到HTAP节点。
      • 后台数据合并任务及查询过程中可能额外使用磁盘空间,建议保留50%的空闲磁盘空间供系统额外使用。
      • 在设置表黑白名单时可以在搜索框中一次性输入多张表,表之间可以通过逗号(“,”)、空格(“ ”)、换行(“\n”)分隔。在多表输入之后,单击,与库中表相匹配的表会被默认勾选,出现在已选表中。

    • 表同步设置:根据实际需要开启或关闭表同步设置。
      • 选择开启后
        1. 左侧选择已经同步的表进行相应的列操作,支持ORDER BY, PARTITION BY, SAMPLE BY, PRIMARY KEY, TTL。详细的语法可以参考语法说明
          图2 表同步设置

          例如:

          • ORDER BY(COL1, COL2),COL1,COL2不要为NULL;
          • PARTITION BY toYYYYMM(data_time);
          • PRIMARY KEY默认跟ORDER BY KEY保持一致,一般不需要指定;
          • 若指定了SAMPLE BY, 则ORDER BY必须包含SAMPLE BY的内容,如: SAMPLE BY intHash32(UserID) ORDER BY (CounterID, EventDate, intHash32(UserID));
          • TTL超期时间不要设置过短,建议超期时间最短设置为1天,如:TTL time + INTERVAL 1 DAY。

          设置ORDER BY KEY时需保证数据的区分度,否则可能跟源表数据不一致。

          PARTITION BY KEY的取值不能太多,否则影响性能。

        2. 输入对表进行列操作的语句后,需单击此区域右侧的“校验”。
      • 选择关闭后,直接执行9

  9. 配置完成后,单击“创建同步任务”。
  10. 在详情页面,确认信息无误后,单击“立即同步”。如需修改,可单击“上一步”返回修改。

    如果在当前页面单击“上一步”或未单击“立即同步”后,直接单击页面左上角,返回到数据同步页面,会生成一条待同步的数据同步任务。此时该任务的状态为“同步阶段:等待同步”。如需启动此任务,需单击操作列“同步”,进行数据同步。如需修改此任务,请参考编辑数据同步

  11. 操作成功后,单击“返回同步列表”,返回数据同步页面。在数据同步界面可以查看源库、目标库、状态、删除任务等详细信息。

    图3 查看任务状态

    当HTAP实例的状态显示为“同步阶段:增量同步中”,表示该实例数据同步状态完成。

查看数据同步

  1. 登录管理控制台
  2. 单击管理控制台左上角的,选择区域和项目。
  3. 在页面左上角单击,选择数据库 > 云数据库 GaussDB(for MySQL)
  4. “实例管理”页面的实例列表中,选择目标实例,单击实例名称进入“基本信息”页面。
  5. 在左侧导航栏选择“HTAP实时分析”。
  6. 单击目标HTAP只读实例名称,进入实例的“基本信息”页面。
  7. 在左侧导航栏选择“数据同步”,进入数据同步页面。
  8. 选中目标任务,单击操作列的“查看”。

    图4 查看数据同步

  9. 在“查看数据同步”页面中,查看该任务的详细信息。

编辑数据同步

当数据同步的状态为“同步阶段:等待同步”时,可对此任务进行编辑。

  1. 登录管理控制台
  2. 单击管理控制台左上角的,选择区域和项目。
  3. 在页面左上角单击,选择数据库 > 云数据库 GaussDB(for MySQL)
  4. “实例管理”页面的实例列表中,选择目标实例,单击实例名称进入“基本信息”页面。
  5. 在左侧导航栏选择“HTAP实时分析”。
  6. 单击目标HTAP只读实例名称,进入实例的“基本信息”页面。
  7. 在左侧导航栏选择“数据同步”,进入数据同步页面。
  8. 选中目标任务,单击操作列的“编辑”。

    图5 编辑数据同步

  9. 在“编辑数据同步”页面,进行参数设置。
  10. 设置完成后,单击“编辑同步任务”。
  11. 在详情页面,确认信息无误后,单击“立即同步”。
  12. 操作成功后,单击“返回同步列表”,返回数据同步页面。在数据同步界面可以查看源库、目标库、状态、删除任务等详细信息。

    图6 查看任务状态

    当HTAP实例的状态显示为“同步阶段:增量同步中”,表示该实例数据同步状态完成。

删除数据同步

  1. 登录管理控制台
  2. 单击管理控制台左上角的,选择区域和项目。
  3. 在页面左上角单击,选择数据库 > 云数据库 GaussDB(for MySQL)
  4. “实例管理”页面的实例列表中,选择目标实例,单击实例名称进入“基本信息”页面。
  5. 在左侧导航栏选择“HTAP实时分析”。
  6. 单击目标HTAP只读实例名称,进入实例的“基本信息”页面。
  7. 在左侧导航栏选择“数据同步”,进入数据同步页面。
  8. 选中目标任务,单击操作列的“删除”。

    图7 删除数据同步

  9. 在弹出的对话框中,单击“是”,删除目标数据同步记录。
分享:

    相关文档

    相关产品