mysql服务

1 主从复制
集群:多主机集群【复制】
负载过大解决方案:横向扩展[增加服务器节点分散负载]、纵向扩展[提升单机硬件性能]
复制工作原理:
前提:基础数据一样,主节点上有同步数据用的账号
主角色【二进制日志、binlog dump】、从角色【中继日志、IO线程、sql线程】

        mysql架构:

    主节点只要负责正常运行,保证有二进制日志可以被复制,为复制这项功能开启一个专门的用户赋予复制权限可以让从节点用此用户登录主节点来实现复制。
①创建存放二进制文件的目录[mkdir -pv /data/mysql/logbin],并基于mysql的运行方式赋予目录mysql的属主属组[chown -R mysql:mysql /data/mysql]
②修改mysql-server.conf配置文件,给自己添加server-id:标识自己主机身份的id(为了从节点准确找到自己);并在配置文件里指定自己二进制文件路径log_bin=/data/mysql/logbin/mysql-bin(mysql-bin是binlog文件的前缀)
③创建用于复制的用户[create user repluser@'10.0.0.%' identified by '123456';],并赋予他可以复制的权限[grant replication slave on *.* to repluser@'10.0.0.%';]

    从节点是实现主从集群复制的主动方,做好一系列环境准备后,运行命令开启主从复制。
①环境准备:包括创建存放二进制文件的目录,修改mysql-server.conf等
②需要在主节点运行命令:show master status;查看从节点需要复制的二进制日志数据的开始位置
③从节点配置对接主节点的配置参数,配置完执行show slave status查看从节点是否根据配置参数找到了主节点
④如果show slave status的返回结果正确且Slave_IO_Running 和 Slave_SQL_Running 是两个No,说明主从已经配置好了,只是没有开启,接下来可以开启主从复制了:start slave

2 中间件实践
定位:通过数据库中间件减少程序端的复杂逻辑,让应用层更专注于业务
方案:mycat
核心配置文件:server.xml-定义用户权限、系统参数
schema.xml-定义逻辑库、分片规则、数据节点

3 高可用方案
mgr官方的解决方案【基础环境很重要,必须开启GTID gtid_mode=ON】

实践:零数据一主一从实践[熟练]
1 环境准备:
主master-rocky10.0.0.12-mysql8.0.41
从slave-rocky10.0.0.15-mysql8.0.41
#rocky环境关闭selinux、firewalld
vim /etc/selinux/config
SELINUX=disabled
systemctl disable --now firewalld.service
reboot2 主节点配置
(1)准备mysql环境
yum install mysql-server -y
(2)目录环境准备
#创建目录 
mkdir -pv /data/mysql/logbin
#修改属主属组 
chown -R mysql:mysql /data/mysql
(3)主节点mysql配置
#修改mysql配置文件
[root@rocky9-12 ~]# vim /etc/my.cnf.d/mysql-server.cnf
[mysqld] #指定服务端配置
server-id=177 #指定server-id
log_bin=/data/mysql/logbin/mysql-bin #指定二进制文件路径
default_authentication_plugin=mysql_native_password # 避免出现认证问题
#重启mysql服务
systemctl restart mysqld
#查看二进制日志
ll /data/mysql/logbin
(4)登录到mysql确认效果
[root@rocky9-12 ~]# mysql
mysql> show master logs;
(5)创建账号并授权
mysql> create user repluser@'10.0.0.%' identified by '123456';
mysql> grant replication slave on *.* to repluser@'10.0.0.%';(replication slave 是一种特殊的权限,用于允许从库(Slave)连接到主库(Master)并同步数据)
mysql> flush privileges;3 从节点配置
(1)准备mysql环境
yum install mysql-server -y
(2)目录环境准备
#创建目录 
mkdir -pv /data/mysql/logbin
#修改属主属组 
chown -R mysql:mysql /data/mysql
(3)从节点mysql配置
#修改mysql配置文件
[root@rocky9-15 ~]# vim /etc/my.cnf.d/mysql-server.cnf
[mysqld]
server-id=183 #指定server-id
read-only #只读模式
log-bin=/data/mysql/logbin/mysql-bin #指定二进制文件路径
default_authentication_plugin=mysql_native_password # 避免出现认证问题
#重启mysql服务
systemctl restart mysqld
#查看二进制日志
ll /data/mysql/logbin
(4)登录到mysql确认效果
[root@rocky9-12 ~]# mysql
mysql> show slave status;
此时从节点为空Empty set,......4 从角色配置数据同步角色
#master主机确认数据效果
mysql> show master status;
结果显示-要同步的数据在mysql-bin.000002,数据位置在879
#查看从节点状态
mysql> show slave status;
此时从节点为空Empty set,......
#从节点上配置账号级别的主从同步
mysql> CHANGE MASTER TO MASTER_HOST='10.0.0.12',MASTER_USER='repluser',MASTER_PASSWORD='123456',MASTER_PORT=3306,MASTER_LOG_FILE='mysql-bin.000002',MASTER_LOG_POS=849;
#查看从节点状态
mysql> show slave status\G;
结果显示-Slave_IO_Running 和 Slave_SQL_Running 是两个No,说明主从已经配置好了,只是没有启动而已5 启动同步操作
#从节点启动slave
mysql> start slave;
#从节点再次查看状态,同步需要一段时间,不是说会立刻同步过来
mysql> show slave status\G;
结果显示-Slave_IO_State: Waiting for source to send event # 等待数据发送过来Master_Host: 10.0.0.12Master_User: repluserMaster_Port: 3306Connect_Retry: 60 #当从节点与主节点的连接中断时,每隔60秒尝试重新连接主节点Master_Log_File: mysql-bin.000002Read_Master_Log_Pos: 849 #主节点二进制日志大小Relay_Log_File: rocky9-relay-bin.000002 #中继日志发生了变化Relay_Log_Pos: 326Relay_Master_Log_File: mysql-bin.000002Slave_IO_Running: Yes #线程都启动了Slave_SQL_Running: Yes #线程都启动了......Seconds_Behind_Master: 0 #主从节点数据时间差,0表示己经完全同步
#从节点验证数据同步效果
mysql> select User,host from mysql.user;6 数据同步测试
#主节点上写入数据,创建数据库,创建数据表,添加数据
mysql> create database db1;
mysql> use db1;
mysql> CREATE TABLE `student` (`id` int unsigned NOT NULL AUTO_INCREMENT,`name` varchar(20) NOT NULL,`age` tinyint unsigned DEFAULT NULL,`gender` enum('M','F') DEFAULT 'M',PRIMARY KEY (`id`)) ENGINE=InnoDB;
mysql> insert into student (name,age,gender)values('user1',10,'M'),('user2',20,'F'),('user3',30,'M'); 
#在从节点查看数据,都同步过来了
mysql> show databases;
mysql> use db1;
mysql> show tables;
mysql> select * from student;
实践:有数据一主一从实践[熟练]
1 环境准备:
主master-rocky10.0.0.12-mysql8.0.41
从slave-rocky10.0.0.15-mysql8.0.41
目前master节点是有数据的,我们可以将从节点环境清空,从而实现,两者环境的不一致效果
#从节点环境清空[root@rocky9-15 ~]
systemctl stop mysqld
rm -rf /var/lib/mysql/* #删除MySQL数据库文件
rm -rf /data/mysql/logbin/* #删除MySQL二进制日志
systemctl start mysqld
#主节点重置二进制日志,如果从当前使用位置开始同步,则原有数据无法同步
mysql> reset master;
mysql> show master status;
结果显示-mysql-bin.000001,数据位置1572 全量数据同步
#用全量备份的方式导出所有己有数据,并刷新二进制日志
[root@rocky9-12 ~]# mysqldump -A -F --source-data=1 --single-transcaction > all.sql 
(-A mysqldump备份MySQL服务器上的所有数据库;-F 在执行备份之前,MySQL服务器刷新并重置它的日志文件;--source-data=1的作用是,在导出数据的时候记录二进制位置;--single-transaction:mysqldump创建一个单独的事务来导出数据,从而不需要锁定表)
#确认效果
[root@rocky9-12 ~]# ll all.sql
#主节点确认日志效果,日志被刷新
mysql> show master status;
结果显示-mysql-bin.000002,数据位置157
#查看备份文件
[root@rocky9-12 ~]# more all.sql
......
CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000002', MASTER_LOG_POS=157;  # 非注释的第一行
#同步文件到从主机
[root@rocky9-12 ~]# scp all.sql 10.0.0.15: (同步到远程主机 10.0.0.15的当前用户的家目录,如果当前用户是root,则路径为 /root/all.sql)3 同步账号授权
#主节点创建账号并授权
mysql> create user repluser@'10.0.0.%' identified by '123456';
mysql> grant replication slave on *.* to repluser@'10.0.0.%';
#确认效果
mysql> select user,host from mysql.user;4 从节点配置
#配置文件定制
[root@rocky9-15 ~]# vim /etc/my.cnf.d/mysql-sever.cnf
[mysqld]
server-id=183
read-only
log-bin=/data/mysql/logbin/mysql-bin
default_authentication_plugin=mysql_native-password #避免出现认证问题
#修改备份文件
[root@rocky9-15 ~]# vim all.sql
...
# CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000002', MASTER_LOG_POS=157; 
# 将此句补全为如下样式
CHANGE MASTER TO
MASTER_HOST='10.0.0.12',
MASTER_USER='repluser',
MASTER_PASSWORD='123456',
MASTER_PORT=3306,
MASTER_LOG_FILE='mysql-bin.000002',
MASTER_LOG_POS=157;
#从节点加载语句
mysql> set sql_log_bin=0;(因为是导数据,所以需要关闭二进制日志,否则可能会导致当从节点作为其他实例的主节点时,这些SQL会再次传回主节点,导致数据重复执行,如同一条INSERT被执行两次,导致数据出现混乱)
#开始导入数据
mysql> source /root/all.sql
#检查主从状态
mysql> show slave status\G;
结果显示-Slave_IO_Running: No Slave_SQL_Running: No# 主从环境导入成功5 启动同步操作
#从节点启动slave
mysql> start slave;
#从节点再次查看状态
mysql> show slave status\G;
结果显示-Slave_IO_State: Waiting for source to send eventMaster_Host: 10.0.0.12Master_User: repluserMaster_Port: 3306Connect_Retry: 60Master_Log_File: mysql-bin.000002Read_Master_Log_Pos: 157Relay_Log_File: rocky9-relay-bin.000002Relay_Log_Pos: 326Relay_Master_Log_File: mysql-bin.000002Slave_IO_Running: Yes # 主从环境恢复了Slave_SQL_Running: Yes......
#从节点恢复二进制日志
mysql> set @@sql_log_bin=1;
#查询
mysql> use db1;
mysql> select * from student;6 数据同步测试
#主节点新增数据
mysql> insert into student (name,age,gender)values('user4',40,'M');
#从节点确认效果
mysql> select * from student;

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

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

相关文章

【Linux】Linux增删改查命令大全(附频率评级)

Linux增删改查命令大全(附频率评级)* 《Linux命令全景手册:增删改查全场景解析(含136个高频命令)》 按使用频率★分级 | 测试/运维/开发均适用 | 附思维导图下载一、命令全景表(增删改查频率评级&#xff0…

SwiftUI 登录页面键盘约束冲突与卡顿优化全攻略

网罗开发(小红书、快手、视频号同名)大家好,我是 展菲,目前在上市企业从事人工智能项目研发管理工作,平时热衷于分享各种编程领域的软硬技能知识以及前沿技术,包括iOS、前端、Harmony OS、Java、Python等方…

建筑物实例分割数据集-9,700 张图片 城市规划与发展 灾害评估与应急响应 房地产市场分析 智慧城市管理 地理信息系统(GIS) 环境影响评估

建筑物实例分割数据集-9,700 张图片📦 已发布目标检测数据集合集(持续更新)🏢 建筑物实例分割数据集介绍📌 数据集概览包含类别🎯 应用场景🖼 数据样本展示使用建议🌟 数据集特色&am…

LeetCode 刷题【36. 有效的数独】

36. 有效的数独 自己做 解&#xff1a;多层for class Solution { public:bool isValidSudoku(vector<vector<char>>& board) {int hight board.size(); //长if (hight 0)return true;int wide board[0].size(); //宽//判断一行是否出现重复bool…

Java 日志从入门到精通:告别日志混乱

作为一名 Java 开发者&#xff0c;你是否曾在生产环境故障排查时面对过这样的困境&#xff1a;系统报错却找不到关键日志&#xff0c;日志文件大到无法打开&#xff0c;或者日志内容杂乱无章根本无法定位问题&#xff1f;日志作为系统运行的 “黑匣子”&#xff0c;其重要性不言…

系统开发 Day1

前端开发 目的&#xff1a; 开发一个平台&#xff08;网站&#xff09; - 前端开发&#xff1a;HTML CSS JavaScript - web框架&#xff1a;接受请求和处理 - MySQL数据库&#xff1a;存储数据的地方快速上手&#xff1a;基于Flask Web框架快速搭建一个网站 深度学习&#xff…

机器视觉任务(目标检测、实例分割、姿态估计、多目标跟踪、单目标跟踪、图像分类、单目深度估计)常用算法及公开数据集分享

本文按目标检测、实例分割、姿态估计、多目标跟踪、单目标跟踪、图像分类、单目深度估计七个任务分类&#xff0c;融合数据集介绍、评价指标及推荐算法&#xff0c;方便查阅&#xff1a; 一、目标检测 目标检测任务需定位图像中目标的边界框&#xff08;bounding box&#xff0…

MongoTemplate中setOnInsert与set方法的深度解析

MongoTemplate中setOnInsert与set方法的深度解析 在Spring Data MongoDB的MongoTemplate中&#xff0c;setOnInsert和set方法都是在更新文档时使用的&#xff0c;但它们在处理upsert操作&#xff08;即&#xff0c;如果文档不存在则插入&#xff0c;存在则更新&#xff09;时扮…

利用OJ判题的多语言优雅解耦方法深入体会模板方法模式、策略模式、工厂模式的妙用

在线评测系统&#xff08;Online Judge, OJ&#xff09;的核心是判题引擎&#xff0c;其关键挑战在于如何高效、安全且可扩展地支持多种编程语言。在博主的项目练习过程中&#xff0c;借鉴了相关设计模式实现一种架构设计方案&#xff0c;即通过组合运用模板方法、策略、工厂等…

[FOC电机控制]霍尔传感器于角度问题

如果电机有1对极(p1&#xff0c;那么每旋转一圈的机械角度&#xff0c;电气角度会转动一圈&#xff08;360&#xff09;。如果电机有2对极(p2&#xff0c;那么每旋转一圈的机械角度&#xff0c;电气角度会转动两圈&#xff08;720&#xff09;。

阿里云 Flink

阿里云 Flink 是阿里云基于Apache Flink打造的企业级实时计算平台&#xff0c;旨在为用户提供高效、稳定、易用的流处理与批处理能力&#xff0c;帮助企业快速构建实时数据处理链路&#xff0c;支撑实时业务决策。核心特性流批一体计算继承 Apache Flink “流批一体” 的核心优…

企业级高性能web服务器

1 web服务基础 1.1 正常情况的单次web服务访问流程&#xff1a; 正常情况下&#xff0c;单次 Web 服务访问流程从用户在客户端发起请求开始&#xff0c;到最终在客户端展示内容结束&#xff0c;涉及客户端、网络传输、服务器端等多个环节&#xff0c;以下是详细过程&#xff…

免费PDF编辑软件 pdf24-creator 及其安装包

最近发现了一款还算是不错的PDF编辑和阅读软件 pdf24-creator&#xff0c;官方下载网站为&#xff1a;https://tools.pdf24.org/zh/creator&#xff0c;但是官方下载如果没有魔法的话&#xff0c;下载速度很慢&#xff0c;比百度网盘下载还满&#xff0c;因此我把它分享到网盘。…

openvela之ADB

ADB&#xff08;Android Debug Bridge&#xff09;是一款功能丰富的命令行工具&#xff0c;旨在实现开发工作站与设备&#xff08;如模拟器、实体设备&#xff09;之间的通信。通过 ADB&#xff0c;开发者可以便捷地在设备上执行命令、传输文件、调试应用等。本文将详细介绍 AD…

如何控制需求交付节奏

有效控制需求的交付节奏&#xff0c;其核心在于将产品开发过程从一个不可预测的、时快时慢的混乱状态&#xff0c;转变为一套产出稳定、流程顺畅、步调可持续的系统化交付机制。要成功构建这套机制&#xff0c;实现有节奏的价值交付&#xff0c;必须综合运用五大关键策略&#…

汇编中常用寄存器介绍

X86-32位寄存器 4个数据寄存器&#xff1a;EAX、EBX、ECX和EDX; 2个变址和指针寄存器&#xff1a;ESI和EDI; 2个指针寄存器&#xff1a;ESP和EBP; 1个指令指针寄存器&#xff1a;EIP; 6个段寄存器&#xff1a;ES、CS、SS、DS、FS和GS; 1个标志寄存器&#xff1a;EFlags。 在X8…

SOMGAN:用自组织映射改善GAN的模式探索能力

论文信息 论文题目:Improving mode exploring capability ofgenerative adversarial nets by self-organizing map(利用自组织映射提高生成对抗网络的模式探索能力) 期刊:Neurocomputing 摘要:生成对抗网络(GANs)的出现将生成模型的研究推向了一个新的高潮。支持这一进步…

《汇编语言:基于X86处理器》第12章 复习题和练习

本篇记录了《汇编语言&#xff1a;基于X86处理器》第12章 复习题和练习的笔记。12.6复习题和练习12.6.1 简答题1.假设有二进制浮点数1101.01101&#xff0c;如何将其表示为十进制分数之和?答&#xff1a;1101.01101(1x)(1x)(0x)(1x)(0x)(1x)(1x)(1x)(1x) 13.406252.为什么十进…

ApacheCon Asia 2025 中国开源年度报告:Apache Doris 国内第一

上周刚落下帷幕的 ApacheCon Asia 2025 中&#xff0c;一个数据让所有人都为之震撼&#xff1a;全球 Apache 基金会项目 OpenRank 排行榜中&#xff0c;Apache Doris 位居第二&#xff0c;在中国 Apache 项目中更是稳居第一。 这个排名意味着什么&#xff1f;在 Apache 基金会管…

Pytest中实现自动生成测试用例脚本代码

&#x1f345; 点击文末小卡片&#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快在Python的测试框架中&#xff0c;我们通常会针对某个系统进行测试用例的维护&#xff0c;在对庞大系统进行用例维护时&#xff0c;往往会发现很多测试用例是差不多…