前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Oracle公共云中的MySQL InnoDB集群

Oracle公共云中的MySQL InnoDB集群

作者头像
数据和云
发布2018-03-07 15:57:59
1.4K0
发布2018-03-07 15:57:59
举报
文章被收录于专栏:数据和云数据和云

题记:本文我们将引导大家完成在Oracle公共云(OPC)中创建3节点InnoDB集群的整个过程,包括从OPC IaaS资源的初始配置,到InnoDB集群的创建和配置的每个步骤。

在OPC上配置三个MySQL实例

开始之前,必须在OPC上创建三个MySQL实例。

登录到Oracle Cloud Dashboard并打开MySQL Cloud Service Console。

在Oracle MySQL云服务控制台上,按[Create Service]添加新的MySQL实例。实验中使用3个名称为ic01,ic02,ic03的MySQL实例。 输入服务说明,然后单击[Next >]。

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

注意:本实验使用root作为管理员用户。 请确保在所有3个实例上使用相同的管理员密码。

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

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

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

sudo nano /etc/hosts

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

140.86.32.38 ic03-mysql-1140.86.35.55 ic02-mysql-1140.86.13.239 ic01-mysql-1

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

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

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

创建访问规则#1

Rule name: local_mysql_ic_access Description: Allow local InnoDB cluster communication Source: <custom> 10.196.0.0/16 Destination: mysql_MASTER Destination Port(s): 3306, 13306

创建访问规则#2

Rule name: local_mysql_ic_access2 Description: Allow local InnoDB cluster communication Source: <custom> 10.196.0.0/16 Destination: mysql_MASTER Destination Port(s): 13306

创建访问规则#3

Rule name: mysql_p2admin_x Description: Permit public access to MySQL X Protocol Port Source: PUBLIC-INTERNET Destination: mysql_MASTER Destination Port(s): 33060

启用访问规则以进行公共3306访问

Rule Name: ora_p2admin_mysql

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

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

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

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

ssh opc@ic01-mysql-1

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

安装Python 2.7

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

sudo wget -O /etc/yum.repos.d/public-yum-ol6.repo http://yum.oracle.com/public-yum-ol6.repo

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

sudo yum install yum-utils

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

sudo yum-config-manager --enable ol6_software_collections

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

sudo yum install scl-utils python27

现在,启用使用Python 2.7:

scl enable python27 -- bash

安装MySQL Shell

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

sudo rpm -Uvh https://dev.mysql.com/get/mysql57-community-release-el6-10.noarch.rpm

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

sudo yum install mysql-shell

准备InnoDB群集使用的MySQL实例

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

sudo su - oracle scl enable python27 -- mysqlsh

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

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

mysql-js> \sqlmysql-sql> SET validate_password_policy=0;mysql-sql> \js

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

mysql-js> dba.configureLocalInstance();

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

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

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

mysql-js>\q然后使用“oracle”用户运行以下命令来停止MySQL Server实例:su oracle -c 'mysqladmin shutdown'

然后再次启动MySQL服务器:su oracle -c 'cd $MYSQL_HOME && bin/mysqld_safe &'一旦服务再次运行,启动MySQL Shell,指定应启用Python 2.7:scl enable python27 -- mysqlsh然后运行以下命令来验证主机是否准备好进行集群使用:mysql-js> dba.checkInstanceConfiguration('root@localhost:3306');

创建InnoDB集群

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

$ mysqlsh root@ic01-mysql-1:3306

请记住配置本地/ etc / hosts文件,以便能够使用远程连接的短主机名而不是IP地址现在,创建一个经典会话到主机,输入root的密码时出现提示:mysql-js> shell.connect('root@ic01-mysql-1:3306');

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

mysql-js> var cluster = dba.createCluster('myCluster', {ipWhitelist:'10.196.0.0/16,127.0.0.1/8'});

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

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

mysql-js> cluster.status();

将实例添加到InnoDB集群

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

mysql-js> cluster.addInstance('root@ic02-mysql-1:3306', {ipWhitelist:'10.196.0.0/16,127.0.0.1/8

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

mysql-js> cluster.status();

然后添加第三个实例:

mysql-js> cluster.addInstance('root@ic03-mysql-1:3306', {ipWhitelist:'10.196.0.0/16,127.0.0.1/8'});

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

mysql-js> cluster.status();

保持集群配置

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

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

mysql-js> dba.configureLocalInstance();

配置MySQL路由器

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

windows:

mysqlrouter --bootstrap root@ic01-mysql-1:3306 -d %HOMEPATH%\myrouter

Linux:

mysqlrouter --bootstrap root@ic01-mysql-1:3306 -d myrouter

启动MySQL路由器

Windows:

start /B mysqlrouter -c %HOMEPATH%\myrouter\mysqlrouter.conf

linux:(假设myrouter目录在主路径上)

myrouter/start.sh

测试InnoDB集群

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

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

mysqlsh root@localhost:6446

然后使用以下函数获取集群句柄:

mysql-js> var cluster = dba.getCluster();然后显示集群的状态:mysql-js> cluster.status();

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

su oracle -c 'mysqladmin shutdown'

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

mysql-js> cluster.status();将看到一条消息,指出在查询期间与MySQL的连接已丢失。要重新连接,请运行以下命令:mysql-js> shell.connect('root@localhost:6446');然后执行该功能以再次验证集群状态:mysql-js> cluster.status();

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

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

cd $MYSQL_HOME; bin/mysqld_safe &

再次检查集群状态:

mysql-js> cluster.status();

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

结论

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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-05-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数据和云 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档