当前位置: 首页 > news >正文

mysql8.0集群技术

在Linux下部署mysql

首先安装cmake3和gcc-11,在安装依赖包最后安装mysql

安装mysql

配置yum源仓库

安装依赖包

yum install  -y git bison openssl-devel ncurses-devel -y

安装gcc

unzip gcc-11.zip

cd gcc-11/

 yum install *.rpm

 source  /opt/rh/devtoolset-11/enable

cat /opt/rh/devtoolset-11/enable  >> ~/.bash_profile

安装cmake3

tar zxf cmake3.tar.gz

cd cmake3/

yum install *.rpm

下载并解压mysql源码包

tar zxf mysql-boost-8.0.40.tar.gz

cd  mysql-8.0.40/

mkdir  build

cmake3  .. -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/data/mysql -DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_EXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf8mb4 -DDEFAULT_COLLATION=utf8mb4_unicode_ci -DWITH_SSL=system -DWITH_BOOST=/root/mysql-8.0.40/boost/boost_1_77_0/  -DWITH_DEBUG=OFF

编译完make安装 make install

部署mysql

生成启动脚本

 cd /usr/local/mysql/support-files/

cp -p mysql.server /etc/init.d/mysqld

修改环境变量

 vim ~/.bash_profile

 source  ~/.bash_profile

建立数据库程序运行用户

useradd -M -s /sbin/nologin mysql

建立数据库数据目录并给权限

 mkdir  /data/mysql/

chown mysql.mysql /data/mysql/

生成配置文件

 vim /etc/my.cnf

数据库初始化建立mysql基本数据

 mysqld --initialize --user=mysql #这会给个初始密码要提前复制好

/etc/init.d/mysqld start 启动

chkconfig  mysqld on

数据库安全初始化

mysql_secure_installation #第一个粘贴提前复制的密码,第二个是修改的密码,第三个是确认修改的密码,最后一直回车就行了

mysql的组从复制

master配置

 vim /etc/my.cnf

/etc/init.d/mysqld restart 重启

进入mysql

查看默认认证插件

生成专门用来做复制的用户,此用户是用于slave端做认证用

对这个用户进行授权

SHOW MASTER STATUS;    查看master的状态

slave配置

vim /etc/my.cnf 与主一样

/etc/init.d/mysqld restart 重启

进入mysql

 SHOW SLAVE STATUS\G;

当有数据时添加slave2

vim /etc/my.cnf 与上一致

 /etc/init.d/mysqld restart 重启

在master上配置

mysqldump -uroot -pldr ldr > /mnt/ldr.sql

scp /mnt/ldr.sql root@192.168.23.190:/mnt 拷贝到slave2

slave2配置

看master状态

进入mysql

查看slave状态(两个线程是yes就行)

mysql高可用之组复制 (MGR)

开启一个协议层,写东西时会先进入协议层,协议层会先去询问数据库能不能做,如果超过(n/2+1)回复不能做,就不能做遵循少数服从多数原则

三台主机都要先停止mysqld服务再删除/data/mysql/里的所有数据 在配置hosts解析

rm -fr /data/mysql/*

三台都是同样的做法

vim /etc/my.cnf

做初始化

做完不要启动继续编辑文件(因为后面要添加组件,只能在初始化后做,不然初始化启动不了)

做完启动mysql

进入mysql(登录用初始化给的密码)

进去修改密码

关闭日志,后面的操作不需要记录到日志中

创建用户

授权

把自己加入组中

手动打开组复制模式

打开服务,再关闭模式(如下)

查看组情况

gtid模式

在master端的写入时多用户读写,在slave端的复制时单线程日志回放,所以slave端一定会延迟与master端

这种延迟在slave端的延迟可能会不一致,当master挂掉后slave接管,一般会挑选一个和master延迟日志最接近的充当新的master

那么为接管master的主机继续充当slave角色并会指向到新的master上,作为其slave.

三台主机一样

查看gtid状态

重启服务

两台从服务器配置

show slave status\G;( Auto_Position: 1        #功能开启)

半同步模式

master配置

不要重启(会出现没有pidde错误)

安装半同步插件

查看插件情况

打开半同步功能

查看半同步功能状态

slave端

#开启半同步功能

mysql配置

MHA

使用一主两从架构

创建一台mha服务器

将MHA-7.zip传上去

再解压进入MHA-7

yum install *.rpm -y

将mha4mysql-node-0.58-0.el7.centos.noarch.rpm拷贝给另外三台主机

scp mha4mysql-node-0.58-0.el7.centos.noarch.rpm root@192.168.23.170:/mnt

scp mha4mysql-node-0.58-0.el7.centos.noarch.rpm root@192.168.23.180:/mnt

scp mha4mysql-node-0.58-0.el7.centos.noarch.rpm root@192.168.23.190:/mnt

拷贝完再安装

在mha里面进行配置

进行添加用户并给权限让root用户能够远程连接

ssh-keygen

ssh-copy-id root@192.168.23.170

ssh-copy-id root@192.168.23.180

ssh-copy-id root@192.168.23.190

ssh-copy-id root@192.168.23.200

再将id_rsa传给另外三台主机

检测网络及ssh免密

在master数据节点还在正常工作情况下

看原来的主

看原来的从

如果想修改回去就将ip改为原来的ip

http://www.dtcms.com/a/313365.html

相关文章:

  • 第13章 文件输入/输出
  • 知识蒸馏 - 基于KL散度的知识蒸馏 HelloWorld 示例 KL散度公式对应
  • 文件拷贝-代码
  • Doris json_contains 查询报错
  • 数据结构总纲以及单向链表详解:
  • 【LeetCode刷题指南】--对称二叉树,另一颗树的子树
  • [创业之路-531]:知识、技能、技术、科学之间的区别以及它们对于职业的选择的指导作用?
  • 【OpenGL】LearnOpenGL学习笔记02 - 绘制三角形、矩形
  • 13-day10生成式任务
  • 基于MBA与BP神经网络分类模型的特征选择方法研究(Python实现)
  • 在ANSYS Maxwell中对永磁体无线充电进行建模
  • 【大模型核心技术】Agent 理论与实战
  • 【设计模式】5.代理模式
  • Manus AI与多语言手写识别
  • 什么是“痛苦指数”(Misery Index)?
  • 如何获取网页中点击按钮跳转后的链接呢
  • 在 Cursor 中设置浅色背景和中文界面
  • 抽奖系统中 Logback 的日志配置文件说明
  • 03.一键编译安装Redis脚本
  • 【MySQL】MySQL 中的数据排序是怎么实现的?
  • 深入理解流式输出:原理、应用与大模型聊天软件中的实现
  • 跨语言模型中的翻译任务:XLM-RoBERTa在翻译任务中的应用
  • python---python中的内存分配
  • AI Agent 重塑产业发展新格局
  • 联想笔记本安装系统之后一直转圈圈的问题了?无法正常进入到系统配置界面,原来是BIOS中的VMD问题
  • Autoswagger:揭露隐藏 API 授权缺陷的开源工具
  • 使用CMake构建项目的完整指南
  • [LINUX操作系统]shell脚本之循环
  • 【Qt】QObject::startTimer: Timers cannot be started from another thread
  • 如何玩转 Kubernetes K8S