mysql8.0.3集群搭建

下载mysql安装包:

https://dev.mysql.com/downloads/mysql/5.7.html#downloads

准备环境

1、准备三台服务器并设置hosts

192.168.236.143 mysql1
192.168.236.144 mysql2
192.168.236.145 mysql3

2、设置免密登陆

#生成秘钥
ssh-keygen -t rsa
#一直按Enter即可
#将秘钥分别拷贝到另外两个机器
ssh-copy-id -i ~/.ssh/id_rsa.pub 192.168.236.144
ssh-copy-id -i ~/.ssh/id_rsa.pub 192.168.236.145
#测试
ssh 192.168.236.143

3、关闭防火墙

#关闭防火墙
systemctl stop firewalld
#禁用防火墙
systemctl disable firewalld

4、关闭selinux

vi /etc/selinux/config
#设置
SELINUX=disabled

重启服务器

安装mysql

#解压
[root@mysql1 data]# tar -xvf mysql-cluster-community-8.0.34-1.el7.x86_64.rpm-bundle.tar 
mysql-cluster-community-client-8.0.34-1.el7.x86_64.rpm
mysql-cluster-community-client-plugins-8.0.34-1.el7.x86_64.rpm
mysql-cluster-community-common-8.0.34-1.el7.x86_64.rpm
mysql-cluster-community-data-node-8.0.34-1.el7.x86_64.rpm
mysql-cluster-community-debuginfo-8.0.34-1.el7.x86_64.rpm
mysql-cluster-community-devel-8.0.34-1.el7.x86_64.rpm
mysql-cluster-community-embedded-compat-8.0.34-1.el7.x86_64.rpm
mysql-cluster-community-icu-data-files-8.0.34-1.el7.x86_64.rpm
mysql-cluster-community-java-8.0.34-1.el7.x86_64.rpm
mysql-cluster-community-libs-8.0.34-1.el7.x86_64.rpm
mysql-cluster-community-libs-compat-8.0.34-1.el7.x86_64.rpm
mysql-cluster-community-management-server-8.0.34-1.el7.x86_64.rpm
mysql-cluster-community-ndbclient-8.0.34-1.el7.x86_64.rpm
mysql-cluster-community-ndbclient-devel-8.0.34-1.el7.x86_64.rpm
mysql-cluster-community-nodejs-8.0.34-1.el7.x86_64.rpm
mysql-cluster-community-server-8.0.34-1.el7.x86_64.rpm
mysql-cluster-community-server-debug-8.0.34-1.el7.x86_64.rpm
mysql-cluster-community-test-8.0.34-1.el7.x86_64.rpm

1、依次安装

 rpm -ivh mysql-cluster-community-common-8.0.34-1.el7.x86_64.rpm --nodeps --forcerpm -ivh mysql-cluster-community-libs-8.0.34-1.el7.x86_64.rpm --nodeps --forcerpm -ivh mysql-cluster-community-client-8.0.34-1.el7.x86_64.rpm --nodeps --forcerpm -ivh mysql-cluster-community-server-8.0.34-1.el7.x86_64.rpm --nodeps --force

2、配置mysql

#初始化mysql
mysqld --initialize
#给mysql分组中的mysql用户赋权限
chown mysql:mysql /var/lib/mysql -R
#启动mysql服务器
systemctl start mysqld.service
#设置开机启动mysql
systemctl enable mysqld

3、查看mysql初始化的密码

[root@mysql1 data]# cat /var/log/mysqld.log | grep password
2023-08-09T05:11:28.204159Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: )c=&)ea<<3,O

密码即是最后面的)c=&)ea<<3,O
4、修改数据库密码

#进入mysql
mysql -u root -p
#然后输入密码,即可进入mysql
#修改密码
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '1234';
#退出mysql
exit;
#创建账号名和密码
create user 'admin'@'%' identified with mysql_native_password by 'admin';
#授权远程链接
grant all privileges on *.* to 'admin'@'%' with grant option;
#刷新权限
flush privileges;

5、mysql服务命令

#查看mysql版本
mysql -V
#启动mysql服务
systemctl start mysqld.service
#停止mysql服务
systemctl stop mysqld.service
#重启mysql服务
systemctl restart mysqld.service
#查看mysql服务当前状态
systemctl status mysqld.service
#设置mysql服务开机自启动
systemctl enable mysqld.service
#停止mysql服务开机自启动
systemctl disable mysqld.service

安装mysql shell

下载:https://downloads.mysql.com/archives/shell/

#安装
rpm -ivh mysql-shell-8.0.33-1.el7.x86_64.rpm

集群配置

1、修改配置文件

vi /etc/my.cnf
#mysql1配置文件增加
server-id=1
gtid_mode=on
enforce_gtid_consistency=on
binlog_checksum=none
transaction_write_set_extraction = XXHASH64
loose-group_replication_recovery_use_ssl= ON
loose-group_replication_group_name = '5dbabbe6-8050-49a0-9131-1de449167446'
loose-group_replication_start_on_boot = OFFloose-group_replication_local_address = 'mysql1:24901'
loose-group_replication_group_seeds = 'mysql1:24901,mysql2:24902,mysql3:24903'
loose-group_replication_bootstrap_group = OFF#mysql2配置文件增加
server-id=2
gtid_mode=on
enforce_gtid_consistency=on
binlog_checksum=none
transaction_write_set_extraction = XXHASH64
loose-group_replication_recovery_use_ssl= ON
loose-group_replication_group_name = '5dbabbe6-8050-49a0-9131-1de449167446'
loose-group_replication_start_on_boot = OFFloose-group_replication_local_address = 'mysql2:24901'
loose-group_replication_group_seeds = 'mysql1:24901,mysql2:24902,mysql3:24903'
loose-group_replication_bootstrap_group = OFF#mysql3配置文件增加
server-id=3
gtid_mode=on
enforce_gtid_consistency=on
binlog_checksum=none
transaction_write_set_extraction = XXHASH64
loose-group_replication_recovery_use_ssl= ON
loose-group_replication_group_name = '5dbabbe6-8050-49a0-9131-1de449167446'
loose-group_replication_start_on_boot = OFFloose-group_replication_local_address = 'mysql3:24901'
loose-group_replication_group_seeds = 'mysql1:24901,mysql2:24902,mysql3:24903'
loose-group_replication_bootstrap_group = OFF

2、启动mysql并使用shell连接

#启动mysql
systemctl start mysqld.service
#在每个服务器上都是用shell连接mysql
mysqlsh admin@localhost:3306
#每个服务器都执行
dba.configureInstance();
dba.checkInstanceConfiguration("admin@localhost:3306");

3、进入mysql安装组复制插件

mysql> INSTALL PLUGIN group_replication SONAME 'group_replication.so';

4、进入mysql shell创建集群(注意只在其中一台服务器上执行即可)

 MySQL  localhost:3306 ssl  JS > var cluster = dba.createCluster('myCluster');

5、添加节点

 MySQL  localhost:3306 ssl  JS > cluster.addInstance('admin@mysql1:3306');#创建节点即添加,可以不执行MySQL  localhost:3306 ssl  JS > cluster.addInstance('admin@mysql2:3306');MySQL  localhost:3306 ssl  JS > cluster.addInstance('admin@mysql3:3306');

6、查看当前节点状态

 MySQL  localhost:3306 ssl  JS > cluster.status()
{"clusterName": "myCluster", "defaultReplicaSet": {"name": "default", "primary": "mysql1:3306", "ssl": "REQUIRED", "status": "OK", "statusText": "Cluster is ONLINE and can tolerate up to ONE failure.", "topology": {"mysql1:3306": {"address": "mysql1:3306", "memberRole": "PRIMARY", "mode": "R/W", "readReplicas": {}, "replicationLag": "applier_queue_applied", "role": "HA", "status": "ONLINE", "version": "8.0.34"}, "mysql2:3306": {"address": "mysql2:3306", "memberRole": "SECONDARY", "mode": "R/O", "readReplicas": {}, "replicationLag": "applier_queue_applied", "role": "HA", "status": "ONLINE", "version": "8.0.34"}, "mysql3:3306": {"address": "mysql3:3306", "memberRole": "SECONDARY", "mode": "R/O", "readReplicas": {}, "replicationLag": "applier_queue_applied", "role": "HA", "status": "ONLINE", "version": "8.0.34"}}, "topologyMode": "Single-Primary"}, "groupInformationSourceMember": "mysql1:3306"
}

7、查看节点信息,任意节点即可

mysql> select * from performance_schema.replication_group_members;
+---------------------------+--------------------------------------+-------------+-------------+--------------+-------------+----------------+----------------------------+
| CHANNEL_NAME              | MEMBER_ID                            | MEMBER_HOST | MEMBER_PORT | MEMBER_STATE | MEMBER_ROLE | MEMBER_VERSION | MEMBER_COMMUNICATION_STACK |
+---------------------------+--------------------------------------+-------------+-------------+--------------+-------------+----------------+----------------------------+
| group_replication_applier | 2ef5a678-3673-11ee-b7fb-000c29d4f7b1 | mysql2      |        3306 | ONLINE       | SECONDARY   | 8.0.34         | MySQL                      |
| group_replication_applier | 2efc06f0-3673-11ee-8284-000c29b47d6f | mysql1      |        3306 | ONLINE       | PRIMARY     | 8.0.34         | MySQL                      |
| group_replication_applier | 2f144a98-3673-11ee-b663-000c2973412e | mysql3      |        3306 | ONLINE       | SECONDARY   | 8.0.34         | MySQL                      |
+---------------------------+--------------------------------------+-------------+-------------+--------------+-------------+----------------+----------------------------+
3 rows in set (0.00 sec)

安装mysql router

下载地址:https://downloads.mysql.com/archives/router/

# 安装
rpm -ivh mysql-router-community-8.0.33-1.el7.x86_64.rpm 
#查看mysqlrouter版本
mysqlrouter --version

配置router

vim /etc/mysqlrouter/mysqlrouter.conf
#增加如下配置
[routing:secondary]
bind_address = 0.0.0.0
bind_port = 7001
destinations = mysql1:3306,mysql2:3306,mysql3:3306
routing_strategy = round-robin[routing:primary]
bind_address = 0.0.0.0
bind_port = 7002
destinations = mysql1:3306,mysql2:3306,mysql3:3306
routing_strategy = first-available

启动mysql router

mysqlrouter -c /etc/mysqlrouter/mysqlrouter.conf &

测试连接情况

#连接mysql
mysql -h 192.168.236.145 -P 7001 -uadmin -padmin
mysql -h 192.168.236.145 -P 7002 -uadmin -padmin
#执行命令获取Mysql中配置的server_id,每次执行返回的server_id不一样,因为使用轮询策略
mysql -h192.168.236.145 -uadmin -padmin -e "select @@server_id" -P 7001
#执行命令获取Mysql中配置的server_id,每次执行返回的server_id都一样
mysql -h192.168.236.145 -uadmin -padmin -e "select @@server_id" -P 7002

查看监听状态

[root@mysql3 data]# netstat -tnlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name           
tcp6       0      0 ::1:7001                :::*                    LISTEN      13179/mysqlrouter   
tcp6       0      0 ::1:7002                :::*                    LISTEN      13179/mysqlrouter   

测试

使用工具连接测试,关掉其中一台数据库仍然可以连接
通过mysql命令查询,primary已经切换了

mysql> select * from performance_schema.replication_group_members;
+---------------------------+--------------------------------------+-------------+-------------+--------------+-------------+----------------+----------------------------+
| CHANNEL_NAME              | MEMBER_ID                            | MEMBER_HOST | MEMBER_PORT | MEMBER_STATE | MEMBER_ROLE | MEMBER_VERSION | MEMBER_COMMUNICATION_STACK |
+---------------------------+--------------------------------------+-------------+-------------+--------------+-------------+----------------+----------------------------+
| group_replication_applier | 2ef5a678-3673-11ee-b7fb-000c29d4f7b1 | mysql2      |        3306 | ONLINE       | PRIMARY     | 8.0.34         | MySQL                      |
| group_replication_applier | 2efc06f0-3673-11ee-8284-000c29b47d6f | mysql1      |        3306 | ONLINE       | SECONDARY   | 8.0.34         | MySQL                      |
| group_replication_applier | 2f144a98-3673-11ee-b663-000c2973412e | mysql3      |        3306 | ONLINE       | SECONDARY   | 8.0.34         | MySQL                      |
+---------------------------+--------------------------------------+-------------+-------------+--------------+-------------+----------------+----------------------------+
3 rows in set (0.05 sec)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/35032.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

php从静态资源到动态内容

1、从HTML到PHP demo.php:后缀由html直接改为php,实际上当前页面已经变成了动态的php应用程序脚本 demo.php: 允许通过<?php ... ?>标签,添加php代码到当前脚本中 php标签内部代码由php.exe解释, php标签之外的代码原样输出,仍由web服务器解析 <!DOCTYPE html>…

MySQL数据库基础语法

一&#xff0c;数据库操作 数据库中不区分大小写&#xff01;&#xff01;&#xff01; 1.1 显示数据库 show databases ; 如图&#xff1a; 1.2 创建数据库 create database [ if not exists ]数据库名 ; 如图&#xff1a; 1.3 使用数据库 use 数据库名 &#xff1b; 如图&a…

8月13日,每日信息差

1、600余家互联网企业发出倡议&#xff1a;积极维护防汛救灾网络秩序、截至目前&#xff0c;包括百度、微博、抖音、快手、小红书、哔哩哔哩、阿里、腾讯等8家超大型互联网平台在内的600余家企业发出倡议书&#xff0c;唱响了万众一心、聚力救灾救援的网上主旋律 2、苏州调整耗…

常见的BUG分析方法有哪些?

分类法&#xff1a;对所有的BUG进行分类&#xff0c;识别出共性的问题。 根据分析的角度不同&#xff0c;也会有不同的分类方法&#xff0c;仅供参考&#xff1a; 发生阶段&#xff1a;冒烟测试、迭代测试、SIT测试、UAT测试、生产&#xff1b;根据BUG的发生阶段&#xff0c;我…

使用fopen等标准C库来操作文件

fopen 需要的头文件&#xff1a; #include <stdio.h> 函数原型&#xff1a; FILE *fopen(const char *pathname, const char *mode); 参数&#xff1a; pathname: 文件路径mode: “r” &#xff1a;以只读方式打开文件&#xff0c;该文件必须存在。“w” &#xff…

腾讯出了一个新聊天软件M8

众所周知&#xff0c;如今国内互联网&#xff0c;微信和QQ无疑是社交领域的霸主。 下载:https://www.123pan.com/s/BP5A-RW4xh.html 不过&#xff0c;它们也有各自局限性&#xff0c;比如难以结识新朋友、功能过于复杂等。 这让用户产生厌倦&#xff0c;再加上近几年AI、元宇…

PHP之PHPExcel

include PHPExcel.php; include PHPExcel/Writer/Excel2007.php; //或者include PHPExcel/Writer/Excel5.php; 用于输出.xls的 //创建一个excel $objPHPExcel new PHPExcel(); // 输出Excel表格到浏览器下载 header(Content-Type: application/vnd.ms-excel); header(Content-…

使用requests如何实现自动登录

不知道大家有没有注意到&#xff0c;好多网站我们登录过后&#xff0c;在之后的某段时间内访问该网页时&#xff0c;不会给出请登录的提示&#xff0c;时间到期后就会提示请登录&#xff01;这样在使用爬虫访问网页时还要登录&#xff0c;打乱我们的节奏&#xff0c;那么如何使…

考研408 | 【计算机网络】 数据链路层

导图&#xff1a; 数据链路层概念&#xff1a; 结点&#xff1a;主机、路由器 链路&#xff1a;网络中两个结点之间的物理通道&#xff0c;链路的传输介质主要有双绞线、光纤和微波。分为有线链路、无线链路。 数据链路&#xff1a;网络中两个结点之间的逻辑通道&#xff0…

河道水位自动监测预警 yolov5

河道水位自动监测预警系统基于yolov5网络模型AI视频智能水尺读数技术&#xff0c;河道水位自动监测预警系统通过在河道周边布设监控摄像头&#xff0c;实时监测水位的变化&#xff0c;一旦水位超过预设阈值&#xff0c;将自动发出预警信号&#xff0c;并提示相关人员采取相应的…

Three.js 实现材质边缘通道发光效果

相关API的使用&#xff1a; 1. EffectComposer&#xff08;渲染后处理的通用框架&#xff0c;用于将多个渲染通道&#xff08;pass&#xff09;组合在一起创建特定的视觉效果&#xff09; 2. RenderPass(是用于渲染场景的通道。它将场景和相机作为输入&#xff0c;使用Three.…

使用script标签解决跨域问题,但是只能使用get请求,且不需要获取get请求的数据,例如埋点,只需要触发后发送get请求,而不需要获取返回的参数

在项目中&#xff0c;使用埋点的时候&#xff0c;因为使用的是外部提供的接口&#xff0c;所以直接请求的时候&#xff0c;前端会报跨域的问题&#xff0c;本着不麻烦后端的想法&#xff0c;怎怎么前端实现跨域而完全不需要后段的配合&#xff0c;这时候就想到了通过script标签…

【简单认识zookeeper+kafka分布式消息队列集群的部署】

文章目录 一、zookeeper1、定义2、工作机制3、Zookeeper 特点4、Zookeeper 数据结构5、Zookeeper 应用场景6、Zookeeper 选举机制&#xff08;1&#xff09;第一次启动选举机制&#xff08;2&#xff09;非第一次启动选举机制 7、部署zookeeper群集 二、消息队列概述1、为什么需…

百度云盘发展历程与影响

摘要&#xff1a; 百度云盘作为中国领先的云存储与共享服务提供商&#xff0c;自其创立至今经历了多个阶段的发展与变革。本论文通过对百度云盘的历史回顾与分析&#xff0c;探讨了其在技术、商业模式、用户体验以及对社会的影响等方面的演变。同时&#xff0c;还分析了在竞争激…

使用luarocks安装cjson并使用cjson

1.luarocks安装 wget https://luarocks.org/releases/luarocks-3.3.1.tar.gz --no-check-certificatels -lrthtar -xvf luarocks-3.3.1.tar.gz mv luarocks-3.3.1 /usr/local/cd /usr/local/luarocks-3.3.1/./configure --prefix/usr/local/luarocks-3.3.1 vim /etc/profilePAT…

Mac下⬇️Git如何下载/上传远程仓库

使用终端检查电脑是否安装Git git --version 通过此文章安装Git ➡️ ​​​​​​​传送门&#x1f310; 方式1⃣️使用终端操作 1.下载——克隆远程仓库到本地 git clone [远程地址] 例&#xff1a;git clone https://gitee.com/lcannal/movie.git​ 2.编…

Windows - UWP - 为UWP应用创建桌面快捷方式

Windows - UWP - 为UWP应用创建桌面快捷方式 前言 这是一个较为简单的方式&#xff0c;不需要过多的命令行。 How 首先Win R -> shell:AppsFolder -> 回车&#xff0c; 这将显示电脑上的已安装应用&#xff08;Win32 & UWP&#xff09;&#xff1a; 找到想要创建…

【Nginx】Nginx负载均衡

负载均衡&#xff1a;通过反向代理来实现 Nginx的七层代理和四层代理&#xff1a; 七层是最常用的反向代理方式&#xff0c;只能配置在nginx配置文件的http模块当中 &#xff1b;配置的方法名称为&#xff1a;upstream模块&#xff0c;不能写在server中也不能写在location中&a…

ZABBIX 6.4的完全安装步骤

此安装文档是我一步一步的验证过的&#xff0c;按步骤来可以顺畅的安成ZABBIX6.4的部署。 Zabbix 主要有以下几个组件组成&#xff1a; Zabbix Server6.4&#xff1a;Zabbix 服务端&#xff0c;是 Zabbix 的核心组件。它负责接收监控数据并触发告警&#xff0c;还负责将监控数…

Leetcode

持续更新中。。。。。。。。。。。。。。 day 20230811 /*** 给你一个正方形矩阵 mat&#xff0c;请你返回矩阵对角线元素的和。* <p>* 请你返回在矩阵主对角线上的元素和副对角线上且不在主对角线上元素的和* <p>* 不包括 相交的元素只计算一次* <p>* 输入&…