20221114mysql-shell部署mysql集群

视频版

https://www.bilibili.com/video/BV1H24y117uh/

1.安装mysql-apt-config并准备基础环境

channel选mysql8, apt update后就能安装 mysql-shell了

获取debian-sys-maint的密码备用

使用/etc/hosts尝试模拟域名或者自行配置DNS

mysqld下的配置增加report_host=mysql1.db,

2.创建账户

2.1.一个InnoDB Cluster server configuration账户用于配置集群的实例

使用dba.configureInstance()创建

2.2.一个或多个InnoDB Cluster administrator账户可以在集群安装后被用来管理服务器实例

在所有节点加入集群后,使用cluster.setupAdminAccount(),这个命令会创建指定的账号并赋予所需的权限,创建这个账号的事务会写入binlog并发送给集群的其他服务器

2.3一个或多个MySQL Router账户可以被MySQL Router用来连接集群

以上每个账户必须在所有InnoDB Cluster节点同时存在, 并使用相同的用户名和相同的密码

mysqlsh进入终端,在三个机器重复这个过程

 

3.检查机器

使用dba.checkInstanceConfiguration(instance) 可以检查节点是否满足 Section 7.1, “InnoDB Cluster Requirements” 提到的前置条件,详见 Checking Instance State

使用dba.configureInstance() 来自动配置节点

连接服务器所用的账户必须有这里要求的权限 Configuring InnoDB Cluster Administrator Accounts Manually

三个机器分别检查自己本地和对方

成功会输出这样的

 

4.创建集群并添加节点

使用\connect 连接主节点

使用dba.createCluster() 使用当前 MySQL Shell 连接的节点作为集群的种子

使用setupAdminAccount广播管理账号,生产环境的话要注意下安全,这里测试没限定网段

使用cluster.addInstance()向当前集群内增加节点,C选择完全量复制,I选择增量复制,默认是全量

使用cluster.status()查看当前集群状态

重复这个过程,添加mysql3

再次查看集群状态,可以看到mysql1是主,mysql2和3是从

使用 cluster.checkInstanceState() 检查集群内节点状态

5.集群测试

5.1.写入测试

连上mysql1,往mysql1里写下数据测试下,在mysql2和3上查看

5.2 灾备测试

我们尝试直接停掉mysql1的服务来模拟主库挂掉,在两外两个机器上查看集群状态,可以看到mysql2自动成为了PRIMARY

向mysql2写入数据测试

到mysql3查看,可以看到数据正常

重新把mysql1启动,在mysql2也就是当前的主节点查看集群,可以看到mysql1自动成为了SECONDARY

到mysql1检查下c1=2也就是宕机期间的数据还在不在,可以发现mysql1重新加入集群后会自动恢复宕机期间的数据

附录:用到的命令

ubuntu安装速度测试

安系统时候在均使用清华源情况下居然发现有错,顺便测下怎么给资源能装的快点

#https://mirrors.tuna.tsinghua.edu.cn

都是40G预分配硬盘

是否联网|核数内存|单个CPU核数*CPU个数|测试结果 虚拟磁盘名

联网|8c1g| 1c*8 不开启VT-x| 反复安装失败  从未见过,可能是CPU内存给少了

联网|8c2g| 1c*8 不开启VT-x| 将近25min,怀疑是CPU给少了 mysql1.vmdk

联网|8c2g| 4c*2 不开启VT-x| 18min,大概10min装完,但是自动升级花了8min mysql1-0.vmdk

断网|8c2g| 4c*2 不开启VT-x| 6min,果然还是断网大法最好,后面都断网装系统好了。这样首次启动联网即可有DHCP下发的IP不影响测试  mysql1-1.vmdk

继续尝试增加核心数看看能否更快

断网|8c2g| 8c*1 不开启VT-x| 5min45s,基本持平,所以CPU数量并不影响这个速度,尝试削减核数  mysql1-2.vmdk

断网|4c2g| 4c*1 不开启VT-x|5min51s,基本持平,所以CPU核数并不影响这个速度,怀疑是单线程,因此试试1c*1 mysql1-3.vmdk

断网|1c2g| 1c*1 不开启VT-x|7min23s,明显下滑,说明不是单线程,至少是2个线程,不然不会这么长时间   mysql1-4.vmdk

断网|2c2g| 2c*1 不开启VT-x|6min22s,回归6min上下了,说明安装的过程确实是2个线程 mysql1-5.vmdk

断网|2c2g| 2c*1 开启VT-x|TODO 有闲心再测 估计不会再快了

参考文档

https://dev.mysql.com/doc/mysql-shell/8.0/en/mysql-shell-install-linux-quick.html

https://dev.mysql.com/doc/mysql-shell/8.0/en/configuring-router-user.html

https://dev.mysql.com/doc/mysql-shell/8.0/en/innodb-cluster-user-accounts.html#admin-api-configuring-users

https://dev.mysql.com/doc/mysql-shell/8.0/en/check-instance-configuration.html

 

https://dev.mysql.com/doc/mysql-shell/8.0/en/creating-user-accounts-for-admin-api.html

0 Comments
Leave a Reply