数据仓库服务 GAUSSDB(DWS)-使用CDM迁移Hologres至GaussDB(DWS)集群:步骤一:元数据迁移

时间:2024-11-15 10:15:43

步骤一:元数据迁移

  1. 在Hologres中,使用以下SQL命令进行用户的角色和权限查询。

    1
    2
    SELECT ROLNAME FROM pg_roles;
    SELECT user_display_name(ROLNAME) FROM pg_roles;
    

  2. GaussDB (DWS)中,集群创建成功后,默认情况下未开启三权分立,数据库系统管理员具有与对象所有者相同的权限。默认只有对象所有者或者系统管理员可以查询、修改和销毁对象。根据Hologres的查询出的角色和权限,相应在GaussDB(DWS)中创建对应的角色和权限,并通过以下途径授权用户权限。

    • 使用GRANT将对象的权限授予其他用户。
      1
      2
      GRANT USAGE ON SCHEMA schema TO user;
      GRANT SELECT ON TABLE schema.table To user;
      
    • 使用户继承角色所拥有的对象权限。
      1
      2
      CREATE ROLE role_name WITH CREATEDB PASSWORD '*******';
      GRANT role_name to user;
      

  3. 导出源语法。源语法是客户业务的实现逻辑,从Hologres中导出源语法,再修改为适用于GaussDB(DWS)的语法,可以减少建模的工作量,提升业务迁移的效率。

    执行以下SQL进行全量语法导出。

    1
    SELECT hg_dump_script('schema_name.table_name');
    
    • 由于源语法涉及业务范围的识别,需熟悉业务的DBA进行操作,建议源语法由客户DBA提供。
    • 如果进行批量导出,可以使用UNION ALL将所有待查询表关联,语法格式如下:
      1
      2
      3
      4
      SELECT hg_dump_script('schema_name.table_name')
      UNION ALL
      SELECT hg_dump_script('schema_name.table_name')
      
      
    • 如果执行失败,需要使用如下命令在DB中创建extension,然后再执行上述SQL。
      1
      CREATE EXTENSION hg_toolkit;
      

  4. 连接GaussDB(DWS),执行以下SQL创建数据库,推荐使用MySQL兼容模式建库。

    1
    CREATE DATABASE tldg WITH ENCODING 'UTF-8' TEMPLATE template0 DBCOMPATIBILITY 'MYSQL';
    

  5. 使用DSC工具对DDL语法进行转换。

    1. 解压迁移前准备获取到的DSC工具包。
    2. 将待转换的DDL语法文件放入DSC的input文件夹中。
      图2 input目录
    3. 打开命令行工具,Windows环境下双击runDSC.bat。(Linux环境下运行runDSC.sh。)
    4. 执行以下命令进行语法转换。
      1
      runDSC.bat -S Hologres
      
      图3 DDL语法转换
    5. 可以在output文件夹下查看转换结果。
      图4 DDL转换结果
    6. 连接GaussDB(DWS),执行上一步转换完成的DDL语句,完成建表。

    DSC更多内容请参见DSC工具使用指导

support.huaweicloud.com/bestpractice-dws/dws_05_0017.html