MySQL8.0 MIC高可用集群搭建

来源:这里教程网 时间:2026-03-01 11:47:22 作者:

mysql8.0带来的新特性,结合MySQLshell,不需要第三方中间件,自动构建高可用集群。 mysql8.0作为一款新产品,其内置的mysq-innodb-cluster(MIC)高可用集群的技术确实惊艳,结合MySQLshell能够实施集群的快速部署,MySQL-route能够实现灾备快速切换,内置读写分离技术,负载均衡技术。结合但实际效果如何,还需验证。 一,集群部署 1.1 安装环境; 操作系统:Linux,版本:CentOS-7-x86 介质准备:无 环境清理 释放yum进程 [root@bug ~]# ps -ef|grep yum root     22481   1694   5 17 : 23 ?         00 : 00 : 03 /usr/bin/python /usr/share/PackageKit/helpers/yum/yumBackend.py get -updates none root     22591 22507   1 17 : 24 pts/     00 : 00 : 00 grep --color=auto yum [root@bug ~]# kill - 9 22481 查看是否有多余系统,有则卸载

1 2

[root@bug ~]# rpm -qa|grep mairadb [root@bug ~]# rpm -qa|grep mysql

关闭防火墙

1 2 3 4

[root@bug ~]# systemctl status firewalld.service ● firewalld.service - firewalld - dynamic firewall daemon    Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)    Active: inactive (dead)

  关闭selinux,重启系统后生效 [root@bug selinux]# vi /etc/selinux/config SELINUX= disabled [root@bug selinux]# reboot   1.2 安装MySQL8.0

1 2 3

[root@bug ~]# yum install -y wget https: //repo.mysql.com//mysql80-community-release-el7-1.noarch.rpm [root@bug ~]# yum list|grep mysql [root@bug ~]# yum install -y mysql-community-client.x86_64 mysql-router.x86_64 mysql-shell.x86_64

采用YUM源安装方式,总下载量约400M,   1.3自动集群部署 部署节点1

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

[root@bug ~]# mysqlsh    MySQL  JS >  dba.deploySandboxInstance(3310); 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.

第一个节点部署完毕,端口设置为3310,登陆账号为root@localhost,密码  ******   使用本地认证的方式, 登陆数据库实例,进行验证。

1 2 3

[root@bug ~]# mysql -uroot -porange -S /root/mysql-sandboxes/3310/sandboxdata/mysqld.sock mysql: [Warning] Using a password  on  the command line  interface  can be insecure. Welcome to the MySQL monitor.  Commands end with ; or \g.

   同样的方法,部署节点2,节点3。

1 2 3

MySQL  JS >  dba.deploySandboxInstance(3320);   MySQL  JS > dba.deploySandboxInstance(3330);

  1.4创建集群 此实验采用简单的创建本地集群。

1 2 3 4 5 6 7 8 9 10 11 12

MySQL  JS >  \connect root@localhost:3310 Creating a session to  'root@localhost:3310'   *****************************************************  MySQL  localhost:3310 ssl  JS >   var  cluster=dba.createCluster( 'test' ) new  InnoDB cluster will be created  on  instance  'root@localhost:3310' .   *********************************************************   Cluster successfully created. Use Cluster.addInstance() to add MySQL instances. At least 3 instances are needed  for  the cluster to be able to withstand up to one server failure.

 集群系统已经创建成功,最后一行:At least 3 instances are needed for the cluster to be able to withstand up to one server failure.提示需要至少三个实例,才能保证灾备,所以接下来,将节点2,3添加进集群。  

1 2 3 4 5 6 7 8

MySQL  localhost:3310 ssl  JS > cluster.addInstance(  'root@localhost:3320' )   The instance  'root@localhost:3320'  was successfully added to the cluster.      MySQL  localhost:3310 ssl  JS > cluster.addInstance(  'root@localhost:3330' )   The instance  'root@localhost:3330'  was successfully added to the cluster.

查看集群状态

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35

MySQL  localhost:3310 ssl  JS > dba.getCluster().status() {      "clusterName" "test" ,      "defaultReplicaSet" : {          "name" "default" ,          "primary" "localhost:3310" ,          "ssl" "REQUIRED" ,          "status" "OK" ,          "statusText" "Cluster is ONLINE and can tolerate up to ONE failure." ,          "topology" : {              "localhost:3310" : {                  "address" "localhost:3310" ,                  "mode" "R/W" ,                  "readReplicas" : {},                  "role" "HA" ,                  "status" "ONLINE"             },              "localhost:3320" : {                  "address" "localhost:3320" ,                  "mode" "R/O" ,                  "readReplicas" : {},                  "role" "HA" ,                  "status" "ONLINE"             },              "localhost:3330" : {                  "address" "localhost:3330" ,                  "mode" "R/O" ,                  "readReplicas" : {},                  "role" "HA" ,                  "status" "ONLINE"             }         }     },      "groupInformationSourceMember" "mysql://root@localhost:3310" }

   一个简单的包含三个节点的集群已经创建完成。可以完成数据同步,读写分离等功能,比如此刻3310端口的状态是"R/W",同时read与write,3320与3330的状态是"R/O",只读模式。   1.5配置中间件 此时的集群的高可用性还不完整,需要MySQL-router来完成集群与外部的对接,实现自动切换,故障转移等功能。 MySQL-router的作用类似keepalived 类的中间件。当主机发生故障后,自动将应用切换到其他实例。

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23

[root@bug ~]#  mysqlrouter --bootstrap root@localhost:3310 --user=mysqlrouter Please enter MySQL password  for  root: *****   Bootstrapping system MySQL Router instance... Checking  for  old Router accounts Creating account mysql_router2_j05xzi45m81x@ '%' MySQL Router  has now been configured  for  the InnoDB cluster  'test' .   The following connection information can be used to connect to the cluster.   Classic MySQL protocol connections to cluster  'test' : - Read/Write Connections: localhost:6446 - Read/Only Connections: localhost:6447 X protocol connections to cluster  'test' : - Read/Write Connections: localhost:64460 - Read/Only Connections: localhost:64470   Existing configurations backed up to  '/etc/mysqlrouter/mysqlrouter.conf.bak' [root@bug ~]# mysqlrouter& [1] 25602 [root@bug ~]#  ps -ef|grep router mysqlro+ 25602 22507  8 19:35 pts/0    00:00:01 mysqlrouter root     25619 22507  0 19:36 pts/0    00:00:00 grep --color=auto router

   验证MySQL-router安装效果 在MySQL-router默认配置下, 主机端口:6446 从库端口:6447

1 2 3 4 5

[root@bug ~]#  mysql -uroot -h 127.0.0.1 -P 6446 -p Enter password: Welcome to the MySQL monitor.  Commands end with ; or \g. ********************************************************8 mysql>

 证明MySQL-router配置完成可用。    1.6验证集群效果 1,通过router同时登陆三个节点,查看端口号。 2,在节点1构造数据,在节点2,3差看状态,验证数据同步性。 3,节点1(主机)离线,查看集群状态与节点2,节点3状态,验证灾备能力。

相关推荐