我是靠谱客的博主 从容嚓茶,最近开发中收集的这篇文章主要介绍mysql 创建 innodb,Mysql shell建立innodb cluster,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

innodb cluster

安装包

288cd21cafb5ebb31628c18a5fc9425e.png

%E6%88%AA%E5%B1%8F2020-08-04%20%E4%B8%8B%E5%8D%884.10.31.png

前提条件

在安装InnoDB Cluster的生产部署之前,请确保要使用的服务器实例满足以下要求:

必须是innodb的表才能够使用组复制写入。

必须启动performance_schema。

MySQL Shell用于配置要在InnoDB Cluster中使用的服务器的配置脚本需要访问Python。MySQL cluster的要求是python版本为2.7及以上。

InnoDB Cluster示例必须拥有唯一的server id。

安装方法

对于沙盒部署,将InnoDB Cluster的组件安装到一台计算机上。沙箱部署仅在一台计算机上本地进行,因此安装仅需在本地计算机上完成一次。

对于生产部署,将组件安装到要添加到群集的每台计算机上。生产部署使用多个运行MySQL服务器实例的远程主机,因此您需要使用诸如SSH或Windows远程桌面之类的工具连接到每台计算机,以执行诸如安装组件之类的任务。

使用以下文档下载和安装组件:

MySQL Shell-请参阅 安装MySQL Shell 。

MySQL路由器-请参阅 安装MySQL路由器 。

useradd -r -g mysql -s /bin/false mysql

cd /usr/local

tar zxvf mysql-8.0.21-el7-x86_64.tar.gz

ln -s mysql-8.0.21-el7-x86_64 mysql

yum localinstall mysql-shell-8.0.21-1.el7.x86_64.rpm

rpm -i mysql-router-community-8.0.21-1.el7.x86_64.rpm

mysql shell

MySQL Shell包含添加dba全局变量的AdminAPI,该 全局变量提供了用于管理沙箱实例的功能。在clusterAdmin属于集群的所有实例上,用户名和密码必须相同。对于沙盒部署,root用户名和密码在所有实例上都必须相同。

MySQL Shell启动时,默认情况下处于JavaScript模式。通过发出

jsJavaScript模式

pyPython模式

sqlSQL模式来切换模式

在JavaScript和Python模式下,不需要使用分号终止命令。

通过发出js命令确保处于JavaScript模式:

748c49ee9203846561049749c9a33a82.png

%E6%88%AA%E5%B1%8F2020-08-04%20%E4%B8%8B%E5%8D%884.47.32.png

持久化设置

用于群集及其服务器实例的AdminAPI命令会修改实例的配置。根据MySQL Shell连接到实例的方式以及实例上安装的MySQL版本,这些配置更改可以自动保存到实例中。将实例的设置持久化可确保实例重新启动后保留配置更改。

这对于可靠地使用群集非常重要,例如,如果设置未保留,则重新添加后已添加到群集的实例将不会重新加入群集,因为配置更改会丢失。

执行以下操作后,需要进行永久更改:

dba.configureInstance()

dba.createCluster()

Cluster.addInstance()

Cluster.removeInstance()

Cluster.rejoinInstance()

满足以下要求的实例支持自动持久配置更改:

该实例运行的是MySQL 8.0.11或更高版本

persisted_globals_load设定为ON

实例未使用—no-defaults选项 启动

在支持自动保留配置更改的本地实例上,配置更改将保留到实例的 mysqld-auto.cnf文件中,并且配置更改不需要任何其他步骤。在不支持自动持久保存配置更改的本地实例上,需要在本地进行更改,请参阅 配置实例 。

%E6%88%AA%E5%B1%8F2020-08-04%20%E4%B8%8B%E5%8D%886.00.48.png

084afc39af3a9ea98933efbdc18f3455.png

沙箱部署

本教程展示了如何使用MySQL Shell创建由三个MySQL服务器实例组成的InnoDB集群。它包括以下步骤:

1.创建沙箱实例

2.创建沙箱innodb集群

3.将实例添加到innodb集群

4.保留沙箱配置

1.创建沙箱实例

创建一个3310的实例:

MySQL JS > dba.deploySandboxInstance(3310)

输入密码后,会自动启动3310端口的MySQL服务:

d73526175ad051ac7fe80ae2d3ed58fd.png

%E6%88%AA%E5%B1%8F2020-08-04%20%E4%B8%8B%E5%8D%884.53.27.png

每个沙箱实例都使用root用户和密码。在生产中不建议这样做。

启动另外两个实例,对应端口为3320、3330

MySQL JS > dba.deploySandboxInstance(3320)

MySQL JS > dba.deploySandboxInstance(3330)

此时,文件系统,沙箱的位置在/root/mysql-sandboxes下:

78b041db9f4857cab679c14ab00ce3c1.png

%E6%88%AA%E5%B1%8F2020-08-04%20%E4%B8%8B%E5%8D%885.15.41.png

如果想修改沙箱目录的地址,可以使用mysql-js> shell.options.sandboxDir='/home/user/sandbox1'所有后续与沙盒相关的操作都针对处的实例执行 /home/user/sandbox1。

2.创建沙箱innodb集群

源实例(seed MySQL Server instance)包含要复制到其他实例的数据。沙箱也可以使用MySQL Clone,请参见 第21.2.5节“在InnoDB Cluster中使用MySQL Clone” 。在此示例中,沙箱实例为空白,因此我们可以选择任何实例。

连接3310实例:

MySQL JS > connect root@localhost:3310或MySQL JS > shell.connect('root@localhost:3310')

f74b575f6a27c74d1ebe7f5a9ac42ba5.png

%E6%88%AA%E5%B1%8F2020-08-04%20%E4%B8%8B%E5%8D%885.24.00.png

AdminAPI可以写入本地实例的选项文件。这与生产部署不同,在生产部署中,需要先连接到远程实例并在实例上本地运行MySQL Shell应用程序,然后AdminAPI才能写入实例的选项文件。

使用dba.createCluster()方法以当前连接的实例作为源,创建InnoDB集群:

MySQL localhost:3310 ssl JS > var cluster = dba.createCluster('testCluster')

ff6698fcde2084f9329282ea2ab53078.png

%E6%88%AA%E5%B1%8F2020-08-04%20%E4%B8%8B%E5%8D%885.34.07.png

createCluster()方法将InnoDB Cluster元数据部署到所选实例,并将您当前连接的实例添加为源实例。该createCluster()方法返回创建的集群,在上面的示例中,该集群被分配给cluster变量。传递给createCluster() 方法的参数是为此InnoDB Cluster赋名,叫做testCluster。

从图中可以看到,innodb cluster至少需要3个节点。

3.将实例添加到innodb集群

向InnoDB集群添加更多实例。源实例执行的所有事务都会在添加时由每个辅助实例重新执行。这里使用先前在端口3320和3330创建的沙盒实例。

此示例中的源实例是最近创建的,因此几乎为空。几乎没有数据需要从源实例(seed instance)复制到辅助实例(secondary instances)。在生产环境中,源实例上有一个现有数据库,则可以使用MySQL Enterprise Backup之类的工具来确保在复制开始之前,辅助数据库具有匹配的数据。这样可以避免在将数据从主数据库复制到辅助数据库时出现长时间延迟的可能性。

将第二个实例添加进innodb集群:

MySQL localhost:3310 ssl JS > cluster.addInstance('root@localhost:3320')

216f4775cd19460ee0b7505671831cae.png

%E6%88%AA%E5%B1%8F2020-08-04%20%E4%B8%8B%E5%8D%885.44.16.png

9211ee87d085154d58d7890042e1bc58.png

%E6%88%AA%E5%B1%8F2020-08-04%20%E4%B8%8B%E5%8D%885.44.46.png

提示输入root用户的密码。从源实例中恢复到指定的实例。换句话说,将来自源实例的事务复制到加入集群的实例。

以相同的方式添加第三个实例:

MySQL localhost:3310 ssl JS > cluster.addInstance('root@localhost:3330')

至此,已经创建了具有三个实例的集群:一个主实例和两个辅助实例。

4.保留沙箱配置

将沙箱实例添加到集群后,必须将InnoDB Cluster所需的配置持久化到该实例的每个选项文件中。进行方式取决于实例是否自动支持持久配置更改,请参考我在mysql shell部分写的“持久化设置”的内容。

检查集群是否已创建cluster.status()

33b729a6f1de0bb46c0198bd584d09db.png

%E6%88%AA%E5%B1%8F2020-08-04%20%E4%B8%8B%E5%8D%886.03.37.png

参考网址:

https://dev.mysql.com/doc/refman/8.0/en/mysql-innodb-cluster-sandbox-deployment.html

最后

以上就是从容嚓茶为你收集整理的mysql 创建 innodb,Mysql shell建立innodb cluster的全部内容,希望文章能够帮你解决mysql 创建 innodb,Mysql shell建立innodb cluster所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(32)

评论列表共有 0 条评论

立即
投稿
返回
顶部