Oracle云服务控制台中的MySQLInnoDB集群

  • 时间:2017-05-04
  • 分类:数据库/系统
  • 1389 人浏览
[导读]在本教程中,我们将引导您完成在Oracle公共云(OPC)中创建3节点InnoDB集群的整个过程。 我们将从OPC IaaS资源的初始配置和设置到InnoDB集群的创建和设置来处理每个步骤。

在本教程中,我们将引导您完成在Oracle公共云(OPC)中创建3节点InnoDB集群的整个过程。 我们将从OPC IaaS资源的初始配置和设置到InnoDB集群的创建和设置来处理每个步骤。

在OPC上设置三个MySQL实例
在我们开始之前,我们必须在OPC上创建三个MySQL实例。
登录到Oracle Cloud Dashboard并打开MySQL Cloud Service Console。

2165258ad1aab74020cc2c17421f431f_IC-OPC-00-1024x626.png

在Oracle MySQL云服务控制台上,按[创建服务]添加新的MySQL实例。 对于本教程,我们将使用3个名称为ic01,ic02,ic03的MySQL实例。 输入服务说明,然后单击[下一步>]。

2f2e60d76dddbaccc24478cd70558064_IC-OPC-01-1024x528.png

在下一个屏幕上,我们选择虚拟机类型 - 它将运行Oracle Linux 6作为操作系统 - 提供我们的SSH公共密钥 - 以便我们稍后可以访问该机器,并且我们指定了一些基本的MySQL配置详细信息。

注意:对于本教程,我们将使用root作为管理员用户。 请确保在所有3个实例上使用相同的管理员密码。

a4293d9e6ba26d6b9834e23a86ed795f_IC-OPC-02-1024x844.png


创建虚拟机需要几分钟的时间。 我们可以用这个时间开始创建另外两个MySQL服务实例。

6c9767a71af9792d5420b0b8e9316a79_IC-OPC-03-1024x796.png

MySQL服务实例可用后,我们可以单击实例名称-ic01以获取有关MySQL实例的更多信息。 请确保注意公共IP地址,因为我们需要使用此信息更新本地主机文件。

27c364b8a64d05ce79259cb9a1a1f89f_IC-OPC-04-1024x618.png

在这种情况下,MySQL服务实例正在140.86.13.239上运行。 对所有实例重复此操作,然后更新本地/ etc / hosts文件。 用您的编辑器打开文件 - 我会使用nano:

并为所有三个MySQL服务实例添加条目,指定其主机名和IP地址:

完成此操作后,我们可以更新访问规则以允许MySQL实例在OPC网络内相互通信,并允许公众访问机器(如果需要)。 单击上下文菜单,然后选择[访问规则]。

f252f2ea1ac51e7d269138a0f6c7cc36_IC-OPC-05-1024x896.png

在“访问规则”屏幕上,单击[创建规则]以显示“创建访问规则”对话框。

f19b593e5f47bd874155a693770b691c_IC-OPC-06-1024x882.png

创建三个新规则并启用公共访问机器:

在这些步骤之后,您有三个实例可以准备好从SSH会话中为InnoDB集群使用做好准备。

准备InnoDB群集使用的MySQL服务实例

在上一节中,我们在OPC中创建了MySQL Cloud Service实例,并上传了我们的公共SSH密钥。 我们还将OPC实例名称添加到本地主机文件中,以便我们可以通过(短)名称而不是IP访问它们。 现在我们可以通过本地机器上的SSH访问OPC中的MySQL服务实例。

打开终端并键入以下连接到第一个实例:

如果一切配置正确,您将看到以下欢迎消息:

b4831e62c3cca7169e98c5639b51a228_IC-OPC-10.png

安装Python 2.7

由于MySQL Shell需要Python,所以需要在继续之前进行安装。 在这种情况下,将使用Oracle Linux的软件集合库2.3安装Python。 使用以下命令下载包含软件集合存储库条目的yum存储库文件:

dcfc6146a06373f2f9fb7916d111c0c2_download_software_coll_repo.png

启用存储库的简单方法是使用本教程中使用的yum-utils软件包。 由于默认情况下未安装,因此我将使用以下命令进行安装:

一旦yum-utils包的安装完成,启用Software Collection存储库:

要继续,请安装Software Collection Library Utility和Python 2.7:

现在,启用使用Python 2.7:

安装MySQL Shell

首先要安装MySQL Shell,我们需要安装官方的MySQL yum存储库。 运行以下命令来安装yum仓库:

在终端中键入以下命令来安装MySQL Shell:

准备InnoDB群集使用的MySQL实例

首先,我们需要切换到“oracle”用户,然后启动MySQL Shell,指定应该为其启用Python 2.7:

da95dd61e818365b915d4cd0d9bf3186_start_mysqlsh_with_oracle_user.png

我们切换到“oracle”用户,因为MySQL服务(mysqld)仅暴露给“oracle”用户,并且它不在“opc”用户的PATH中。

由于OPC MySQL服务实例使用密码验证插件,并且其默认值对于自动生成的路由器引导密码可能会太严格,我们将通过使用MySQL Shell在每个实例上将密码策略降低一级以避免可能出现的问题:

接下来,我们通过调用以下函数配置本地实例,在出现提示时输入root用户的密码:

需要指定MySQL配置文件(my.cnf),并在/u01/bin/mysql/my.cnf中找到。 如果您使用不同于“root”的其他管理用户,那么当您使用dba.configureLocalInstance()配置主机时,MySQL Shell可以为InnoDB集群创建新的管理用户,但是由于我们使用“root” 对于本教程,不需要创建新的用户。

然后,您将看到一个报告,其中包含由MySQL Shell所做的更改,并显示一条消息,指出您需要重新启动MySQL服务实例以应用它们:

3474b515748c4c3d4def983fdaedd8a2_configure_local_instance.png

要重新启动MySQL服务器,首先退出MySQL Shell:

然后使用“oracle”用户运行以下命令来停止MySQL Server实例:

然后再次启动MySQL服务器:

一旦服务再次运行,启动MySQL Shell,指定应启用Python 2.7:

然后运行以下命令来验证主机是否准备好进行集群使用:

825251a46c81ade6d362c0d75e959b17_check_instance_configuration.png

创建InnoDB集群

要创建InnoDB集群,我们将使用root用户在本地计算机上运行shell,并指定运行MySQL的端口:

2dad7398966da9e287e3355f40f0c21f_remote_connection-1.png

请记住配置您的本地/ etc / hosts文件以便能够使用远程连接的短主机名而不是IP地址

现在,创建一个经典会话到主机,输入root的密码时出现提示:

4dc88ff947d66595deb4782168a1fc71_shell_connect.png

在以下命令中,请注意ipWhitelist选项参数。 由于每个主机都有自己的网络,因此必须指定要允许连接到集群的IP的范围。 默认情况下存储该值的变量设置为“AUTOMATIC”,这允许仅从主机上的专用子网连接。 您可以添加多个IP范围,用逗号分隔它们。 斜线后的数字是使用CIDR值时的网络位数。 将集群创建分配给一个变量供以后使用:

一旦创建集群,就会出现一些有关集群创建信息和向集群添加实例所需的功能的消息。

a24cf927b546c5cd0d12c4b14eea68cf_create_cluster_ipwhitelist.png

然后我们可以使用以下命令验证集群的状态:

385b197eee7eeb25c955caa5b32ed1bb_cluster_status.png

将实例添加到InnoDB集群

现在是时候向集群添加实例了。 运行以下功能添加已配置的第二个实例。 由于上述原因,还可以指定可选参数ipWhitelist:

6e8cb4614c0e35779200b7905a0a2057_add_instance_ic02.png

运行以下命令来验证我们在集群中的实例的状态:

708d61fb1cb5230badc75d601401bd65_cluster_status_2.png

然后添加第三个实例:

5d2d3d7fea4b6364e4d36e184a727cf5_add_instance_ic03.png

并再次运行命令来验证我们的集群的状态:

5a3db2026a9d57751a2cd6a9655071ed_cluster_status_3.png

保持集群配置

为了在每个实例上保持集群配置 - 以便当重新启动时,实例会自动重新加入集群 - 我们必须在每个实例上再次使用dba.configureLocalInstance()。 该命令将使用自动重新加入群集所需的参数更新本地my.cnf文件。

为此,请在每个实例上本地运行以下命令:

配置MySQL路由器

下一步是引导我们的集群。 我们假设您已经安装了MySQL路由器2.1.3+。 打开终端或命令提示符并键入以下命令:

Windows

Linux

53657acfc2ea644de99aecc858fc08c5_mysqlrouter_bootstrap.png

启动MySQL路由器

windows:

Linux (assuming that myrouter directory it’s on the home path):

测试InnoDB集群

现在我们将演示故障切换的工作原理。

启动MySQL Shell并使用指向我们远程集群的MySQL路由器端口在本地连接:

然后使用以下功能获取集群句柄:

然后,显示集群的状态:

d079dbeb048973066a38cb54557c0683_get_cluster.png

您可以通过查找标记为具有“R / W”模式的实例来查看当前为PRIMARY的实例。 然后您可以远程连接到该实例并停止MySQL服务:

ad5c1a9d668448a783c47536f12d3480_shutdown_remote.png

一旦MySQL服务停止,请再次检查集群状态:

您将看到一条消息,指出在查询期间与MySQL的连接已丢失。

77a70842f8148fc97499eb3aa1f8079e_lost_connection.png

要重新连接,请运行以下命令:

72f044208124bd9c337c59727065cc8f_reconnect.png

然后执行该功能再次验证集群状态:

6cd589715c41209228b1bd72e2d8d380_cluster_status_4.png

请注意,实例ic01-mysql-1具有“MISSING”状态,而其他实例之一则将PRIMARY(或“master”)角色从“R / O”更改为“R / W”。

在远程主机连接上再次启动MySQL服务:

再次检查集群状态:

请注意,实例ico1-mysql-1返回“ONLINE”,但现在它具有一个SECONDARY(或“从”)角色,其模式设置为“R / O”。

f5b2d02280d2a2cb9728cef9121ddfe1_cluster_status_5.png

结论

您现在已经获得了使用Oracle公共云和MySQL云服务实例正确创建和配置集群的基本知识,包括如何引导远程集群,以便您可以在本地访问。 当您不想公开运行MySQL服务器的服务器,而是提供仅处理应用程序流量的另一台服务器的IP地址时,此方案非常有用。

来源:本文为线上采编,如涉及作品内容、版权和其它问题,请及时与本网联系,我们将在第一时间删除!