当前位置:   article > 正文

MySQL8的MIC高可用的实现_mysql8.0 部署一主两从mic

mysql8.0 部署一主两从mic

准备工作

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
  • 3
  • 4

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

systemctl restart mysqld
  • 1

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

create user Famas identified by 'Famas@666';
  • 1
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;
  • 1
GRANT DELETE, INSERT, UPDATE ON mysql.* TO 'Famas'@'%' WITH GRANT OPTION;
  • 1
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;
  • 1
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;
  • 1
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;
  • 1
grant all on *.* to 'Famas'@'%';
  • 1
grant all privileges on *.* to Famas with grant option;
  • 1
FLUSH PRIVILEGES;
  • 1

三、在主服务器上安装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
  • 1

在这里插入图片描述
解压

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

改名(非必须)

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

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

cd ./mysql-shell/bin/
  • 1

然后执行mysqlsh

./mysqlsh
  • 1

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

四、在mysql-shell中搭建集群

用主库信息登录

\c Famas@192.198.46.189:3306
  • 1

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

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

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

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

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

dba.getCluster().status()
  • 1

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

var cluster=dba.getCluster();
  • 1

添加从1

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

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

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

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

cluster.status();
  • 1

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

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

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/709296
推荐阅读
相关标签
  

闽ICP备14008679号