MySQL8的MIC高可用的实现

本文详细描述了如何使用MySQL8.0.23在虚拟机上搭建一个主从集群,包括配置MySQL服务、创建用户和权限、安装mysql-shell并配置集群,以及利用mysql-router进行故障恢复的过程。
摘要由CSDN通过智能技术生成

准备工作

1.准备好三台虚拟机,并且每一台装好MySQL8
2.mysql-shell的安装包,下面用的版本:mysql-shell-8.0.23-linux-glibc2.12-x86-64bit.tar.gz下载链接直达

IP角色
192.168.46.189主,mysql-shell
192.168.46.190从1
192.168.46.191从2

开始实验

一、修改每一台的MySQL的配置文件(/etc/my.cnf),在[mysqld]模块中添加下面内容

内容格式:

server_id= xxx  #每一台的都不一样,要唯一
report_host=当前服务器ip
report_port= XXXX
loose-group_replication_ip_whitelist="ip1,ip2,ip3"

效果:
在这里插入图片描述
从1
在这里插入图片描述
从2
在这里插入图片描述
每一台修改完后,重启所有MySQL服务

systemctl restart mysqld

二、在每一台的MySQL中执行下面的内容(创建用户和授权)

create user Famas identified by 'Famas@666';
GRANT BACKUP_ADMIN, CLONE_ADMIN, CREATE USER, EXECUTE, FILE, PERSIST_RO_VARIABLES_ADMIN, PROCESS, RELOAD, REPLICATION CLIENT, REPLICATION SLAVE, SELECT, SHUTDOWN, SUPER, SYSTEM_VARIABLES_ADMIN ON *.* TO 'Famas'@'%' WITH GRANT OPTION;
GRANT DELETE, INSERT, UPDATE ON mysql.* TO 'Famas'@'%' WITH GRANT OPTION;
GRANT ALTER, ALTER ROUTINE, CREATE, CREATE ROUTINE, CREATE TEMPORARY TABLES, CREATE VIEW, DELETE, DROP, EVENT, EXECUTE, INDEX, INSERT, LOCK TABLES, REFERENCES, SHOW VIEW, TRIGGER, UPDATE ON mysql_innodb_cluster_metadata.* TO 'Famas'@'%' WITH GRANT OPTION;
GRANT ALTER, ALTER ROUTINE, CREATE, CREATE ROUTINE, CREATE TEMPORARY TABLES, CREATE VIEW, DELETE, DROP, EVENT, EXECUTE, INDEX, INSERT, LOCK TABLES, REFERENCES, SHOW VIEW, TRIGGER, UPDATE ON mysql_innodb_cluster_metadata_bkp.* TO 'Famas'@'%' WITH GRANT OPTION;
GRANT ALTER, ALTER ROUTINE, CREATE, CREATE ROUTINE, CREATE TEMPORARY TABLES, CREATE VIEW, DELETE, DROP, EVENT, EXECUTE, INDEX, INSERT, LOCK TABLES, REFERENCES, SHOW VIEW, TRIGGER, UPDATE ON mysql_innodb_cluster_metadata_previous.* TO 'Famas'@'%' WITH GRANT OPTION;
grant all on *.* to 'Famas'@'%';
grant all privileges on *.* to Famas with grant option;
FLUSH PRIVILEGES;

三、在主服务器上安装mysql-shell

上传或者下载mysql-shell的包官网连接,这里我上传到了/usr/src/目录下,然后对mysql-shell包进行解压,并将解压后的目录名改成简单的“mysql-shell”

wget https://downloads.mysql.com/archives/get/p/43/file/mysql-shell-8.0.23-linux-glibc2.12-x86-64bit.tar.gz

在这里插入图片描述
解压

tar -xvf mysql-shell-8.0.23-linux-glibc2.12-x86-64bit.tar.gz

改名(非必须)

mv mysql-shell-8.0.23-linux-glibc2.12-x86-64bit mysql-shell

然后进入解压后的mysql-shell目录下的bin目录下面

cd ./mysql-shell/bin/

然后执行mysqlsh

./mysqlsh

成功后在这里插入图片描述

四、在mysql-shell中搭建集群

用主库信息登录

\c Famas@192.198.46.189:3306

在这里插入图片描述
然后执行下面命令配置集群

dba.configureInstance('Famas@192.168.46.189:3306')
dba.configureInstance('Famas@192.168.46.190:3306')
dba.configureInstance('Famas@192.168.46.191:3306')

eg:
在这里插入图片描述
在这里插入图片描述
创建一个mysqlcluster的集群

var cluster=dba.createCluster('mysqlcluster');

在这里插入图片描述
上一步执行完mysqlcluster集群中只有一个Master()

dba.getCluster().status()

在这里插入图片描述
现在对集群中添加两个实例从1与从2

var cluster=dba.getCluster();

添加从1

cluster.addInstance('Famas@192.168.46.190:3306')

在这里插入图片描述
添加从2

cluster.addInstance('Famas@192.168.46.191:3306')

在这里插入图片描述
实例添加完成后就可以看看集群信息

cluster.status();

在这里插入图片描述
三个节点都有说明这个一主两从集群搭建成功,实验完成,主可读写(R/W),两个从只读(R/O)。自己可以在主库进行数据插入,然后看看从库有没有同步这里不再演示。

五、利用mysql-router进行故障恢复

链接:mysql-router进行故障恢复

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值