OCI 上的 MySQL HeatWave 入门

如果您在 MySQL 中运行混合事务和分析工作负载,或者将数据移动到单独的数据库进行分析,则 MySQL HeatWave 非常有意义。HeatWave 是一款内置的高性能内存中查询加速器,它可帮助分析和混合工作负载将 MySQL 的性能提高几个数量级,而无需对当前应用进行任何更改。该服务基于 MySQL Enterprise Edition 构建,允许开发人员使用全球流行的开源数据库快速创建和部署安全的云原生应用。

Oracle 设计了 MySQL HeatWave,以便开发人员可以专注于应用。您不必为 OLTP 和 OLAP 管理两个数据库,并且可以获得实时、安全的分析,而不会产生 ETL 复制的复杂性、延迟和成本。MySQL HeatWave 是一项全托管式服务,可自动执行备份、恢复以及数据库和操作系统打补丁等任务。“少担心,多吃点,“正如我们所说的。MySQL HeatWave 由 Oracle 的 MySQL 开发团队开发和提供支持。

要开始使用 OCI,我们将创建 VCN、部署 MySQL 数据库系统并创建 HeatWave 集群、提取一些数据并进行分析。正在寻求开始使用基于 AWS 的 MySQL HeatWave 。这将显示如何在多云场景中利用 MySQL HeatWave。多么美好的时光啊!

由于我们刚刚起步,我们从一开始就真正开始创建具有适当访问权限的 VCN,然后了解如何在 OCI 中创建 HeatWave 集群。

先决条件

  • OCI 账户和 Oracle Cloud 账户名称
  • 管理员访问
  • 兼容的浏览器(Chrome 69+、Safari 12.1+、Firefox 62+ 或任何经 Oracle Jet 批准的浏览器)

概览

  1. 创建 VCN 并进行数据库访问配置
  2. 创建用户和组(如果您尚未创建)
  3. 创建具有 HeatWave 兼容配置的数据库系统
  4. 连接到 Cloud Shell 并使用 MySQL Shell
  5. 导入示例数据
  6. 添加 HeatWave 集群
  7. 运行查询!

在我们的示例中,我们使用简化的方法来设置使用 HeatWave 的内容。

现在,让我们开始使用基础知识!

创建 VCN 并进行数据库访问配置

菜单:首页 > 网络 > 虚拟云网络

使用虚拟云网络 > 启动 VCN 向导 > 创建具有 Internet 连接的 VCN 和子网。当然,你也会得到一个私有子网。

VCN 向导的屏幕截图

方便的向导将引导您为系统创建网络环境,尽管有很多方法可以配置,但我们不要分心。请注意,我选择了之前设置的区间 my_heatwave_testing,因为这很重要!

VCN 配置的屏幕截图

现在,我们将 VCN 的安全列表配置为允许通过 MySQL Database Service 端口进行流量传输。单击您创建的 VCN 的专用子网,然后单击其安全列表。

安全列表的屏幕截图

现在单击“添加安全”列表。

我们将添加一些启用正确端口(3306 和 33060)所需的入站规则。详细信息如下:

Source CIDR: 0.0.0.0/0
Destination Port Range: 3306,33060
Description: MySQL Port

然后单击“Add Ingress Rules(添加入站规则)”。

入站规则的屏幕截图

看起来还不错!

创建用户和组(如果您尚未创建)

如果您已经是管理员,则可以跳至下一步,但如果您要将用户添加到 OCI 租户,并且可能需要访问数据库系统来管理该租户,请单击此处。即使在“流线型”示例中,我们也需要设置权限和限制访问,但您可以在此处阅读有关管理组的所有内容。通常,我们将创建一个组,创建策略,然后将用户添加到组中。

让我们与身份和安全选项交朋友。

为您的用户创建一个组;在我的示例中,我创建了一个名为 MySQL 管理员的组。

将用户添加到组。在我们的示例中,我们将自己添加到此组中。

当然,对于一个组,您将首先创建所需的所有用户,将这些用户添加到需要访问的组中,并放心,您可以使用适当的访问控制将他们设置为松散。

我们通过设置策略、允许一个组具有完全访问权限(管理员)和具有有限访问权限的组(例如数据库用户)来允许访问。

示例策略:

Allow group MySQLAdmins to {SUBNET_READ, SUBNET_ATTACH, SUBNET_DETACH, VCN_READ, COMPARTMENT_INSPECT} in tenancy
Allow group MySQLAdmins to manage mysql-family in tenancy
Allow group MySQLAdmins to use tag-namespaces in tenancy

这样可以配置和管理我们的区间,并定义应用于数据库实例的访问范围。

有关在 OCI 中添加用户和设置策略的更多信息,请参阅本文档

创建具有 HeatWave 兼容配置的数据库系统

菜单 > 数据库 > 数据库系统

创建数据库系统

请注意,如果您尚未设置用户、VCN 等,系统会向您发出警告。太好了。不要忘记检查要在哪个区间中创建此对象,再检查一次左侧的“List Scope(列表范围)”下。单击“Create DB System(创建数据库系统)”。

数据库系统信息的屏幕截图

双选区间,为其指定名称,然后选择 HeatWave(当然)。

创建管理员身份证明的屏幕快照

您将创建管理员凭据,确保将这些凭据保存在方便但安全的地方。

在“Configure Networking(配置网络)”中,您将使用之前创建的虚拟云网络,但是我们将使用专用子网。保留默认可用性域并转至“配置硬件”。

配置位置的屏幕截图

确认在 "Configure Hardware" 部分中,所选配置是 MySQL。HeatWave。VM.Standard。

此外:

  • CPU 核心计数:16
  • 内存大小:512 GB
  • 数据存储大小:1024
配置硬件的屏幕截图

在 "Configure Backup"(配置备份)部分中,您可以将默认备份窗口保留七天。

配置备份计划的屏幕截图

继续滚动并单击“显示高级选项”。

转到“Networking(网络)”选项卡,在“Hostname(主机名)”字段中输入数据库系统的确切名称。这将使您的集群能够向 DNS 注册,并允许您通过全限定域名 (FQDN) 访问主机。

配置网络的屏幕截图

确保端口配置对应于以下内容:

  • MySQL 端口:3306
  • MySQL X 协议端口:33060

对于此示例,我们将在创建资源期间使用存储在对象存储存储桶中的数据自动导入数据,这些数据通过预先验证的请求 (PAR) 提供。

数据导入的屏幕截图

如果希望使用 MySQL Shell 加载数据,可以跳过此步骤。

选择“数据导入”选项卡。系统将提示您将 PAR 的 URL 粘贴在此处。对象 PAR URL 必须是可使用 MySQL Shell 转储 utilityHere 的 ociParaMifest 选项创建的清单文件。您还可以使用对象存储桶 PAR 或前缀为 PAR 的对象。

下面是一个示例链接,可用于导入用于试用目的的 Airport-DB。

https://objectstorage.us-ashburn-1.oraclecloud.com/p/zRBSs7nKURyZRcIoV4QlYhascC5gkZcJeQoBS8c2ssyEPID3PSDAnh73OMClQQH4/n/idazzjlcjqzj/b/airportdb-bucket-10282022/o/airportdb/@.manifest.json

全部设置 ... 单击创建!

这次会出现黄色的六边形,它最终将变为绿色,并且您的数据库系统将启动并运行。做一些茶或拿一杯水,你已经做了很多。

连接并使用 MySQL Shell

让我们使用方便的 Cloud Shell 连接到 MySQL 和 MySQL Shell。它是一个嵌入在 OCI 仪表盘中的 Linux 终端(非常可爱)。在右上角,单击 Cloud Shell 提示符图标,将在浏览器底部打开命令行。确保为云 shell 配置专用网络设置,选择之前创建的 VCN。

mysql shell 的屏幕截图
mysql shell 专用网络设置的屏幕截图

最酷的是,MySQL Shell 已安装!

创建与 HeatWave 兼容的数据库系统后,我们将使用 MySQL Shell 连接到该系统。

mysqlsh --host <dbsystemendpointipaddress> -u <username> -p</username></dbsystemendpointipaddress>

您可以了解有关 MySQL Shell 的更多信息

有关连接数据库系统的更多信息。

导入数据

如果您选择使用 PAR 选项在资源创建期间导入数据,则可以跳过此步骤。否则,您可以继续访问 import AirportDB (PDF)

在 Cloud Shell 中:

wget https://downloads.mysql.com/docs/airport-db.tar.gz
tar xvzf airport-db.tar.gz

这将创建一个名为 airport-db 的目录,其中包含数据文件。

启动 MySQL shell 并连接到 MySQL 数据库系统端点:

mysqlsh _Username@DBSystem_IP_Address_or_host_Name

出现提示时,输入之前指定的管理员密码。连接后,您将使用转储加载实用程序导入数据。

MySQL>JS> util.loadDump("airport-db", {threads: 16, deferTableIndexes: "all", ignoreVersion: true})

导入需要几分钟,然后您就可以继续前进了!

添加 HeatWave 集群

HeatWave 确实是为大数据集设计的,需要快速分析,所以即使我只导入一个样本数据库,你也可以随心所欲地加载(前提是你已经为它分配了存储)。此外,查询可以在集群中运行,而无需卸载到单独的数据库。创建集群可能需要几分钟时间。

要开始使用,请在 OCI 控制台中转到数据库系统:数据库 > 数据库系统 >,然后单击您最近创建的数据库系统。

在“资源”下,您将看到 HeatWave(以及其他便利项目),单击该图标。

资源选项卡的屏幕截图

当然,您希望添加 HeatWave 集群(使用右侧的按钮,在页面中向下),或者单击顶部的“更多操作”菜单并选择“添加 Heatwave 集群”。接受默认值(16 个 CPU 核心,具有 512GB RAM 和 1 个节点),然后单击添加 HeatWave 集群的按钮。

添加集群的屏幕截图
配置热浪集群的屏幕截图

这需要几分钟时间,因此您可以在集群启动时重新加热该饮料。

将数据加载到 HeatWave 并运行查询

最后,有趣的部分!运行 HeatWave 集群后:

  1. 启动 MySQL Shell 并连接到 MySQL 数据库系统的端点:
    $> mysqlsh Username@DBSystem_IP_Address_or_Host_Name
  2. 将 MySQL Shell 执行模式更改为 SQL:
    MySQL>JS> \sql
  3. 转到 airportdb 数据库:
    MySQL>SQL> USE airportdb;  
    Default schema set to `airportdb`.Fetching table and column names from `airportdb` for auto-completion... Press ^C to stop.`
  4. 将数据从 MySQL InnoDB 加载到 HeatWave
    MySQL>SQL> call sys.heatwave_load(JSON_ARRAY(“airportdb”), NULL);
  5. 使用 EXPLAIN 验证查询是否可以卸载到 HeatWave 集群:
    mysql 查询 1 的屏幕快照
    注:如果可以卸载查询,EXPLAIN 输出中的 Extra 列将报告“使用辅助引擎 RAPID”。
  6. 验证查询是否可以卸载后,运行查询并记下执行时间。
    mysql 查询 2 的屏幕快照

现在,让我们看看使用“普通香草”MySQL 数据库系统需要多长时间。我们通过禁用 use_secondary_engine 变量来实现此目的

mysql 查询 3 的屏幕截图

总结

到目前为止,我们在 OCI 上所做的都是使用端口来设置虚拟云网络,以供 MySQL 使用,设置 MySQL 数据库并添加 HeatWave 集群。然后,我们导入了一些测试数据,并运行了几个查询来了解 HeatWave 与数据库系统的速度。

想了解更多信息?欢迎加入我们的公共 Slack 频道讨论!

注:为免疑义,本网页所用以下术语专指以下含义:

  1. 除Oracle隐私政策外,本网站中提及的“Oracle”专指Oracle境外公司而非甲骨文中国。
  2. 相关Cloud或云术语均指代Oracle境外公司提供的云技术或其解决方案。

此页面内容为机器翻译。