MySQL HeatWave 的一个很酷的事情是能够直接针对现有事务数据运行分析,因此当您需要执行大规模并行分析时,无需将这些数据转移到单独的系统中。令人惊讶的是很容易。
MySQL HeatWave 是一项完全托管的服务,与任何数据库一样,在公共互联网上提供屏蔽时效果最好。我们仍然需要以某种方式连接,以便我们可以处理数据,因此我们来了解一下如何使用 OCI Cloud Shell(我们在入门指南中简要介绍了该工具)、DIY Bastion 主机,以及如何使用 OCI Bastion 服务(了解有关 Bastion 的更多)作为安全隧道与 MySQL Workbench 连接。
如果您尚未启动并运行 MySQL HeatWave 系统,请转到 Getting Started with MySQL HeatWave on OCI 。所有设置完成后,请继续阅读此处,了解各种连接选项、数据加载技术和集群管理功能。
对于那些喜欢命令行界面的人,您可以选择通过 Cloud Shell 或通过自管理的堡垒主机进行连接,在那里您可以利用您最喜欢的 Linux 风格。对于喜欢 GUI 的用户,可以转到 "Secure Tunnel"(安全隧道)部分。但 first...a 几个准备步骤!
在继续之前,请确保您已从数据库系统收集了必需的端点详细信息。您需要专用 IP 地址和 MySQL 端口,它们可以通过在“Databases(数据库)”>“DB Systems(数据库系统)”中导航来获取,单击您之前创建的 MySQL 数据库的名称。
接下来,您需要一个 SSH 密钥来确保与不同中介系统的安全连接(无论您选择使用堡垒还是安全隧道)。我们将使用 OCI 控制台中提供的 Cloud Shell 创建 SSH 密钥—超级方便。(注 - 我们还可以从 Cloud 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 中创建 SSH 密钥,您应该只看到两个文件。保持私钥安全,不要共享。某些活动将需要公钥,并且可以上载到某些系统,以及复制和粘贴以促进云中的安全通信。
在离开 Cloud Shell 之前,我们想要获取公钥。打开像记事本这样的文本编辑器,如果您仍然在 Cloud Shell 中,请使用 cat ~/.ssh/id_rsa.pub 复制记事本的 id_rsa.pub 内容,选择该文本的 blob(这是您的密钥),然后粘贴到您选择的文本编辑器中。它应该从 ssh-rsa 开始。您还可以单击 Cloud Shell 右上角的链轮并选择“Download(下载)”。输入公钥的路径:
公钥将放置在您的操作系统为下载的文件指定的文件夹中。对 .ssh/id_rsa(私钥)执行相同的操作,并将其存储在安全位置。在 Mac 或 Linux 上,确保 chmod 400 私钥文件。
由于您已经使用 Cloud Shell,让我们从这里开始快速更新。由于工具已安装,因此可以使用 MySQL Client 或 Shell 进行连接。在我们的示例中,我们将使用 MySQL 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';
计算时间!转至“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 堡垒服务,可以轻松地在虚拟云网络内创建与专用资源的安全临时连接。由于 MySQL 是完全托管的数据库系统,因此我们无法连接到 OS。相反,我们将通过堡垒服务创建安全隧道,并使用 MySQL Workbench 进行连接。
要开始使用,请在 OCI 控制台中导航到 "Security"(安全性)-> "Bastion"(堡垒)。创建堡垒实例—这实质上是特定会话配置的容器。
接下来,创建一个会话。类型为 SSH 端口转发会话。您需要输入 MySQL 实例的专用 IP 地址以及数据库端口(默认情况下为 3306)。在本练习中,可以使用之前生成的 SSH 密钥对。在现实世界中,您可能需要生成不同的密钥对。
单击 [Create session]。
会话成功创建后,您可以单击右侧的 3 点菜单来查看 SSH 命令。将命令复制到文本编辑器,并将
对于 Mac 或 Linux,您可以打开终端窗口并运行命令。在 Windows 上,使用 PowerShell。如果提示继续连接,请键入 'yes' 并按 Enter 键。
接下来,打开数据库客户端(即 MySQL Workbench)并配置连接。
单击 [Test Connection] –如果一切顺利,则应看到:
保存您的设置并打开连接。现在,您可以访问现有数据和/或加载新数据。
此时,我们已准备好将数据从 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 中。
最后,我们简要介绍了基于 OCI 的 MySQL HeatWave 的连接策略和管理功能。我们学习了如何通过各种渠道连接数据库系统,如何在 HeatWave 中加载/卸载数据,以及如何打开和关闭辅助引擎。在这里,您可以尝试运行一些查询,甚至加载自己的数据,看看 HeatWave 的速度有多快!
有关 MySQL HeatWave 的更多信息,请阅读此处的文档。
想了解更多信息?欢迎加入我们的公共 Slack 频道讨论!
注:为免疑义,本网页所用以下术语专指以下含义: