暂无图片
暂无图片
2
暂无图片
暂无图片
暂无图片

如何在 OCI 中为 MySQL HeatWave 设置高可用性和复制

原创 Ellison 2022-07-19
582

高可用性和复制对于任何生产环境都是必须的,这样才能在发生故障时以最小的中断来建立备份过程。在本文中,我将解释如何在 OCI 上为 MySQL HeatWave 配置此架构。

目标将是具有以下架构,每个 VCN 中有两个不同的虚拟云网络 (VCN) 和一个 MySQL HeatWave 实例。在下面的示例设置中,我将在法兰克福 (FRA) 数据中心(区域)中使用我自己的租户。MySQL HeatWave 高可用性架构

因此,设置包含跨两个不同 VCN 的冗余,我们为两个 VCN 使用相同的租户,复制流量通过 VCN 对等发送。

重要提示:确保两个 VCN 之间没有重叠的 CIDR。

我已经创建了两个 VCN:

  • 从 VCN1 10.3.0.0/16
  • 从 VCN2 10.4.0.0/16

 

我还在上面的每个 VCN 中创建了一个计算实例来测试连接性。

免责声明:

  • 本指南不会涵盖 Oracle 云或 MySQL 数据库服务的基础知识。
  • 本指南不会涵盖所需的任何特定 IAM 策略设置,请在此处查看更多信息。

 

设置网络对等互连和 MySQL 复制的分步指南

观看本文底部的视频,查看所有这些步骤的演示。

 

1) 在每个 VCN 中创建 LPG

1.1)在VCN1中创建LGP

  • 转到“网络”>“虚拟云网络”
  • 选择 VCN“VCN1”
  • 在左侧“资源”菜单中选择“本地对等网关”
  • 按“创建本地对等网关”并指定名称,让我们使用“LPG-VNC1”

 

1.2) 在VCN2中创建LGP

  • 转到“网络”>“虚拟云网络”
  • 选择 VCN“VCN2”
  • 在左侧“资源”菜单中选择“本地对等网关”
  • 按“创建本地对等网关”并指定名称,让我们使用“LPG-VNC2”


2)在两个VCN之间建立连接

本地对等

 

意识到:

  • 根据 IAM 策略以及您是否使用相同的租赁,该过程可能会有所不同。
  • 如果您使用 2 个不同的租约进行设置,则需要来自对等本地对等网关 (LPG) 的 OCID。
  • 通常,您还可以从请求者建立连接,在我的租赁政策中为请求者/接受者设置了有关 IAM 政策的更多详细信息

 

让我们从 VNC2 建立连接。

  • 转到“网络”>“虚拟云网络” 
  • 选择 VCN“VCN2”
  • 在左侧菜单中选择“本地对等网关”
  • 现在,在您的液化石油气“LPG-VCN2”右侧,单击“操作”菜单(三个点),然后单击“建立对等连接”。
  • 然后指定要与之对等的 LPG:
    • 选择“浏览下方”并从提供的列表中选择“VCN1”和“LPG-VCN1”。
  • 然后点击“建立对等连接” 


一段时间后,您应该会看到“Peering Status”变为“Peered”,这意味着两个网络已连接。

 

3) 更新路由和防火墙

接下来,我们需要更新安全列表以允许来自彼此网络的流量,并为本地 VCN 添加路由条目。

 

3.1)为VCN1添加路由规则

  • 转到:“网络”>“虚拟云网络”并选择 VCN1
  • 在“资源”下单击“路由表”,然后单击“VCN1 的默认路由表”
  • 单击“添加路由规则”并添加如下条目: 
    • 选择“目标类型”>“本地对等网关” 
    • 目标 CIDR 块“10.4.0.0/16”(此 CIDR 用于 VCN2)
    • 选择“目标本地对等网关...”>选择“LPG-VCN1
    • 添加描述“VCN2 的流量”
  • 按“添加路由规则”  

 

3.2)为VCN2添加路由规则

  • 转到:“网络”>“虚拟云网络”并选择 VCN2
  • 在“资源”下单击“路由表”,然后单击“VCN2 的默认路由表”
  • 单击“添加路由规则”并添加如下条目: 
    • 选择“目标类型”>“本地对等网关” 
    • 目标 CIDR 块“10.3.0.0/16”(这是 VCN1 的 CIDR)
    • 选择“目标本地对等网关...”>选择“LPG-VCN2
  • 按“添加路由规则”

 

3.3) 为 VCN1 添加安全规则

  • 转到:“网络”>“虚拟云网络”,然后单击 VCN1
  • 在“资源”下单击“安全列表”,然后单击“VCN1 的默认安全列表”
  • 单击“添加入口规则”并添加条目以允许来自 VCN2 的 ping:
    • 源 CIDR:10.4.0.0/16
    • IP 协议:ICMP
    • 说明:来自 VCN2 的 Ping    
  • 按“添加入口规则”
  • 为 MySQL 流量添加另一个规则:
    • 源 CIDR:10.0.0.0/8
    • IP协议:TCP
    • 目的端口范围:3306,33060
    • 说明:MySQL 流量
  • 按“添加入口规则”

 

3.4) 为 VCN2 添加安全规则

  • 转到:“网络”>“虚拟云网络”,然后单击 VCN2
  • 在“资源”下单击“安全列表”,然后单击“VCN2 的默认安全列表”
  • 单击“添加入口规则”并添加条目以允许从 VCN1 ping:
    • 源 CIDR:10.3.0.0/16
    • IP 协议:ICMP
    • 说明:来自 VCN1 的 Ping
  • 按“添加入口规则”
  • 为 MySQL 流量添加另一个规则:
    • 源 CIDR:10.0.0.0/8
    • IP协议:TCP
    • 目的端口范围:3306,33060
    • 说明:来自 VCN1 的 MySQL 流量
  • 按“添加入口规则”

 

   3.5) 测试连通性

最简单的方法是在 VCN1 和 VCN2 中创建一个计算实例。然后测试您是否可以相互 ping(我们为 ICMP 流量添加规则)您的计算节点,即从 VNC1 中的计算 ping VCN2 中的计算,反之亦然。

 

4) 创建 MySQL 数据库

创建 MySQL 数据库


4.1)在VCN1中创建MySQL数据库服务:

转到“数据库”>“MySQL”,然后按“创建 MySQL 数据库系统”

  • 将名称设置为“mysqlVCN1”,
  • 选择“独立”,
  • 设置用户名和密码(我使用“admin”和“Welcome1!),
  • 使用 VCN1 和对应的子网,
  • 将其余部分保留为默认值,然后按“创建”

 

几分钟后,您的数据库应该会启动并运行。

 

4.2)在VCN2中创建MySQL数据库服务:

转到“数据库”>“MySQL”,然后按“创建 MySQL 数据库系统”

  • 将名称设置为“mysqlVCN2”,
  • 选择“独立”,
  • 设置用户名和密码(我使用“admin”和“Welcome1!),
  • 使用 VCN2 和对应的子网,
  • 将其余部分保留为默认值,然后按“创建”

 

几分钟后,您的数据库应该会启动并运行。

 

4.3) 测试从同一VCN中的计算实例连接到MySQL(以下是VCN1中的计算)并跨VCN

如果尚未完成,请安装 MySQL 客户端:

sudo yum install mysql


 

获取 VCN1 中 MySQL 数据库服务的私有 IP:

  • “数据库”>“MySQL”,然后单击“mysqlVNC1”,在“端点”>“私有 IP 地址”部分下

 

连接:

mysql -uadmin -pWelcome1! -h<private IP of mysql from above>


获取 VCN2 中 MySQL 数据库服务的私有 IP:

  • “数据库”>“MySQL”,然后单击“mysqlVNC2”,在“端点”>“私有 IP 地址”部分下

 

连接:

mysql -uadmin -pWelcome1! -h<private IP of mysql from above>


4.4)从VCN1中的计算将一些测试数据插入VCN1中的MySQL数据库服务(源):

获取 VCN1 中 MySQL 数据库服务的私有 IP:

  • “数据库”>“MySQL”,然后单击“mysqlVNC1”,在“端点”>“私有 IP 地址”部分下

 

连接:

mysql -uadmin -pWelcome1! -h<private IP of mysql from above>

 

插入一些虚拟数据:

create database ted;
use ted;
create table t (i int primary key, ts timestamp);
insert into ted.t values (1,now());
insert into ted.t values (2,now());
insert into ted.t values (3,now());
select * from ted.t;


 

5)配置并开始复制

5.1) 在 VCN1 的 MySQL HeatWave 实例上创建复制用户

这将用于从 VCN2 中的 MySQL HeatWave 实例配置和启动复制 Chanel。

  • 登录到 VCN1 上的计算节点。
  • 连接到 VCN1 中的 MySQL HeatWave:
    • 在 VCN1 中获取 MySQL HeatWave 的私有 IP:“数据库”>“MySQL”,然后单击“端点”>“私有 IP 地址”部分下的“mysqlVNC1”
    • 连接:

mysql -uadmin -pWelcome1!-h<上面的mysql的私有IP>

 

  • 创建复制用户:

mysql> CREATE USER 'repl'@'10.4.%' IDENTIFIED BY 'Welcome1!' REQUIRE SSL;
mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'10.4.%';


 

5.2) 从 VCN1 中的 MySQL HeatWave 向 VCN2 中的 MySQL HW 提供数据

创建文件夹来存储转储文件:

mkdir /home/opc/dump-files


 

从 VCN1 中的计算启动 MySQL Shell(通过键入:sudo yum install mysql-shell 进行安装):

mysqlsh
(Connect to MySQL HeatWave in VCN1)
\connect admin@<private IP of MySQL Database Service in VCN1>
(input password Welcome1!)
(dump all data)
util.dumpInstance("/home/opc/dump-files/20220412", {ocimds:true, threads:8, showProgress:true, compatibility:["force_innodb","strip_definers","strip_restricted_grants","strip_tablespaces"]})
(now connect to MySQL Database Service in VCN2)
\connect admin@<private IP of MySQL HeatWave in VCN2>
(load dump file into MySQL HeatWave instance in VCN2)
util.loadDump("/home/opc/dump-files/20220412",{updateGtidSet:"append", threads:8, waitDumpTimeout:1800})


 

5.3) 在 VCN1 (source) > VCN2 (replica) 中设置 MySQL 的复制,复制通道是从 VCN2 (replica) 设置的

  • 转到“数据库”>“MySQL”并按“mysqlVCN2”
  • 然后在“资源”下选择“频道”并单击“创建频道”
    • 输入名称“ReplicationFromVCN1toVCN2”
    • 在“源连接”下提供 VCN1 中 MySQL 实例的详细信息,将 rest 保留为默认值并按“创建通道”
  •  几分钟后,您应该会看到 Channel 处于“Active”状态
  •  如果您导航到“数据库”>“MySQL”并按“mysqlVCN2”,您还应该在“入站复制通道”部分看到状态

  

5.4) 测试复制设置

在 VCN1 中将一些数据插入到 MySQL 源中,然后在 VCN2 中查看 MySQL。

连接到 VCN1 中的 MySQL 源:

  • 获取 VCN1 中 MySQL 数据库服务的私有 IP:“数据库”>“MySQL”,然后单击“端点”>“私有 IP 地址”部分下的“mysqlVNC1”
  • 连接:

mysql -uadmin -pWelcome1! -h<private IP of mysql from above>


 

然后输入:

use ted;


 

删除下面的“CREATE TABLE”行。保留其他一切。

create table t (i int primary key, ts timestamp);
insert into ted.t values (4,now());
insert into ted.t values (5,now());
select * from ted.t;


 

连接到 VCN2 中的 MySQL 副本:

  • 在 VCN2 中获取 MySQL 数据库服务的私有 IP:“数据库”>“MySQL”,然后单击“端点”>“私有 IP 地址”部分下的“mysqlVNC2”
  • 连接:

mysql -uadmin -pWelcome1! -h<private IP of mysql from above>


 

然后输入:

mysql> select * from ted.t;
+---+---------------------+
| i | ts                  |
+---+---------------------+
| 1 | 2022-03-31 15:40:34 |
| 2 | 2022-03-31 15:40:34 |
| 3 | 2022-03-31 15:40:34 |
+---+---------------------+

 


将上面的选择替换为:

mysql> select * from ted.t;
+---+---------------------+
| i | ts                  |
+---+---------------------+
| 1 | 2022-03-31 15:40:34 |
| 2 | 2022-03-31 15:40:34 |
| 3 | 2022-03-31 15:40:34 |
| 4 | 2022-03-31 16:37:57 |
| 5 | 2022-03-31 16:38:57 |
+---+---------------------+


 

所以,一切都完成了,复制已经启动并运行,下面是我们已经完成的设置!

MySQL HeatWave 的高可用性和复制架构

 


特德温马克

                                MySQL 解决方案架构师 EMEA

                          Ted Wennmark 是 Oracle 的 MySQL EMEA 小组的 MySQL 解决方案架构师,他的日常职责是帮助 EMEA 各地的客户构建基于 MySQL 的安全、可扩展和高度可用的解决方案。Ted 还是 MySQL                            NDB Cluster 专家团队的领导者,该团队使用 MySQL NDB 分布式内存数据库帮助全球客户构建可扩展且高度可用的解决方案。在加入甲骨文之前,Ted 曾担任软件工程师和架构师,专注于构建可                            扩展和高性能的系统,此外,Ted 还担任 MySQL/Sun/Oracle 的顾问,自 2005 年起为北欧地区的客户提供支持。



原文作者:特德温马克

原文地址:https://blogs.oracle.com/mysql/post/how-to-setup-high-availability-and-replication-inside-oci-for-mysql-heatwave

原文标题:How to Setup High Availability and Replication inside OCI for MySQL HeatWave

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论