沙盒实例是一种仅适用于本地计算机上进行测试目的的部署和运行方式,它可以与 InnoDB Cluster、InnoDB ClusterSet 和 InnoDB ReplicaSet 一起工作。要使用部署沙盒的 API 函数,可以使用 `dba.deploySandboxInstance(port[, options])` 方法。其中,`port` 是用于连接到沙盒实例的端口号,`options` 是可选参数,包括 `sandboxDir`、`allowRootFrom`、`root@%`、`ignoreSslError` 和 `mysqldOptions`。
以下是一个部署沙盒实例的示例:
```markdown
1. 执行 `mysqlsh`,打开 MySQL Shell 交互模式。
2. 在 MySQL Shell 中输入以下命令:
```sql
dba.deploySandboxInstance(3310)
```
这将在本地计算机上部署一个沙盒实例,监听端口号为 3310。
以下是重构后的内容:
在MySQL中创建一个Sandbox实例,使用以下命令:
```bash
js > dba.deploySandboxInstance(3310)
```
这将在当前主机的 `/root/mysql-sandboxes/3310` 目录下创建一个新的MySQL沙盒实例。需要注意的是,沙盒实例仅适合在本地机器上部署和运行测试,不可从外部网络访问。请为新实例输入MySQL root密码:***********
接着,部署新的MySQL实例:
```bash
MySQL JS > 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、3320和3330。
```bash
MySQL JS > dba.deploySandboxInstance(3310)
MySQL JS > dba.deploySandboxInstance(3320)
MySQL JS > dba.deploySandboxInstance(3330)
```
然后,按照部署使用端口为3310的MySQL实例的操作,再部署两个分别使用端口为3320和3330的MySQL实例。
```
请根据提供的内容完成内容重构,并保持段落结构:
MySQL JS> dba.deploySandboxInstance(3320);
将在本机上的/root/mysql-sandboxes/3320创建一个新MySQL沙箱实例。
警告:沙箱实例仅适用于在本地机器上部署和测试,且不可从外部网络访问。 请为新实例输入MySQL root密码: ***********
正在部署新实例。..
实例localhost:3320已成功部署并启动。使用shell.connect('root@localhost:3320')连接到该实例。
MySQL JS> dba.deploySandboxInstance(3330);
将在本机上的/root/mysql-sandboxes/3330创建一个新MySQL沙箱实例。
警告:沙箱实例仅适用于在本地机器上部署和测试,且不可从外部网络访问。 请为新实例输入MySQL root密码: ***********
正在部署新实例。..
实例localhost:3330已成功部署并启动。使用shell.connect('root@localhost:3330')连接到该实例。
```
. 创建集群(InnoDB Cluster)实例
2.1 连接到 MySQL 沙盒实例
```javascript
mysql-js> shell.connect('root@localhost:3310')
```
2.2 创建集群实例
```javascript
cluster=dba.createCluster('sandBox_1');
```
3. 查看集群状态
```javascript
cluster.status()
```
4. 向集群中加入其他两个实例
此处采用克隆的恢复方式将其他两个实例加入到集群实例内。
```javascript
cluster.addInstance('root@localhost:3320',{recoveryMethod: 'Clone'})
cluster.addInstance('root@localhost:3330',{recoveryMethod: 'Clone'})
```
5. 再次查看集群状态
```javascript
cluster.status()
```
显示状态如下即表示使用沙盒实例创建 InnoDB Cluster 成功!
以下是重构后的内容:
```
[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
[root@natnet-source mysqlrouter]# grep -B2 port /lib/mysqlrouter/mysqlrouter.conf
cluster.listRouters()
[root@natnet-source mysqlrouter]# test MySQL Router configuration
[root@natnet-source mysqlrouter]# test router ports (6446 ~ 6449)
``
以下是重构后的内容:
```markdown
[root@natnet-source ~]$ mysqlsh --sql root@localhost:6446 -e 'select @@port;' 3310
[root@natnet-source ~]$ mysqlsh --sql root@localhost:6447 -e 'select @@port;' 3330
[root@natnet-source ~]$ mysqlsh --sql root@localhost:6448 -e 'select @@port;' 3310
[root@natnet-source ~]$ mysqlsh --sql root@localhost:6449 -e 'select @@port;' 3320
[root@natnet-source ~]$ mysqlsh --sql root@localhost:6449 -e 'select @@port;' 3330
round-robin-with-fallback
# 关闭 MySQL Server 实例,模拟实例宕机故障,测试高可用性、容错能力和自动路由切换功能。
dba.killSandboxInstance()函数被调用来关闭 MySQL Server 实例。
```
请根据提供的内容完成内容重构,并保持段落结构:
MySQL实例在localhost:3310上运行,使用SSL连接。通过JS命令`dba.killSandboxInstance(3310)`,成功关闭了该实例。然后,通过JS命令`shell.connect('root@localhost:3320')`创建了一个到`root@localhost:3320`的会话。在该会话中,执行`cluster=dba.getCluster()`获取集群信息,发现新主实例为3320。接下来,通过执行`cluster.status()`查看集群状态,确认新主实例已生效。
在生产环境中部署InnoDB ClusterSet和InnoDB ReplicaSet时,可以使用沙盒实例。首先,关闭旧的主实例,然后将新的主实例部署到主机localhost:6446上。通过执行SQL语句`select @@port;`查看6646端口路由到了哪个实例,确认路由已自动切换到新的主实例。其他相关操作可以参考之前的文章。相信聪明的你,一定能顺利完成部署!
有关 MySQL Shell 沙盒实例的更多信息,请参阅 6.8 AdminAPI MySQL 沙盒。