Apigee Integration 和 MySQL 连接使用入门

本教程介绍如何从示例集成连接到 MySQL 数据库实例,以及如何对 MySQL 数据库表执行 list、get、create、update 和 delete 操作。

准备工作

  • 确保您有权访问 Application Integration。
  • 选择 Google Cloud 项目并执行以下任务:

    • 将以下角色授予您要用于创建连接的服务账号:
      • roles/secretmanager.viewer
      • roles/secretmanager.secretAccessor
    • 启用以下服务:
      • secretmanager.googleapis.com (Secret Manager API)
      • connectors.googleapis.com (Connectors API)

      如果之前没有为您的项目启用这些服务,则在创建连接时系统会提示您启用。

  • 确保您有权访问可用于创建数据库的 MySQL 服务器。如需所有受支持的连接器和受支持版本的列表,请参阅连接器参考

在 MySQL 中创建数据库和表

从安装了 MySQL 客户端的系统运行以下命令:
  1. 连接到 MySQL 服务器:
    mysql --host=MYSQL_HOSTNAME_OR_IP_ADDRESS --port=PORT_NUMBER -uUSERNAME -pPASSWORD
    替换以下内容:
    • MYSQL_HOSTNAME_OR_IP_ADDRESS:MySQL 服务器的名称或 IP 地址。
    • PORT_NUMBER:MySQL 服务器的端口号。
    • USERNAME:MySQL 服务器的用户名。
    • PASSWORD:MySQL 服务器的用户密码。
  2. 创建 MySQL 数据库:
    CREATE DATABASE tutorialDB;
  3. 创建表:
    CREATE TABLE EMPLOYEE
      (
      employee_id int auto_increment primary key,
      employee_first_name varchar(500) NOT null,
      employee_last_name varchar(500) NOT null,
      employee_emailID varchar(500)
      ); 
  4. 将行添加到您创建的 EMPLOYEE 表中:
    INSERT INTO EMPLOYEE (employee_first_name,employee_last_name,employee_emailID) values ("Peter","Dilliard","test-01@test.com");
    INSERT INTO EMPLOYEE (employee_first_name,employee_last_name,employee_emailID) values ("Meaghan","Webb","test-02@test.com");
    
  5. 验证表是否已创建以及是否已添加行:
    SELECT * FROM EMPLOYEE;
    显示以下表行:
    +-------------+---------------------+--------------------+------------------+
    | employee_id | employee_first_name | employee_last_name | employee_emailID |
    +-------------+---------------------+--------------------+------------------+
    |           1 | Peter               | Dilliard           | test-01@test.com |
    |           2 | Meaghan             | Webb               | test-02@test.com |
    +-------------+---------------------+--------------------+------------------+
    

创建 MySQL 连接

若要使集成能够连接到 MySQL 数据库,请创建与 MySQL 数据库的新连接:

  1. 点击 + 新建以打开创建连接页面。
  2. 位置部分中,选择连接的位置。
    1. 区域列表中,选择要在其中创建连接的区域。

      如需查看所有受支持区域的列表,请参阅位置

    2. 点击下一步
  3. 连接详情部分中,输入以下详细信息:
    1. 连接器列表中,选择 MySQL(预览版)
    2. 连接器版本列表中,选择连接器版本。
    3. 连接名称字段中,输入连接实例的名称。

      连接名称必须符合以下条件:

      • 请使用字母、数字或连字符。
      • 字母必须小写。
      • 名称必须以字母开头,以字母或数字结尾。
      • 名称不能超过 63 个字符。
    4. 可选:在说明字段中,添加连接实例的说明。
    5. 可选:启用 Cloud Logging
    6. 服务账号列表中,选择具有所需角色的服务账号。
    7. 数据库名称字段中,输入 MySQL 数据库的名称。
    8. (可选)配置连接节点设置

      • 节点数下限:输入连接节点数下限。
      • 节点数上限:输入连接节点数上限。

      节点是处理事务的连接单元(或副本)。 连接处理越多事务就需要越多节点,相反,处理越少事务需要越少节点。 如需了解节点如何影响连接器价格,请参阅连接节点的价格。如果未输入任何值,则默认情况下,节点数下限设置为 2(以便提高可用性),节点数上限设置为 50。

    9. 使用代理:选中此复选框可为连接配置代理服务器并配置以下值:
      • 代理身份验证方案:选择要通过代理服务器进行身份验证的身份验证类型。支持以下身份验证类型:
        • 基本:基本 HTTP 身份验证。
        • 摘要:摘要 HTTP 身份验证。
      • 代理用户:用于向代理服务器进行身份验证的用户名。
      • 代理密码:用户密码的 Secret Manager 密文。
      • 代理 SSL 类型:连接到代理服务器时使用的 SSL 类型。支持以下身份验证类型:
        • 自动:默认设置。如果网址是 HTTPS 网址,则使用“隧道”选项。如果网址是 HTTP 网址,则使用“永不”选项。
        • 始终:连接始终启用 SSL。
        • 永不:连接未启用 SSL。
        • 隧道:连接通过隧道代理建立。代理服务器会打开与远程主机的连接,并且流量会流经该代理。
      • 代理服务器部分中,输入代理服务器的详细信息。
        1. 点击+ 添加目标
        2. 选择目标类型
          • 主机地址:指定目标的主机名或 IP 地址。

            如果要与后端系统建立专用连接,请执行以下操作:

    10. 可选:如需向连接添加标签,请点击 + 添加标签
    11. 点击下一步
    12. 目标部分中,输入要连接的远程主机(后端系统)的详细信息。
      • 目标类型列表中,选择一个主机地址。
        • 从列表中选择主机地址,以指定目标的主机名或 IP 地址。
        • 如果要与后端系统建立专用连接,请从列表中选择端点连接,然后从端点连接列表中选择所需的端点连接。

        如果要与后端系统建立公共连接以提高安全性,您可以考虑为连接配置静态出站 IP 地址,然后将防火墙规则配置为仅将特定静态 IP 地址列入许可名单。

        若要输入其他目标,请点击 + 添加目标

      • 点击下一步
    13. 身份验证部分中,您可以提供凭据:
      • 用户名字段中,输入用于连接的 MySQL 用户名。
      • 密码字段中,输入包含与 MySQL 用户名关联的密码的 Secret Manager 密文。
        • 如果您之前创建过密文,但列表中不提供该密文,请选择手动输入密文。在按资源 ID 添加密文对话框中,从 Secret Manager 复制并粘贴资源 ID。
          • 如需使用最新版本,请以 "projects/project-number/secrets/secret-name" 格式复制并粘贴父级密钥的资源 ID
          • 如需选择特定版本,请以 "projects/project-number/secrets/secret-name/versions/1" 格式复制并粘贴特定版本的资源 ID

          如需添加密文,请点击添加密文

        • 如果您尚未创建用于 MySQL 的密文,请点击创建新密文。在创建密文对话框中,输入以下详细信息:
          • 名称字段中,输入密文名称。
          • 密文值字段中,输入密文的内容或上传包含相应密文的文件。
          • 点击创建密文
      • 密文版本列表中,从可用版本的下拉列表中选择密码密文的版本。
      • 点击下一步
  4. 查看部分中,查看您的连接和身份验证详细信息。
  5. 点击创建

配置身份验证

根据您要使用的身份验证输入详细信息。

  • 用户名和密码
    • 用户名:用于连接的 MySQL 用户名。
    • 密码:包含与 MySQL 用户名关联的密码的 Secret Manager 密文。

配置集成以使用 MySQL 连接

如需使用在集成中创建的 MySQL 连接,您必须执行以下任务:

  1. 创建新的集成
  2. 添加和配置 API 触发器
  3. 添加和配置连接器任务
  4. 将 API 触发器元素连接到连接器任务元素

创建新的集成

  1. Apigee 界面中,选择您的 Apigee 组织
  2. 点击开发 > 集成
  3. 点击创建集成
  4. 集成名称字段中,输入集成的名称。
  5. 可选:在说明字段中,输入说明。
  6. 区域列表中,选择集成的区域。 区域列表仅列出在 Google Cloud 项目中预配的区域。如需预配新区域,请点击启用区域。如需了解如何预配新区域,请参阅启用新区域
  7. 如需打开集成编辑器,请点击创建

添加和配置 API 触发器

创建新集成后,您可以向集成添加和配置 API 触发器。请按以下步骤操作:

  1. 在集成编辑器工具栏中,点击触发器以显示可用触发器列表。
  2. API 元素拖动至集成编辑器。

添加和配置连接器任务

如需配置连接器任务以列出 employee 表中的所有实体,请按照以下步骤操作:

  1. 在集成编辑器工具栏中,点击任务以显示可用任务列表。
  2. 连接器元素拖动至集成编辑器。
  3. 点击设计器上的连接器任务元素,以打开连接器面板。
  4. 连接器面板中,点击配置连接器

    在显示的连接器任务编辑器对话框中,按照以下步骤操作:

    1. 区域列表中,选择您在其中创建了 MySQL 连接的连接区域。
    2. 连接列表中,选择您创建的 MySQL 连接,然后点击下一步
    3. 类型部分中,选择实体,然后点击下一步
    4. 实体列表中,选择员工
    5. 操作列表中,选择 List,然后点击下一步
    6. 若要完成连接配置并关闭对话框,请点击完成

将 API 触发器元素连接到连接器任务元素

接下来,添加一个边缘连接,以将 API 触发器连接到连接器任务。边缘连接是集成中的任何两个元素之间的连接。如需了解边缘和边缘条件,请参阅边缘

如需添加边缘连接,请按照以下步骤操作:

  1. 在 API 触发器元素的底部,点击分支控制点。
  2. 在连接器任务元素顶部的联接控制点处拖放边缘连接。

测试集成

如需测试集成,请按以下步骤操作:

  1. 在集成编辑器工具栏中,点击测试
  2. 可选:更改执行截止时间(分钟)值,然后点击测试集成
  3. 集成成功完成后,测试集成窗格将显示消息集成执行成功。如需查看日志,请点击查看日志
  4. 展开响应参数部分。在连接器输出载荷中会显示以下输出:
    [ {
        "employee_id": 1.0,
        "employee_first_name": "Peter",
        "employee_last_name": "Dilliard",
        "employee_emailID": "test-01@test.com"
      },
      {
        "employee_id": 2.0,
        "employee_first_name": "Meaghan",
        "employee_last_name": "Webb",
        "employee_emailID": "test-02@test.com"
      } ]

对 MySQL 数据库表执行其他操作

在集成中配置连接器任务时,您可以选择以下任何一种操作:

  • 列表
  • 获取
  • 创建
  • 更新
  • 删除

您已使用 List 操作查看 employee 表中的所有行。在本教程的以下几个部分中,您将使用 Get、Create、Update 和 Delete 操作向 employee 表中添加、修改或移除行。

从表中获取行

如果您知道要提取的行的实体 ID(或主键),请将该值作为输入提供给集成中的 Get 操作。Get 操作返回的详细信息与 List 操作返回的详细信息类似。但是,List 操作会提取与指定查询匹配的所有表行的详细信息,而 Get 操作仅提取与指定实体 ID 匹配的表行的详细信息。

请记住,尽管 List 操作默认返回表中的所有行,但 Get 操作需要实体 ID 作为搜索参数。因此,要使用 Get 操作,您必须知道要提取的行的实体 ID,或提供实体 ID 的默认值。

如需获取指定行的详细信息,请执行以下步骤以配置您之前创建的连接器任务:

  1. 在集成编辑器中,点击连接器任务元素以查看连接器配置窗格。
  2. 连接器配置窗格中,点击配置连接器。 在显示的连接器任务编辑器对话框中,按照以下步骤操作:
    1. 设置实体/操作部分的操作列表中,选择 Get
    2. 点击完成
  3. 连接器配置窗格中,展开任务输入部分。之后,执行以下操作:
    1. 点击实体 ID。
    2. 在出现的修改变量对话框中,选择输入到集成
    3. 点击保存
  4. 在集成编辑器工具栏中,点击测试
  5. 可选:更改执行期限(分钟)值。
  6. 输入要提取详细信息的实体的实体 ID。例如 2
  7. 点击测试集成
  8. 集成成功完成后,测试集成窗格将显示消息集成执行成功。如需查看日志,请点击查看日志
  9. 展开响应参数部分。在连接器输出载荷中会显示以下输出:
    [ {
        "employee_id": 2.0,
        "employee_first_name": "Meaghan",
        "employee_last_name": "Webb",
        "employee_emailID": "test-02@test.com"
      } ]
  10. 您可以验证此处显示的信息是否与 MySQL 表中相应行的信息匹配。如需在 MySQL 表中查看此信息,请从 MySQL 客户端执行以下命令:
    SELECT * FROM employee WHERE employee_id=2;
    会显示以下表行:
    +-------------+---------------------+--------------------+------------------+
    | employee_id | employee_first_name | employee_last_name | employee_emailID |
    +-------------+---------------------+--------------------+------------------+
    |           2 | Meaghan             | Webb               | test-02@test.com |
    +-------------+---------------------+--------------------+------------------+
        

向表添加行

借助 Create 操作,您可以在表中添加一行。使用 Create 操作时,您必须在连接器输入载荷中提供实体的所有值。

如需使用 Create 操作添加行,请执行以下步骤来配置您之前创建的连接器任务:

  1. 在集成编辑器中,点击连接器任务元素以查看连接器配置窗格。
  2. 连接器配置窗格中,点击配置连接器。 在显示的连接器任务编辑器对话框中,按照以下步骤操作:
    1. 设置实体/操作部分的操作列表中,选择 Create
    2. 点击完成
  3. 连接器配置窗格中,展开任务输入部分。之后,执行以下操作:
    1. 点击实体 ID。
    2. 在出现的修改变量对话框中,选择输入到集成
    3. 点击保存
  4. 在集成编辑器工具栏中,点击测试
  5. 可选:更改执行期限(分钟)值。
  6. 输入要创建的实体的详细信息。例如,如需在 employee 表中添加新员工,请输入以下 JSON:
    {
      "employee_first_name": "Mary",
      "employee_last_name": "Smith",
      "employee_emailID": "test-03@test.com"
    }
  7. 点击测试集成
  8. 集成成功完成后,测试集成窗格将显示消息集成执行成功。如需查看日志,请点击查看日志
  9. 展开响应参数部分。在连接器输出载荷中会显示以下输出:
    {
      "employee_first_name": "Mary",
      "employee_last_name": "Smith",
      "employee_emailID": "test-03@test.com"
    }
    连接器输出载荷下,实体 ID 显示为输出:
    {
      "employee_id": 3.0
    }
  10. 您可以验证 MySQL 表中是否已添加该行。如需在 MySQL 表中查看此信息,请从 MySQL 客户端执行以下命令:
    SELECT * FROM employee;
    会显示以下表行:
    +-------------+---------------------+--------------------+------------------+
    | employee_id | employee_first_name | employee_last_name | employee_emailID |
    +-------------+---------------------+--------------------+------------------+
    |           1 | Peter               | Dilliard           | test-01@test.com |
    |           2 | Meaghan             | Webb               | test-02@test.com |
    |           3 | Mary                | Smith              | test-03@test.com |
    +-------------+---------------------+--------------------+------------------+
        

更新表中的行

使用 Update 操作可更改表中的行值。例如,您可以使用此操作来更新 employee 表中员工的电子邮件 ID。如需指定要更新的实体,您可以像在 Get 操作中一样提供实体 ID。或者,您可以使用过滤条件子句参数来传递用于过滤表行的值。如果您要根据特定搜索条件在多个行中进行相同的更改,这将非常有用。

如需更新表行,请执行以下步骤以配置先前创建的连接器任务:

  1. 在集成编辑器中,点击连接器任务元素以查看连接器配置窗格。
  2. 连接器配置窗格中,点击配置连接器。 在显示的连接器任务编辑器对话框中,按照以下步骤操作:
    1. 设置实体/操作部分的操作列表中,选择 Update
    2. 点击完成
  3. 连接器配置窗格中,展开任务输入部分。之后,执行以下操作:
    1. 点击过滤条件子句
    2. 在出现的修改变量对话框中,选择输入到集成
    3. 点击保存
  4. 在集成编辑器工具栏中,点击测试
  5. 可选:更改执行期限(分钟)值。
  6. 输入据以过滤的条件。例如,如需查找电子邮件 ID 为 test-03@test.com 的员工,请输入:
    employee_emailID="test-03@test.com"
  7. 输入要更新的值。例如,如需更新 employee 表中当前电子邮件 ID 与过滤条件子句 test-03@test.com 匹配的所有员工的电子邮件 ID,请输入以下 JSON:
    {
      "employee_emailID": "msmith@test.com"
    }
  8. 点击测试集成
  9. 集成成功完成后,测试集成窗格将显示消息集成执行成功

    如需验证实体是否已更新,请使用 Get 操作获取指定实体的详细信息。

  10. 您可以验证 MySQL 表中的行是否已更新。如需在 MySQL 表中查看此信息,请从 MySQL 客户端执行以下命令:
    SELECT * FROM employee;
    会显示以下表行:
    +-------------+---------------------+--------------------+------------------+
    | employee_id | employee_first_name | employee_last_name | employee_emailID |
    +-------------+---------------------+--------------------+------------------+
    |           1 | Peter               | Dilliard           | test-01@test.com |
    |           2 | Meaghan             | Webb               | test-02@test.com |
    |           3 | Mary                | Smith              | msmith@test.com  |
    +-------------+---------------------+--------------------+------------------+
          

删除表中的行

您可以使用 Delete 操作删除一个或多个表行。提供实体 ID 或使用过滤条件子句指定要删除的行。请注意,如果您使用过滤条件子句指定要删除的行的条件,可以删除与给定过滤条件匹配的多行。如果只想删除某个特定行,请使用实体 ID。

如需使用实体 ID 删除表行,请执行以下步骤以配置之前创建的连接器任务:

  1. 在集成编辑器中,点击连接器任务元素以查看连接器配置窗格。
  2. 连接器配置窗格中,点击配置连接器。 在显示的连接器任务编辑器对话框中,按照以下步骤操作:
    1. 设置实体/操作部分的操作列表中,选择 Get
    2. 点击完成
  3. 连接器配置窗格中,展开任务输入部分。之后,执行以下操作:
    1. 点击实体 ID。
    2. 在出现的修改变量对话框中,选择输入到集成
    3. 点击保存
  4. 在集成编辑器工具栏中,点击测试
  5. 可选:更改执行期限(分钟)值。
  6. 输入要提取详细信息的实体的实体 ID。例如 2
  7. 点击测试集成
  8. 集成成功完成后,测试集成窗格将显示消息集成执行成功

    如需验证表行是否已删除,请使用 Get 操作获取删除的行的详细信息。此操作会返回指定实体 ID 的错误。

    您还可以使用 List 操作,并视情况为删除的表行提供过滤条件子句。这将返回剩余的行列表,这可能是空列表。

    例如,如果您删除了实体 ID 为 3 的表行,然后为 List 操作指定了过滤条件子句 employee_emailID="msmith@test.com" 或实体 ID 3,日志中的响应参数会显示 []

  9. 您可以验证 MySQL 表中的行是否已删除。如需在 MySQL 表中验证这一点,请从 MySQL 客户端执行以下命令:
    SELECT * FROM employee;
    会显示以下表行:
    +-------------+---------------------+--------------------+------------------+
    | employee_id | employee_first_name | employee_last_name | employee_emailID |
    +-------------+---------------------+--------------------+------------------+
    |           1 | Peter               | Dilliard           | test-01@test.com |
    |           2 | Meaghan             | Webb               | test-02@test.com |
    +-------------+---------------------+--------------------+------------------+
            

后续步骤

尝试构建与其他连接器的集成。如需查看所有支持的连接器列表,请参阅连接器参考文档