更新时间:2025-11-12 GMT+08:00

数据库基本信息采集器

采集数据库的基础信息,包括数据库版本、字符集、数据库大小、性能数据、数据库部分配置信息、表对象的统计信息(包括表使用到的数据类型、主键字段的数据类型、无主键表信息、LOB表信息、大数据表信息以及分区表和大分区信息),以及Schema维度的统计信息。

约束与限制

  • 当前支持MySQL和PostgreSQL数据库。需要目标数据库防火墙开放数据库端口(MySQL默认为3306,PostgreSQL默认为5432)。
  • 当前不支持加密连接数据库的信息进行采集。
  • 在对数据库资源进行规格评估时,建议使用在线调研方式采集实例信息。通过手工导入的数据库实例资源如果缺少节点信息,将导致目的端规格评估时无法推荐对应节点,从而影响评估准确性。如果需要进行风险评估,推荐通过迁移中心 Agent离线采集数据库实例信息,并以手工导入方式添加至MgC。

参数配置说明

表1 数据库基本信息采集器参数配置说明

参数

必选

配置说明

db_instance_name

输入连接数据库时的初始数据库名称。连接MySQL时默认值为mysql,连接PostgreSQL时默认值为postgres。

output_path

自定义的采集结果输出文件路径。如 C:\MgC-Agent\test。

默认路径C:\MgC-Agent\data\collection-result\ agent_collector_database_all_basic_info。

user_selector

输入待采数据库schema/database列表,用英文逗号分隔。默认值为空,表示采集该库中的所有schema/database。

MySQL数据库凭证授权操作

数据库采集器需要连接到数据库并查询系统视图获取信息,请确保提供的用户具有相关权限,可参考如下步骤准备和授权:

  1. 登录数据库服务器。打开终端(Linux)或命令提示符(Windows),进入MySQL客户端安装目录或配置MySQL环境变量。执行以下命令登录数据库:

    mysql -u <user> -p

    -- user:数据库用户名。该用户需要有创建用户与授权的权限,通常情况下,只有数据库管理员(如 root 用户)会被赋予这些权限。建议联系数据库管理员进行以下创建与授权操作。

    图1 MySQL 命令行界面

  2. 登录数据库成功后,执行以下命令,创建用户:

    CREATE USER '<db-user>'@'<host>' IDENTIFIED BY '<db-password>';
    • --db-user:需替换为实际创建的用户名,对应mgc-agent中凭证的用户名。
    • --host:指定允许登录的主机,@'<host>'可省略,省略时的默认值是@%,您可以指定迁移中心Agent服务器所在的IP地址为host。示例:
      • %:允许从任意主机登录(包括远程);
      • localhost:仅允许从数据库服务器本机登录;
      • 192.168.1.%:允许从指定网段(如192.168.1.x)的主机登录;
      • 192.168.1.252:仅允许192.168.1.252的主机登录;
    • --db-password: db-user的密码,对应mgc-agent中凭证的密码。

  3. 进行数据库授权。参考以下两种方式并结合实际需求选择指定数据库授权或所有数据库授权。

    • 执行以下命令进行指定数据库授权,采集器默认使用mysql数据库进行测试连接,若没有以下权限测试连接将失败。
      GRANT SELECT ON mysql.* TO '<db-user>'@'<host>';
      GRANT PROCESS ON *.* TO '<db-user>'@'<host>';
      GRANT SELECT ON <database-name>.* TO '<db-user>'@'<host>';

      -- process权限用于指定用户可以查看information_schema所有的表。

      --db-user:数据库用户名,步骤2中创建的用户。

      --@'<host>':指定允许登录的主机,与步骤2创建的值保持一致,不填默认为@%。

      --database-name:对待采集的数据库名称。

    • 执行以下命令进行所有数据库授权:
      GRANT PROCESS ON *.* TO '<db-user>'@'<host>';
      GRANT SELECT ON *.* TO '<db-user>'@'<host>';

      --db-user:数据库用户名,步骤2中创建的用户。

      --@'<host>':指定允许登录的主机,与步骤2创建的值保持一致,不填默认为@%。

  4. 执行以下命令,刷新权限:

    FLUSH PRIVILEGES;

  5. 执行以下命令,查看用户是否有权限:

    SHOW GRANTS FOR '<db-user>'@'<host>';

    --db-user:数据库用户名,步骤2中创建的用户。

    --@'<host>':指定允许登录的主机,与步骤2创建的值保持一致,不填默认为@%。

    • 执行指定数据库授权时,如下图,说明已授权。

    • 执行所有数据库授权时,如下图,说明已授权。

  6. 在MgC-Agent上添加凭证。

    1. 登录MgC Agent控制台,进入凭证管理页面,单击创建凭证,进入创建凭证页面。
    2. 资源类型选择数据库,认证方式选择用户名/密码。用户名和密码为步骤2中创建的用户和对应的密码。

MySQL数据库取消授权和删除用户操作

  • 取消已授予的权限使用REVOKE命令,语法与GRANT对应,按需执行以下命令取消上面授予的权限。
    REVOKE PROCESS ON *.* FROM '<db-user>'@'<host>';
    REVOKE SELECT ON *.* FROM '<db-user>'@'<host>';
    REVOKE SELECT ON mysql.* FROM '<db-user>'@'<host>';
    REVOKE SELECT ON <database-name>.* TO <db-user>;
  • 执行以下命令,删除用户。
    DROP USER '<db-user>'@'<host>';

PostgreSQL数据库凭证授权操作

数据库采集器需要连接到数据库并查询系统视图获取信息,请确保提供的用户具有相关权限,可参考如下步骤准备和授权:

  1. 登录数据库服务器。打开终端(Linux)或命令提示符(Windows),进入PostgreSQL客户端安装目录或配置PostgreSQL环境变量。执行以下命令登录数据库:

    psql -d <databaseName> -h <ip> -p <port> -U <user> -W
    • --databaseName:登录的数据库名称。
    • --ip:机器的ip地址。
    • --port:数据库端口号。
    • --user:数据库登录的用户名。

  2. 登录数据库成功后,执行以下命令,创建用户:

    CREATE USER "<db-user>" PASSWORD '<db-password>';
    • --db-user:需替换为实际创建的用户名,对应mgc-agent中凭证的用户名。
    • --db-password:db-user的密码,对应mgc-agent中凭证的密码。

  3. 执行以下命令,在待采集的数据库进行授权。采集对象需要授予如下权限。

    如下授权语句仅适用于目前已有的数据库对象。若授权之后添加新的对象,这些新增对象将不会自动获得权限,必须重新执行授权语句。

    GRANT USAGE ON SCHEMA "<user-schema>" TO "<db-user>";
    GRANT SELECT ON ALL TABLES IN SCHEMA "<user-schema>" TO "<db-user>";
    GRANT USAGE ON ALL SEQUENCES IN SCHEMA "<user-schema>" TO "<db-user>";
    GRANT TRIGGER ON ALL TABLES IN SCHEMA "<user-schema>" TO "<db-user>";
    • --user-schema:需要采集的schema的名字,如public。
    • --db-user:需替换为实际创建的用户名,对应mgc-agent中凭证的用户名。

PostgreSQL数据库取消授权和删除用户操作

  • 取消已授予的权限使用REVOKE命令,语法与GRANT对应,按需执行以下命令取消上面授予的权限。
    REVOKE USAGE ON SCHEMA "<user-schema>" FROM "<db-user>";
    REVOKE SELECT ON ALL TABLES IN SCHEMA "<user-schema>" FROM "<db-user>";
    REVOKE USAGE ON ALL SEQUENCES IN SCHEMA "<user-schema>" FROM "<db-user>";
    REVOKE TRIGGER ON ALL TABLES IN SCHEMA "<user-schema>" FROM "<db-user>";
  • 执行以下命令,删除用户。
    DROP USER "<db-user>";