玩转 MySQL Shell 沙盒实例

news2025/1/19 23:28:26

什么是沙盒实例?

沙盒实例仅适用于出于测试目的在本地计算机上部署和运行,可以与 InnoDB Cluster 、 InnoDB ClusterSet 和 InnoDB ReplicaSet 一起工作。

如何使用部署沙盒的 API 函数?

语法
dba.deploySandboxInstance(port[, options])
解释
  • port:新实例将侦听连接的端口,必须参数。
  • options:包含影响新部署实例的选项的字典,可选参数。

支持以下选项:

  • sandboxDir:将部署新实例的路径。
  • allowRootFrom :配置root用户可以从哪个主机连接。默认为root@%
  • ignoreSslError:在沙盒实例上配置安全连接。当ignoreSslErrortrue(这是默认值)时,如果无法提供 SSL 支持并且部署服务器实例时没有 SSL 支持,则在操作期间不会发出错误。当ignoreSslError设置为false时,沙盒实例将部署 SSL 支持,如果无法配置 SSL 支持,将发出错误。
  • mysqldOptions:在沙盒实例上配置其他选项。默认为空字符串,并接受指定选项和值的字符串列表。例如mysqldOptions: ["lower_case_table_names=1", "report_host="10.1.2.3"]} 。指定的选项将写入沙盒实例的选项文件。
  • portX:配置用于 X 协议 连接的端口。默认值通过将端口值乘以 10 来计算。该值是介于 1024 和 65535 之间的整数。
  • password:新实例上的 MySQL root 用户的密码。

牛刀小试:部署一个沙盒实例

执行 mysqlsh 打开 MySQL Shell 交互模式:

[root@natnet-source ~]$ mysqlsh
MySQL Shell 8.0.31

Copyright (c) 2016, 2022, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its affiliates.
Other names may be trademarks of their respective owners.

Type '\help' or '\?' for help; '\quit' to exit.

执行dba.deploySandboxInstance(3310)在本地部署一个使用端口 3310 的 MySQL 实例。

 MySQL  JS > dba.deploySandboxInstance(3310)
A new MySQL sandbox instance will be created on this host in 
/root/mysql-sandboxes/3310

Warning: Sandbox instances are only suitable for deploying and 
running on your local machine for testing purposes and are not 
accessible from external networks.

Please enter a MySQL root password for the new instance: ***********

Deploying new MySQL instance...

Instance localhost:3310 successfully deployed and started.
Use shell.connect('root@localhost:3310') to connect to the instance.

 MySQL  JS >

部署一个 InnoDB Cluster

1. 先创建三个新实例

此处,我复用了上面创建的 MySQL 沙盒实例 3310

然后,重复部署使用端口 3310 的 MySQL 实例的操作,再部署两个分别使用端口 33203330 的 MySQL 实例。

 MySQL  JS > dba.deploySandboxInstance(3320);
A new MySQL sandbox instance will be created on this host in 
/root/mysql-sandboxes/3320

Warning: Sandbox instances are only suitable for deploying and 
running on your local machine for testing purposes and are not 
accessible from external networks.

Please enter a MySQL root password for the new instance: ***********

Deploying new MySQL instance...

Instance localhost:3320 successfully deployed and started.
Use shell.connect('root@localhost:3320') to connect to the instance.

 MySQL  JS > dba.deploySandboxInstance(3330);
A new MySQL sandbox instance will be created on this host in 
/root/mysql-sandboxes/3330

Warning: Sandbox instances are only suitable for deploying and 
running on your local machine for testing purposes and are not 
accessible from external networks.

Please enter a MySQL root password for the new instance: ***********

Deploying new MySQL instance...

Instance localhost:3330 successfully deployed and started.
Use shell.connect('root@localhost:3330') to connect to the instance.

2. 创建集群(InnoDB Cluster)实例

2.1 连接到 MySQL 沙盒实例 3310 ,以它作为将要创建的集群的主实例。

mysql-js> shell.connect('root@localhost:3310')

在这里插入图片描述

2.2 创建集群实例

创建集群实例 sandBox_1 ,并赋值给变量cluster

MySQL  localhost:3310 ssl  JS > cluster=dba.createCluster('sandBox_1');

在这里插入图片描述

3. 查看集群状态

 MySQL  localhost:3310 ssl  JS > cluster.status()

在这里插入图片描述

4. 向集群中加入其他两个实例

此处采用克隆的恢复方式将其他两个实例加入到集群实例 sandBox_1 内。

 MySQL  localhost:3310 ssl  JS > cluster.addInstance('root@localhost:3320',{recoveryMethod: 'Clone'})
 MySQL  localhost:3310 ssl  JS > cluster.addInstance('root@localhost:3330',{recoveryMethod: 'Clone'})

在这里插入图片描述
在这里插入图片描述

5. 再次查看集群状态

 MySQL  localhost:3310 ssl  JS > cluster.status()

显示状态如下即表示使用沙盒实例创建 InnoDB Cluster 成功!
在这里插入图片描述

引导 MySQL Router

指定/lib/mysqlrouter为 MySQL Router 的存储目录。

[root@natnet-source mysqlrouter]$ mysqlrouter --bootstrap root@localhost:3310 -d /lib/mysqlrouter --user=mysqlrouter --force
[root@natnet-source mysqlrouter]$ /lib/mysqlrouter/start.sh 
PID 15524 written to '/usr/lib/mysqlrouter/mysqlrouter.pid'
stopping to log to the console. Continuing to log to filelog

[root@natnet-source mysqlrouter]$ ps -ef|grep mysqlrouter
root     15522     1  0 17:10 pts/2    00:00:00 sudo ROUTER_PID=/usr/lib/mysqlrouter/mysqlrouter.pid /usr/bin/mysqlrouter -c /usr/lib/mysqlrouter/mysqlrouter.conf --user=mysqlrouter
mysqlro+ 15524 15522  5 17:10 pts/2    00:00:00 /usr/bin/mysqlrouter -c /usr/lib/mysqlrouter/mysqlrouter.conf --user=mysqlrouter
root     15550 14468  0 17:10 pts/2    00:00:00 grep --color=auto mysqlrouter

查看 MySQL Router

[root@natnet-source mysqlrouter]$ grep -B2 port /lib/mysqlrouter/mysqlrouter.conf 

在这里插入图片描述

cluster.listRouters()

在这里插入图片描述

测试 MySQL Router 配置

测试路由器的各个端口( 6446 ~ 6449 )。

[root@natnet-source ~]$ mysqlsh --sql root@localhost:6446 -e 'select @@port;'
@@port
3310
[root@natnet-source ~]$ mysqlsh --sql root@localhost:6447 -e 'select @@port;'
@@port
3330
[root@natnet-source ~]$ mysqlsh --sql root@localhost:6447 -e 'select @@port;'
@@port
3330
[root@natnet-source ~]$ mysqlsh --sql root@localhost:6448 -e 'select @@port;'
@@port
3310
[root@natnet-source ~]$ mysqlsh --sql root@localhost:6449 -e 'select @@port;'
@@port
3320
[root@natnet-source ~]$ mysqlsh --sql root@localhost:6449 -e 'select @@port;'
@@port
3330

这里不知道为什么在使用 Classic MySQL 协议6447 时总是连接到 3330 实例,按理说应该时轮询的,默认使用的是round-robin-with-fallback 。而使用 MySQL X 协议 的只读端口 6649 就可以轮询。

然后使用dba.killSandboxInstance()函数来关闭 MySQL Server 实例,模拟实例宕机故障,测试高可用性、容错能力和自动路由切换功能。

 MySQL  localhost:3310 ssl  JS > dba.killSandboxInstance(3310)

Killing MySQL instance...

Instance localhost:3310 successfully killed.

 MySQL  localhost:3310 ssl  JS > shell.connect('root@localhost:3320')
Creating a session to 'root@localhost:3320'
Fetching schema names for auto-completion... Press ^C to stop.
Closing old connection...
Your MySQL connection id is 760
Server version: 8.0.31 MySQL Community Server - GPL
No default schema selected; type \use <schema> to set one.
<ClassicSession:root@localhost:3320>
 MySQL  localhost:3320 ssl  JS > cluster=dba.getCluster()
<Cluster:sandBox_1>
 MySQL  localhost:3320 ssl  JS > cluster.status()

在这里插入图片描述

可见,3320 实例成了新的主实例。

执行 SQL 查看 6646 端口会路由到哪个实例。

[root@natnet-source mysqlrouter]$ mysqlsh --sql root@localhost:6446 -e 'select @@port;'
@@port
3320

可见,路由进行了自动切换到新主。

其他

使用沙盒实例部署 InnoDB ClusterSet 、InnoDB ReplicaSet 请参阅我之前写的生产环境部署 InnoDB ClusterSet 、InnoDB ReplicaSet 文章,并结合本文,即可成功部署。相信聪明的你,一定能玩明白!

更多有关 MySQL Shell 沙盒实例的信息,请参阅 6.8 AdminAPI MySQL 沙盒 。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/161509.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Mybatis学习笔记(一)

什么是框架&#xff1f; 它是我们软件开发中的一套解决方案&#xff0c;不同的框架解决的是不同的问题使用框架的好处&#xff1a;框架封装了很多的细节&#xff0c;使开发者可以使用极简的方式实现功能&#xff0c;大大提高开发效率 三层架构 表现层&#xff1a;用于展示数…

慕尼黑工业大学开源含四季的数据集:用于自动驾驶的视觉长期定位

以下内容来自[从零开始机器人SLAM知识星球] 每日更新内容 点击领取学习资料 → 机器人SLAM学习资料大礼包 #论文# #开源数据集# 4Seasons: Benchmarking Visual SLAM and Long-Term Localization for Autonomous Driving in Challenging Conditions 地址&#xff1a;https:/…

LeetCode[295]数据流的中位数

难度:困难题目&#xff1a;中位数是有序整数列表中的中间值。如果列表的大小是偶数&#xff0c;则没有中间值&#xff0c;中位数是两个中间值的平均值。例如 arr [2,3,4] 的中位数是 3 。例如 arr [2,3] 的中位数是 (2 3) / 2 2.5 。描述&#xff1a;实现 MedianFinder 类:…

工信部及多地政府联合阿里健康在全国展开防疫保供专项行动

为了切实服务好百姓的购药需求&#xff0c;在工信部和各地政府的指导下&#xff0c;12月疫情政策调整以来&#xff0c;阿里健康已先后在全国20多个省市及地区配合药品物资精准投放工作&#xff0c;为各地居民重点供退热药、N95口罩等紧缺药品和物资&#xff0c;尽全力打好药品保…

Android系统定制开发过程快速查找定位分析代码的方法

推荐阅读 ​Android系统开发过程快速查找定位代码的方法 Android10以上系统定制Root权限(隐藏Root权限) 商务合作 2023年招聘 2023年逆向分析资料汇总 Android系统开发过程&#xff0c;经常需要进行文件查找、代码查找&#xff0c;常用find和grep查找命令 1.find命令 根据文…

短短六年时间冲到二奢品类第一,妃鱼如何做到的?

随着消费需求不断增长&#xff0c;二手奢侈品市场近五年来快速向规模化、平台化发展&#xff0c;妃鱼、红布林、胖虎等二奢电商品牌迅速崛起&#xff0c;成为风头劲胜的网红。国泰君安研究报告显示&#xff0c;中国闲置高端消费品零售市场规模已从2016年162亿元增长至2020年的5…

Vue js混淆加密 webpack-obfuscator

公司要求加密混淆js 之前 是用的glifyjs-webpack-plugin ,感觉不行。 然后使用了webpack-obfuscator 非常nice~&#xff0c;除了打包出来体积会有点大&#xff0c;浏览的网页会变慢&#xff0c;选择最低是就还好&#xff0c; 有多个条件属性可以选择&#xff0c; 可以选择高度混…

networkx学习(三) 随机网络

networkx学习(三) 随机网络 1.规则网络 2.随机网络的生成算法 第一种:G(N,L) import random import itertoolsdef GNL(N, L):G = nx.Graph()G.

硬盘数据如何恢复?电脑硬盘资料恢复,方法就是这么简单!

硬盘作为重要的存储设备&#xff0c;里面保存的数据是很重要的。日常生活和工作中&#xff0c;硬盘发生数据丢失也是很常见的事情&#xff0c;比如&#xff1a;误删重要文件并清空了回收站、文件打不开提示格式化、分区变成RAW格式、电脑重新分区等。各种数据丢失原因数不胜数。…

卷积神经网络-cnn和lstm

文章目录1. 卷积神经网络1.1 卷积神经网络的基础1.2 卷积神经网络和传统的网络的区别1.3 卷积的作用1.3.1 图像颜色通道1.3.2 卷积的次数1.4 卷积层涉及的参数1.4.1 滑动窗口的步长1.4.2 卷积核的大小1.4.3 边缘填充1.4.4 卷积核的个数1.4.5 卷积参数共享1.5 池化层1.6 整体网络…

如何在Microsoft Word设置导航窗格以重新排列页面

本文包括使用导航窗格和复制粘贴在Microsoft Word 2019、2016和Office 365中移动页面的说明。 Microsoft Word不会将文档视为单独页面的集合,而是将其视为一个长页面。因此,重新排列Word文档可能会很复杂。在Word中移动页面的一种更简单的方法是使用导航窗格。 注意:要在导…

Vue 3 桌面应用开发(文末附视频)

在正式开始之前&#xff0c;我想先直接“输出”一些背景信息&#xff0c;既能阐明我的观点&#xff0c;也希望可以坚定你学习本小册的决心。 首先&#xff0c;桌面应用开发在未来一定会大放异彩&#xff0c;桌面应用相对于移动应用来说优势非常明显&#xff08;交互区域更大、…

TCP/IP网络编程(3)——地址族与数据序列

文章目录第 3 章 地址族与数据序列3.1 分配给套接字的 IP 地址与端口号3.1.1 网络地址&#xff08;Internet Address&#xff09;3.1.2 网络地址分类与主机地址边界3.1.3 用于区分套接字的端口号3.2 地址信息的表示3.2.1 表示 IPV4 地址的结构体3.2.2 结构体 sockaddr_in 的成员…

王道操作系统笔记(二)———— 进程与线程

文章目录一、进程的概念和特征1.1 进程的概念1.2 进程的组成1.3 进程的特征1.4 进程的状态与转换1.5 进程控制1.6 进程的通信1.6.1 共享存储1.6.2 消息传递1.6.3 管道通信1.7 父进程与子进程二、线程概念和多线程模型2.1 线程的概念2.2 线程的属性2.3 线程的实现方式2.4 多线程…

C#【必备技能篇】DatagridView添加行时,设置行标题单元格的值为行数

文章目录1、DatagridView添加行的代码2、方法一&#xff1a;【每次添加行都重新刷新了全部的行数&#xff0c;不推荐】3、方法二&#xff1a;【只有一个DatagridView时&#xff0c;推荐此方法】4、方法三&#xff1a;【通用方法&#xff0c;多个DatagridView都有这个需求时&…

利用 Burp Suite 进行密码爆破

利用 Burp Suite 进行密码爆破1.Intruder 功能介绍2.攻击类型3.实战4.验证码爆破1.Intruder 功能介绍 使用 BP 工具的 Intruder 模块高度可配置&#xff0c;可以对目标网站进行密码爆破&#xff0c;一般被用于网站的安全渗透测试场景 BP 工具的 Intruder 模块包含几个功能标签…

解决2022.3.1版本中 IDEA中 XML文件屎黄色背景 的方法

问题&#xff1a;在idea打开mybatis的xml映射文件&#xff0c;出现大面积黄色背景提示 1&#xff1a;打开文件&#xff0c;点击设置 2&#xff1a;打开编辑器--> 检查--> SQL 3&#xff1a;受不了&#xff0c;我的是中文&#xff0c;我换成英文继续了 找到 No data sou…

CDH6.3.2 ORC文件格式 Spark引擎查询数组越界异常

组件版本: flink1.13.2 cdh6.3.2 hive2.1.1 问题描述: CDH6.3.2 ORC文件格式 Spark引擎查询数组越界异常 java.io.IOException: java.lang.ArrayIndexOutOfBoundsException: 7 ‘org.apache.orc.impl.ReaderImpl::ReaderImpl.java:385’, org.apache.hadoop.hive.ql.io.orc.Re…

解决OBS录屏模糊问题

相信大家在使用OBS过程中也会遇到录屏模糊的问题&#xff0c;网上有很多配置教程&#xff0c;尝试了视频比特率、提高OBS当中其他的硬件参数。 模糊是要分情况的&#xff0c;如果是静态情况下模糊&#xff0c;就是屏幕不动的时候录制的视频也很模糊&#xff0c;那就是视频的基…

linux中使用KubeSphere和k8s 部署springboot项目

1、创建项目----》按照做的项目名称建 创建一个项目 创建后&#xff0c;如图所示&#xff1a; 2、工作负载---》就是创建服务容器Prod第一步&#xff1a;创建一个工作负载服务-->基本信息第二步&#xff1a;容器组设置 设置容器端口&#xff0c;健康检查&#xff0c;环境…