连接到和管理基于 OCI 的 MySQL HeatWave

MySQL HeatWave 的一个很酷的事情是能够直接针对现有事务数据运行分析,因此当您需要执行大规模并行分析时,无需将这些数据转移到单独的系统中。令人惊讶的是很容易。

MySQL HeatWave 是一项完全托管的服务,与任何数据库一样,在公共互联网上提供屏蔽时效果最好。我们仍然需要以某种方式连接,以便我们可以处理数据,因此我们来了解一下如何使用 OCI Cloud Shell(我们在入门指南中简要介绍了该工具)、DIY Bastion 主机,以及如何使用 OCI Bastion 服务(了解有关 Bastion 的更多)作为安全隧道与 MySQL Workbench 连接。

如果您尚未启动并运行 MySQL HeatWave 系统,请转到 Getting Started with MySQL HeatWave on OCI 。所有设置完成后,请继续阅读此处,了解各种连接选项、数据加载技术和集群管理功能。

先决条件

  • OCI 账户(试用或付费)
  • MySQL Shell 的部分经验
  • MySQL HeatWave 数据库系统
  • 文本编辑器

快速回顾您的选项

对于那些喜欢命令行界面的人,您可以选择通过 Cloud Shell 或通过自管理的堡垒主机进行连接,在那里您可以利用您最喜欢的 Linux 风格。对于喜欢 GUI 的用户,可以转到 "Secure Tunnel"(安全隧道)部分。但 first...a 几个准备步骤!

在继续之前,请确保您已从数据库系统收集了必需的端点详细信息。您需要专用 IP 地址和 MySQL 端口,它们可以通过在“Databases(数据库)”>“DB Systems(数据库系统)”中导航来获取,单击您之前创建的 MySQL 数据库的名称。

云 shell 的屏幕截图

接下来,您需要一个 SSH 密钥来确保与不同中介系统的安全连接(无论您选择使用堡垒还是安全隧道)。我们将使用 OCI 控制台中提供的 Cloud Shell 创建 SSH 密钥—超级方便。(注 - 我们还可以从 Cloud Shell 连接到数据库 ... 我们很快就会到达该位置)

云 shell 图标的屏幕截图

Cloud Shell 类似于运行 Bash shell 的小 VM,它具有许多功能。事实上,已经安装了 MySQL 和 MySQL Shell 以及各种 OCI 工具。因此,启动需要一分钟,但当它发生时,我们可以在浏览器的 CLI 中做很多事情。

shell 启动后,使用以下命令创建 SSH 密钥:

ssh-keygen -b 2048 -t rsa

只需继续按 Enter 键(接受默认文件名并在没有密码的情况下继续),公共 (~/.ssh/id_rsa.pub) 和专用 (~/.ssh/id_rsa) SSH 密钥很快就会开始使用。

所以让我们 cd ~/.ssh 和 ls -al 来看看里面是什么:

cloud shell 控制台的屏幕截图

如果这是您第一次在 Cloud Shell 中创建 SSH 密钥,您应该只看到两个文件。保持私钥安全,不要共享。某些活动将需要公钥,并且可以上载到某些系统,以及复制和粘贴以促进云中的安全通信。

在离开 Cloud Shell 之前,我们想要获取公钥。打开像记事本这样的文本编辑器,如果您仍然在 Cloud Shell 中,请使用 cat ~/.ssh/id_rsa.pub 复制记事本的 id_rsa.pub 内容,选择该文本的 blob(这是您的密钥),然后粘贴到您选择的文本编辑器中。它应该从 ssh-rsa 开始。您还可以单击 Cloud Shell 右上角的链轮并选择“Download(下载)”。输入公钥的路径:

云 shell 下载的屏幕截图

公钥将放置在您的操作系统为下载的文件指定的文件夹中。对 .ssh/id_rsa(私钥)执行相同的操作,并将其存储在安全位置。在 Mac 或 Linux 上,确保 chmod 400 私钥文件。

OCI Cloud Shell

由于您已经使用 Cloud Shell,让我们从这里开始快速更新。由于工具已安装,因此可以使用 MySQL Client 或 Shell 进行连接。在我们的示例中,我们将使用 MySQL Shell。

首先,您需要将 Cloud Shell 的网络设置更改为专用。

cloud shell 网络设置的屏幕截图

出现提示时,选择部署了 MySQL 实例的 VCN 和子网并 [连接到此网络]。

注:此功能位于您的主区域。如果您尚未在此处部署 MySQL,可以按照提示中的说明建立远程 VCN 对等连接。

登录数据库的时间:

mysqlsh -uadmin -p -h 10.0.1.... --sql

出现提示时,输入创建数据库系统时指定的密码。

如果在创建数据库时加载了示例数据,则可以运行快速查询来验证数据库的内容:

SELECT table_name, table_rows FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'airportdb';

DIY 堡垒主机

计算时间!转至“Compute(计算)”>“Instance(实例)”。与以前保持在同一区间中,然后单击“Create Instance(创建实例)”。为它指定名称,保留所选可用性域和配置。选择您喜爱的 Linux 风格的图像。在本示例中,我们使用的是 Oracle Linux 8。

此处的重要部分是使用您之前设置的 VCN。选择创建的公共子网,并确保“Assign a public IP address(分配公共 IP 地址)”设置为“Yes(是)”。

在 "Add SSH keys"(添加 SSH 密钥)部分中,从记事本粘贴公共密钥。

然后单击“Create(创建)”将其启动!这需要几分钟,当然。

当实例变为绿色并且运行时,它会向我们显示实例访问下的公共 IP 地址和专用 IP。

复制并保存公共 IP。

现在,我们将从堡垒主机连接到 MySQL 数据库系统。

现在,您可以拥有计算实例的公共 IP、专用 SSH 密钥以及数据库系统的专用 IP。我们将前两个连接在一起,通过 SSH 进行连接。指向私有密钥所在的位置,用户名将为 opc。

例如(Mac OS 或 Linux 终端;Windows 上的 PowerShell):

ssh -i ~/.ssh/id_rsa opc@

让我们安装 MySQL Shell(并继续回答所有提示符的 y):

sudo yum install mysql-shell -y

您的端点将是您之前复制到记事本的专用 IP。当然,您还需要您之前站立的数据库的密码。

例如:

mysqlsh -uadmin -p -h 10.0.1.... --sql

出现提示时,输入创建数据库系统时指定的密码。

如果在创建数据库时加载了示例数据,则可以运行快速查询来验证数据库的内容:

SELECT table_name, table_rows FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'airportdb';

OCI 托管堡垒

通过 OCI 堡垒服务,可以轻松地在虚拟云网络内创建与专用资源的安全临时连接。由于 MySQL 是完全托管的数据库系统,因此我们无法连接到 OS。相反,我们将通过堡垒服务创建安全隧道,并使用 MySQL Workbench 进行连接。

要开始使用,请在 OCI 控制台中导航到 "Security"(安全性)-> "Bastion"(堡垒)。创建堡垒实例—这实质上是特定会话配置的容器。

接下来,创建一个会话。类型为 SSH 端口转发会话。您需要输入 MySQL 实例的专用 IP 地址以及数据库端口(默认情况下为 3306)。在本练习中,可以使用之前生成的 SSH 密钥对。在现实世界中,您可能需要生成不同的密钥对。

单击 [Create session]。

会话成功创建后,您可以单击右侧的 3 点菜单来查看 SSH 命令。将命令复制到文本编辑器,并将 替换为先前创建/下载的密钥的完整路径。将 替换为您计划连接到的计算机上的本地端口。您可以使用任何可用的端口。

对于 Mac 或 Linux,您可以打开终端窗口并运行命令。在 Windows 上,使用 PowerShell。如果提示继续连接,请键入 'yes' 并按 Enter 键。

接下来,打开数据库客户端(即 MySQL Workbench)并配置连接。

  • 主机名:127.0.0.1
  • 端口:3306
  • 用户名:admin(在我的案例中)
  • 口令:[存储在 Vault 中 ...]

单击 [Test Connection] –如果一切顺利,则应看到:

mysql 工作台的屏幕截图 - 连接成功

保存您的设置并打开连接。现在,您可以访问现有数据和/或加载新数据。

正在将数据加载到 HeatWave 集群中

此时,我们已准备好将数据从 InnoDB 加载到 HeatWave 中,以便我们能够真正提高效率。

让我们跳回到 MySQL shell,这样我们就可以启动数据加载。

在命令行上:

mysqlsh -uadmin -p -h 10.0.1... --sql

输入数据库密码。

使用 Auto Parallel Load 命令将 airportdb 表加载到 HeatWave 中:

CALL sys.heatwave_load(JSON_ARRAY('airportdb'), NULL);

只是为了确保,我们将验证表是否已加载到 HeatWave 集群中。加载的表具有 AVAIL_RPDGSTABSTATE 加载状态。

同样,在 MySQL Shell 中:

USE performance_schema;

它将告诉您默认方案已设置为 performance_schema。

SELECT NAME, LOAD_STATUS FROM rpd_tables,rpd_table_id WHERE rpd_tables.ID = rpd_table_id.ID;

当然,您可以从此处运行查询并执行所需的所有数据库函数。您还可以打开和关闭 HeatWave 来比较查询时间,并查看使用 HeatWave 运行这些查询的速度。

要查看 HeatWave 是否已打开,请使用以下命令:

SHOW VARIABLES LIKE 'use_secondary_engine%';

要将其关闭,请使用:

SET SESSION use_secondary_engine=OFF;

要将其重新打开,请使用:

SET SESSION use_secondary_engine=ON;

如果需要从 HeatWave 群集卸载表,只需按如下方式更改表:

ALTER TABLE flightschedule SECONDARY_UNLOAD;

管理 HeatWave 集群

创建 HeatWave 群集后,仍可以调整节点数。可以通过使用数据库系统中的 HeatWave 菜单项编辑集群来执行此操作。请注意,集群已联机调整大小,在操作期间不会停机,在调整大小后会自动重新平衡数据。

还有一个选项可以估计您希望分析的数据量可能需要的节点数。生成估计可能需要几分钟时间,但有助于消除集群大小调整的猜测。如果估算器建议对您的配置进行更改,您可以在此处应用它。

您可以随时选择停止 HeatWave 集群(计费也会停止),也可以重新启动来刷新集群。通过停止或重新启动操作停止 HeatWave 群集时,在 HeatWave 群集内存中装入的数据将丢失。启动或重新启动群集时,将自动重新加载以前加载的任何数据。数据库中停止 HeatWave 时发生的数据更改包含在重新加载的数据中。

删除 HeatWave 集群

删除 HeatWave 集群将永久删除 HeatWave 集群节点。HeatWave 集群所附加到的数据库系统不受影响。请记住,删除后需要从头重新设置集群,这意味着将数据重新加载到 HeatWave 中。

总结

最后,我们简要介绍了基于 OCI 的 MySQL HeatWave 的连接策略和管理功能。我们学习了如何通过各种渠道连接数据库系统,如何在 HeatWave 中加载/卸载数据,以及如何打开和关闭辅助引擎。在这里,您可以尝试运行一些查询,甚至加载自己的数据,看看 HeatWave 的速度有多快!

有关 MySQL HeatWave 的更多信息,请阅读此处的文档

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

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

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