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

数据库主从复制

目录

一.主从复制架构

二.主从复制原理

三.实现主从复制配置

1.新建主从复制

2.实战遇到问题

3.复制错误解决方法

4.级联 主从复制

5.半同步复制


MySQL数据库的主从复制(Master-Slave Replication)是一种常见的数据库复制架构,用于提高数据库的可用性、可靠性和性能。

一.主从复制架构

在MySQL主从复制中,通常涉及以下几个角色:

  1. 主服务器(Master)

    • 主服务器是数据库的主要写入节点。
    • 所有的写操作(INSERT、UPDATE、DELETE)以及数据定义语言(DDL)语句(如CREATE TABLE、ALTER TABLE)都在主服务器上执行。
    • 主服务器将其执行的所有变更记录到二进制日志(Binary Log)中。
  2. 从服务器(Slave)

    • 从服务器是主服务器的备份节点,用于读操作和备份。
    • 从服务器从主服务器上的二进制日志复制数据变更,并将这些变更应用到自己的数据副本中。
    • 从服务器可以用于读取查询操作,从而减轻主服务器的负载。
  3. 二进制日志(Binary Log)

    • 主服务器记录所有变更操作的详细信息到二进制日志中。
    • 从服务器通过读取主服务器的二进制日志来获取主服务器上发生的数据变更。

二.主从复制原理

1主节点负责用户的写操作,用户发起写操作后,会修改数据库
2.数据库修改后,会更新主节点上的二进制日志

4.从服务器会开启io线程,主动请求与主服务器同步
3.主服务器会产生一个  dump线程, 一边读取二进制日志一边将二进制日志通过 网络传给从服务器
5 io线程会将主服务器的二进制日志写入从服务器的中继日志,这时只是生成了一个文件,并没有同步
6.从服务器再开启  sql线程将 中继日志中  操作写入数据库完成更新

主从复制相关线程

dump Thread:为每个Slave的I/O Thread启动一个dump线程,用于向其发送binary log events从节点

I/O Thread:向Master请求二进制日志事件,并保存于中继日志中

SQL Thread:从中继日志中读取日志事件,在本地完成同步

跟复制功能相关的文件:

master.info:用于保存slave连接至master时的相关信息,例如账号、密码、服务器地址等

relay-log.info:保存在当前slave节点上已经复制的当前二进制日志和本地relay log日志的对应关系

mysql-relay-bin.00000#: 中继日志,保存从主节点复制过来的二进制日志,本质就是二进制日志

中继日志 (relay log)只在主从服务器架构的从服务器上存在。从服务器(slave)为了与主服务器(Master)保持一致,要从主服务器读取二进制日志的内容,并且把读取到的信息写入本地的日志文件中,这个从服务器本地的日志文件就叫中继日志。然后,从服务器读取中继日志,并根据中继日志的内容对从服务器的数据进行更新,完成主从服务器的数据同步

主从复制(Master-Slave Replication)是数据库中常见的一种复制方式,其主要特点包括:

  1. 数据复制: 主从复制是将一个数据库(主数据库)的数据复制到一个或多个其他数据库(从数据库)的过程。主数据库的更新操作(写操作)会被记录并同步到所有从数据库上,从而保持数据的一致性。

  2. 异步复制: 典型的主从复制是异步进行的,即主数据库执行写操作后,并不等待所有从数据库都接收并应用该操作,而是立即返回给客户端。从数据库在稍后的时间点异步地从主数据库获取更新,并应用到自己的数据集上。

  3. 读写分离: 主从复制可以实现读写分离,即主数据库负责处理写操作(写入数据),而从数据库负责处理读操作(读取数据)。这种架构可以有效分担主数据库的读写压力,提高整体性能。

  4. 容灾和备份: 通过主从复制可以实现数据的容灾备份。如果主数据库发生故障,可以快速切换到某个从数据库继续提供服务,从而保证系统的可用性和持久性。

  5. 分布式数据: 主从复制可以用于在不同地理位置的数据库之间同步数据,从而实现分布式数据管理和协作。

  6. 延迟复制: 由于主从复制是异步的,从数据库上的数据更新可能会有一定的延迟,这取决于网络延迟、主从数据库的负载等因素。因此,在某些情况下需要考虑到延迟带来的数据一致性问题。

复制需要考虑二进制日志事件记录格式

  • STATEMENT(5.0之前), Mariadb5.5 默认使用此格式

  • ROW(5.1之后,推荐),MySQL 8.0 默认使用此格式

  • MIXED: Mariadb10.3 默认使用此格式

三.实现主从复制配置

官网参考

https://dev.mysql.com/doc/refman/8.0/en/replication-configuration.html
https://dev.mysql.com/doc/refman/5.7/en/replication-configuration.html
https://dev.mysql.com/doc/refman/5.5/en/replication-configuration.html
https://mariadb.com/kb/en/library/setting-up-replication/

1.新建主从复制

主服务器:192.168.240.11

从服务器:192.168.240.14

(1)主从服务器关闭防火墙和selinux

systemctl stop firewalld
setenforce  0 

(2)主从复制主服务器配置

#开启二进制日志
vim  /etc/my.cnf
[mysqld]
server-id=11
log-bin=/data/mysql/mysql-binmkdir  -p /data/mysql
chown  -R mysql.mysql  /data 
systemctl restart  mysqld

(3)从服务器配置

#开启二进制日志
vim  /etc/my.cnf
[mysqld]
server-id=14
log-bin=/data/mysql/mysql-bin
#read only  #只读可加
mkdir  -p /data/mysql
chown  -R mysql.mysql  /data 
systemctl restart  mysqld

(4)主服务器登录数据库,新建同步用户

grant replication slave on *.* to cxk@'%' identified by 'Admin@123';
#新建用户,同时授权用户,mysql 8.0 以上需要分开写
show master status;   #查看同步文件和 同步的位置

(5)从服务器登录数据库,添加主的信息

help change master to;
#查看帮助信息,复制信息并修改
CHANGE MASTER TOMASTER_HOST='192.168.240.11',MASTER_USER='cxk',MASTER_PASSWORD='Admin@123',MASTER_PORT=3306,MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=436;

(6)开启io线程和sql线程,查看服务器状态

start slave;#开启io线程 以及sq| 线程
show processlist;#看到进程列表
show slave status\G; # 查看从服务器状态

(7)测试主从复制

在主服务器上新建zxy库,查看从服务器有没有同步
create  database  zxy;
show databases;从服务器
show databases;

2.实战遇到问题

假设主节点的数据库已经运行了一段时间,产生了一定量的数据,主从复制只能复制开启后数据,那之前的数据如何处理?

主服务器:192.168.240.11

从服务器:192.168.240.14

 (1)主从服务器关闭防火墙和selinux

systemctl stop firewalld
setenforce  0 

(2)主从复制主节点配置

导入hellodb数据库

mysql  -uroot -p123123  <  /opt/hellodb_innodb.sql
#开启二进制日志
[root@localhost ~]#vim  /etc/my.cnf
server-id=11
log-bin=/data/mysql/mysql-bin
[root@localhost ~]# mkdir  -p  /data/mysql/binlog
[root@localhost ~]# chown mysql.mysql /data/  -R
[root@localhost ~]# systemctl  restart  mysqldmysqldump -uroot -p123123 -A -F --master-data=1  --single-transaction > /data/all.sql

(3)从服务器上配置

[root@localhost ~]#vim  /etc/my.cnf
server-id=14
log-bin=/data/mysql/mysql-bin
#read only  #只读可加
mkdir  -p  /data/mysql/binlog
chown mysql.mysql /data/  -R
systemctl  restart  mysqld

 (4)主服务器登录数据库,新建同步用户

grant replication slave on *.* to cxk@'%' identified by 'Admin@123';
#新建用户,同时授权用户,mysql 8.0 以上需要分开写
scp -r /data/all.sql   192.168.240.14:/opt
#将完全备份文件拷贝到从服务器上

(5)从服务器上编辑从主服务器拷贝的完全备份文件

[root@localhost ~]# vim  /opt/all.sql
#  找到    CHANGE MASTER TO  的行修改如下
CHANGE MASTER TOMASTER_HOST='192.168.240.11',MASTER_USER='cxk',MASTER_PASSWORD='Admin@123',MASTER_PORT=3306,MASTER_LOG_FILE='mysql-bin.000002', MASTER_LOG_POS=154;#由于之前再备份的时候加入了    --master-data=1 选项    就添加了主从复制的选项000002文件的154位置往后开始主从复制
#000002文件154位置之前的  配置由  备份文件自行实现 

(6)进入数据库关闭二进制日志导入完全备份数据库

mysql  -uroot -p123123
set sql_log_bin=0;
source /opt/all.sql ;
start  slave;
show slave status\G;  

(7)查看数据库

3.复制错误解决方法

可以在从服务器忽略几个主服务器的复制事件,此为global变量,或指定跳过事件的ID

#系统变量,指定跳过复制事件的个数
SET GLOBAL sql_slave_skip_counter = N
#服务器选项,只读系统变量,指定跳过事件的ID
[mysqld]
slave_skip_errors=1007|ALL  

复制冲突的解决

create table info (id int,name char(10),age char(10));
#先在从上建表#再在主上建表  插入信息
create table info (id int,name char(10),age char(10));
insert info values(1,'a',10);
#此时报错 从主机会报错
show  slave  status\G
#可以跳过错误
stop slave;
set global sql_slave_skip_counter=1;
start slave;
#方法2
vim /etc/my.cnf.d/mariadb-server.cnf
[mysqld]
slave_skip_errors=1007|ALL 
#systemctl restart mysqld

 更换主从

reset slave  all;
#清空主从配置

4.级联 主从复制

需要在中间的从服务器启用以下配置 ,实现中间slave节点能将master的二进制日志在本机进行数据库更新,并且也同时更新本机的二进制,从而实现级联复制

主服务器:192.168.240.11

中间节点:192.168.240.12

从节点1:192.168.240.13

从节点2:192.168.240.14

 (1)主从服务器关闭防火墙和selinux

systemctl stop firewalld
setenforce  0 

(2)主服务器配置

#开启二进制日志
[root@localhost ~]#vim  /etc/my.cnf
server-id=11
log-bin=/data/mysql/mysql-bin
[root@localhost ~]# mkdir  -p  /data/mysql/binlog
[root@localhost ~]# chown mysql.mysql /data/  -R
[root@localhost ~]# systemctl  restart  mysqld
select @@server_id;
#可以查看serverid  默认都是1
show master status;
#查看二进制日志位置
grant replication slave on *.* to cxk@'%' identified by 'Admin@123';

(2)中间节点

root@localhost ~]#vim  /etc/my.cnf
#修改文件
[mysqld]
server_id=12
log-bin=/data/mysql/mysql-bin
relay-log=relay-log-bin
relay-log-index=slave-relay-bin.index
log_slave_updates
#read-only  #只读可加
[root@localhost ~]#mkdir /data/mysql/   -p
#建立文件夹
[root@localhost ~]#chown mysql.mysql /data/ -R
#注意修改权限
[root@localhost ~]#systemctl restart mysqld

下面修改配置 命令较长可以使用帮助
help change master to
CHANGE MASTER TOMASTER_HOST='192.168.240.11',MASTER_USER='cxk',MASTER_PASSWORD='Admin@123',MASTER_PORT=3306,MASTER_LOG_FILE='mysql-bin.000003',MASTER_LOG_POS=436;start slave;
#开启线程,开启主从复制
show slave status\G;
#查看设置的状态

show master logs;
#查看  从节点的复制位置

grant replication slave on *.* to cxk@'%' identified by 'Admin@123';
创建用户,用于连接数据库

(3)从节点1

[root@localhost ~]#vim  /etc/my.cnf
server-id=13
log-bin=/data/mysql/mysql-bin
#read only  #只读可加
mkdir  -p  /data/mysql/binlog
chown mysql.mysql /data/  -R
systemctl  restart  mysqld

help change master to;
CHANGE MASTER TOMASTER_HOST='192.168.240.12',MASTER_USER='cxk',MASTER_PASSWORD='Admin@123',MASTER_PORT=3306,MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=154;show slave status\G;
#查看设置的状态
Seconds_Behind_Master: NULL    #目前数据差start slave;
#开启线程,开启主从复制
show slave status\G;

(4)从节点2

[root@localhost ~]#vim  /etc/my.cnf
server-id=14
log-bin=/data/mysql/mysql-bin
#read only  #只读可加
mkdir  -p  /data/mysql/binlog
chown mysql.mysql /data/  -R
systemctl  restart  mysqld

help change master to;
CHANGE MASTER TOMASTER_HOST='192.168.240.12',MASTER_USER='cxk',MASTER_PASSWORD='Admin@123',MASTER_PORT=3306,MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=154;show slave status\G;
#查看设置的状态
Seconds_Behind_Master: NULL    #目前数据差start slave;
#开启线程,开启主从复制
show slave status\G;

 

(5)测试

5.半同步复制

默认情况下,MySQL的复制功能是异步的,异步复制可以提供最佳的性能,主库把binlog日志发送给从库即结束,并不验证从库是否接收完毕。这意味着当主服务器或从服务器端发生故障时,有可能从服务器没有接收到主服务器发送过来的binlog日志,这就会造成主服务器和从服务器的数据不一致,甚至在恢复时造成数据的丢失

实战测试

主服务器:192.168.240.11

从服务器1:192.168.240.12

从服务器2:192.168.240.14

(1)主服务器

[root@localhost ~]#vim  /etc/my.cnf
#修改文件
[mysqld]
server_id=11
log-bin=/data/mysql/mysql-bin
rpl_semi_sync_master_enabled=ON
rpl_semi_sync_master_timeout=3000
#修改此行,需要先安装semisync_master.so插件后,再重启,否则无法启动 开启半同步
#设置3s内无法同步,也将返回成功信息给客户端[root@localhost ~]#mkdir /data/mysql/   -p
#建立文件夹
[root@localhost ~]#chown mysql.mysql /data/ -R
#注意修改权限
[root@localhost ~]#mysql -uroot -p123123mysql>INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so'; #永久安装插件
mysql>UNINSTALL PLUGIN rpl_semi_sync_master ;#卸载
mysql>SET GLOBAL rpl_semi_sync_master_enabled=1; #临时修改变量
mysql>SET GLOBAL rpl_semi_sync_master_timeout = 3000;  #超时长1s,默认值为10s[root@localhost ~]#systemctl restart mysqld
进入数据库
SHOW GLOBAL VARIABLES LIKE '%semi%';查看半同步状态
grant replication slave on *.* to test@'192.168.91.%' identified by 'Admin@123';

(2)从服务器1

INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so';
#安装插件
[root@slave1 ~]#vim /etc/my.cnf
[mysqld]
server-id=12
rpl_semi_sync_slave_enabled=ON #修改此行,需要先安装semisync_slave.so插件后,再重启,否则无法启动
help change master to;
#查看帮助,复制修改
CHANGE MASTER TOMASTER_HOST='192.168.240.11',MASTER_USER='test',MASTER_PASSWORD='Admin@123',MASTER_PORT=3306,MASTER_LOG_FILE='mysql-bin.000003',MASTER_LOG_POS=592;start slave;
show global status like '%semi%';查看状态

(3)从服务器2

INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so';
#安装插件
[root@slave1 ~]#vim /etc/my.cnf
[mysqld]
server-id=14
rpl_semi_sync_slave_enabled=ON #修改此行,需要先安装semisync_slave.so插件后,再重启,否则无法启动
help change master to;
#查看帮助,复制修改
CHANGE MASTER TOMASTER_HOST='192.168.240.11',MASTER_USER='test',MASTER_PASSWORD='Admin@123',MASTER_PORT=3306,MASTER_LOG_FILE='mysql-bin.000003',MASTER_LOG_POS=592;start slave;
show global status like '%semi%';查看状态

(4)测试

当将从服务器2,关闭主从复制时

在主上创建cxk数据库时,主没有延迟,

当两台从服务器都关闭主从复制时

在主上创建cxk1数据库时,主有延迟3秒

当再次开启从服务器时

从服务器上数据同步

可以使用     show slave status\G;   #查看设置的状态

Seconds_Behind_Master: NULL    #目前数据差

相关文章:

数据库主从复制

目录 一.主从复制架构 二.主从复制原理 三.实现主从复制配置 1.新建主从复制 2.实战遇到问题 3.复制错误解决方法 4.级联 主从复制 5.半同步复制 MySQL数据库的主从复制&#xff08;Master-Slave Replication&#xff09;是一种常见的数据库复制架构&#xff0c;用于提…...

昇思25天学习打卡营第13天|BERT

一、简介&#xff1a; BERT全称是来自变换器的双向编码器表征量&#xff08;Bidirectional Encoder Representations from Transformers&#xff09;&#xff0c;它是Google于2018年末开发并发布的一种新型语言模型。与BERT模型相似的预训练语言模型例如问答、命名实体识别、自…...

跨平台书签管理器 - Raindrop

传统的浏览器书签功能虽然方便&#xff0c;但在管理和分类上存在诸多局限。今天&#xff0c;我要向大家推荐一款功能强大的跨平台书签管理-Raindrop https://raindrop.io/ &#x1f4e2; 主要功能&#xff1a; 智能分类和标签管理 强大的搜索功能 跨平台支持 分享与协作 卡片式…...

均匀采样信号的鲁棒Savistky-Golay滤波(MATLAB)

S-G滤波器又称S-G卷积平滑器&#xff0c;它是一种特殊的低通滤波器&#xff0c;用来平滑噪声数据。该滤波器被广泛地运用于信号去噪&#xff0c;采用在时域内基于多项式最小二乘法及窗口移动实现最佳拟合的方法。与通常的滤波器要经过时域&#xff0d;频域&#xff0d;时域变换…...

c++ 可以再头文件种直接给成员变量赋值吗

在C中&#xff0c;你通常不能在头文件中直接给类的成员变量赋值&#xff0c;因为这会导致每个包含该头文件的源文件中都尝试进行赋值&#xff0c;从而引发多重定义错误。然而&#xff0c;你可以在类的构造函数中初始化成员变量&#xff0c;或者在类声明中使用初始化列表或默认成…...

47.HOOK引擎优化支持CALL与JMP位置做HOOK

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 上一个内容&#xff1a;46.修复HOOK对代码造成的破坏 以 46.修复HOOK对代码造成的破坏 它的代码为基础进行修改 优化的是让引擎支持从短跳JMP&#xff08;E9&…...

liunx上修改Firefox版本号

在Linux上修改Firefox的版本号并不直接推荐也不鼓励&#xff0c;因为这可能会影响到浏览器的安全性、兼容性和自动更新功能。但如果你因为某些特殊测试场景确实需要修改其显示的版本号&#xff08;请注意&#xff0c;这样做可能会引发不可预料的问题&#xff09;&#xff0c;可…...

bug——多重定义

bug——多重定义 你的问题是在C代码中遇到了"reference to data is ambiguous"的错误。这个错误通常发生在你尝试引用一个具有多重定义的变量时。 在你的代码中&#xff0c;你定义了一个全局变量data&#xff0c;同时&#xff0c;C标准库中也有一个名为data的函数模板…...

将堆内存的最小值(Xms)与最大值(Xmx)设置为相同的配置,可以防止JVM在运行过程中根据需要动态调整堆内存大小

将堆内存的最小值&#xff08;Xms&#xff09;与最大值&#xff08;Xmx&#xff09;设置为相同的配置&#xff0c;可以防止JVM在运行过程中根据需要动态调整堆内存大小&#xff0c;从而避免因内存分配策略变化引起的性能波动&#xff0c;也就是所谓的"内存震荡"&…...

安装 tesseract

安装 tesseract 1. Ubuntu-24.04 安装 tesseract2. Ubuntu-24.04 安装支持语言3. Windows 安装 tesseract4. Oracle Linux 8 安装 tesseract 1. Ubuntu-24.04 安装 tesseract sudo apt install tesseract-ocr sudo apt install libtesseract-devreference: https://tesseract-…...

为适配kubelet:v0.4 安装指定版本的docker

系统版本信息 cat /etc/redhat-release CentOS Linux release 7.6.1810 (Core) iso 文件下载地址 https://vault.centos.org/7.6.1810/isos/x86_64/CentOS-7-x86_64-DVD-1810.iso0.4 版本的kubelet 报错信息记录 E0603 19:00:38.273720 44142 kubelet.go:734] Error synci…...

vivado CLOCK_REGION、CLOCK_ROOT

时钟区域 CLOCK_REGION属性用于将时钟缓冲区分配给 UltraScale设备&#xff0c;同时让Vivado放置程序将时钟缓冲区分配给最佳站点 在该区域内。 重要提示&#xff1a;对于UltraScale设备&#xff0c;不建议将时钟缓冲区固定到特定站点&#xff0c;因为 你可以在时钟上规划一个7…...

alphazero学习

AlphaGoZero是AlphaGo算法的升级版本。不需要像训练AlphaGo那样&#xff0c;不需要用人类棋局这些先验知识训练&#xff0c;用MCTS自我博弈产生实时动态产生训练样本。用MCTS来创建训练集&#xff0c;然后训练nnet建模的策略网络和价值网络。就是用MCTSPlayer产生的数据来训练和…...

剖析DeFi交易产品之UniswapV3:交易路由合约

本文首发于公众号&#xff1a;Keegan小钢 SwapRouter 合约封装了面向用户的交易接口&#xff0c;但不再像 UniswapV2Router 一样根据不同交易场景拆分为了那么多函数&#xff0c;UniswapV3 的 SwapRouter 核心就只有 4 个交易函数&#xff1a; exactInputSingle&#xff1a;指…...

Agent下载安装步骤

目录 一. 环境准备 二. 部署安装 三. Server端Web页面添加agent客户端 一. 环境准备 准备一台虚拟机&#xff0c;关闭防火墙和selinux&#xff0c;进行时间同步。 版本主机名IP系统zabbix6.4-agentweb1192.168.226.29Rocky_linux9.4 修改主机名 [rootlocalhost ~]# hostna…...

2024年AI技术深入研究

2024年AI技术持续快速发展,应用领域广泛,产业发展迅速,市场趋势积极,学术研究深入。 AI技术进展大模型发展 2024年,智谱AI正在研发对标OpenAI Sora的高质量文生视频模型,预计最快年内发布。智谱AI的进展显示了国内AI大模型领域的快速发展,以及与国际领先技术的竞争态势…...

Apache Seata分布式事务启用Nacos做配置中心

本文来自 Apache Seata官方文档&#xff0c;欢迎访问官网&#xff0c;查看更多深度文章。 本文来自 Apache Seata官方文档&#xff0c;欢迎访问官网&#xff0c;查看更多深度文章。 Seata分布式事务启用Nacos做配置中心 Seata分布式事务启用Nacos做配置中心 项目地址 本文作…...

Emacs之解决:java-mode占用C-c C-c问题(一百四十六)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a;多媒…...

go语言day10 接口interface 类型断言 type关键字

接口&#xff1a; 空接口类型&#xff1a; 要实现一个接口&#xff0c;就要实现该接口中的所有方法。因为空接口中没有方法&#xff0c;所以自然所有类型都实现了空接口。那么就可以使用空接口类型变量去接受所有类型对象。 类比java&#xff0c;有点像Object类型的概念&#x…...

Java实现登录验证 -- JWT令牌实现

目录 1.实现登录验证的引出原因 2.JWT令牌2.1 使用JWT令牌时2.2 令牌的组成 3. JWT令牌&#xff08;token&#xff09;生成和校验3.1 引入JWT令牌的依赖3.2 使用Jar包中提供的API来实现JWT令牌的生成和校验3.3 使用JWT令牌验证登录3.4 令牌的优缺点 1.实现登录验证的引出 传统…...

liunx文件系统,日志分析

文章目录 1.inode与block1.1 inode与block概述1.2 inode的内容1.3 文件存储1.4 inode的大小1.5 inode的特殊作用 2.硬链接与软链接2.1链接文件分类 3.恢复误删除的文件3.1 案例:恢复EXT类型的文件3.2 案例:恢复XFS类型的文件3.2.1 xfsdump使用限制 4.分析日志文件4.1日志文件4.…...

Apipost接口测试工具的原理及应用详解(二)

本系列文章简介: 随着软件行业的快速发展,API(应用程序编程接口)作为不同软件组件之间通信的桥梁,其重要性日益凸显。API的质量直接关系到软件系统的稳定性、性能和用户体验。因此,对API进行严格的测试成为软件开发过程中不可或缺的一环。在众多API测试工具中,Apipost凭…...

「AIGC」大数据开发语言Scala入门

Scala 是一种多范式编程语言,设计初衷是集成面向对象编程和函数式编程的特点。它运行在 Java 虚拟机(JVM)上,因此可以与 Java 库无缝集成。Scala 也因其在大数据处理领域的应用而受到欢迎,特别是与 Apache Spark 这类框架结合使用。 1. 环境搭建 安装 Scala:可以从 Scala…...

2.1 tmux和vim

文章目录 前言概述tmuxvim总结 前言 开始学习的时间是 2024.7.6 ,13&#xff1a;47 概述 最好多使用&#xff0c;练成条件反射式的 直接使用终端的工具&#xff0c;可以连接到服务器&#xff0c;不需要使用本地的软件 tmux 这个主要有两个功能&#xff0c;第一个功能是分…...

运行vue : 无法加载文件 C:\Program Files\nodejs\node_global\vue.ps1,因为在此系统上禁止运行脚本。

报错背景: 重装了win10系统,然后准备安装Vue,这个时候我已经安装好了node.js和npm,输入node -v和npm -v都有正确输出,但是每次输入npm install -g vue/cli 安装的时候,就会报错. 大家安装node.js的时候最好就是默认路径(C:\Program Files\nodejs),别去修改不然很多报错.(个人…...

Lambda架构

1.Lambda架构对大数据处理系统的理解 Lambda架构由Storm的作者Nathan Marz提出&#xff0c;其设计目的在于提供一个能满足大数据系统关键特性的架构&#xff0c;包括高容错、低延迟、可扩展等。其整合离线计算与实时计算&#xff0c;融合不可变性、读写分离和复杂性隔离等原则&…...

数据库作业day3

创建一个student表用于存储学生信息 CREATE TABLE student( id INT PRIMARY KEY, name VARCHAR(20) NOT NULL, grade FLOAT ); 向student表中添加一条新记录 记录中id字段的值为1&#xff0c;name字段的值为"monkey"&#xff0c;grade字段的值为98.5 insert into …...

计算机网络——数据链路层(以太网扩展、虚拟局域网、高速以太网)

在许多情况下&#xff0c;我们希望把以太网的覆盖范围扩展。本节先讨论在物理层把以太网扩展&#xff0c;然后讨论在数据链路层把以太网扩展。这种扩展的以太网在网络层看来仍然是一个网络。 在物理层扩展以太网 现在&#xff0c;扩展主机和集线器之间的距离的一种简单方法就是…...

Nuxt 项目集成第三方UI组件库(九)

Nuxt.js 本身并不提供内置的 UI 组件库&#xff0c;它是一个用于构建服务端渲染&#xff08;SSR&#xff09;和静态生成&#xff08;SSG&#xff09;Vue.js应用的框架。Nuxt.js 的设计目的是提供基础的架构和配置&#xff0c;以便开发者可以根据自己的需求选择和集成第三方 UI …...

vulnhub靶场之Jarbas

1 信息收集 1.1 主机发现 arp-scan -l 发现主机IP地址为&#xff1a;192.168.1.16 1.2 端口发现 nmap -sS -sV -A -T5 -p- 192.168.1.16 存在端口22&#xff0c;80&#xff0c;3306&#xff0c;8080 1.3 目录扫描 dirsearch -u 192.168.1.16 2 端口访问 2.1 80端口 2.2…...

解决onlyoffice警告的一些思路

解决思路&#xff1a; 1、监听出现警告的事件&#xff1a;已经实现 <script setup> import {message} from "ant-design-vue";const onError (event) > {console.log("ONLYOFFICE Document Editor reports an error: code " event.data.error…...

快速上手指南:使用 Minikube 在本地运行 Kubernetes 集群

前言 Minikube 是一个开源工具&#xff0c;用于在本地运行 Kubernetes 集群。它提供了一种简单的方法来在本地开发和测试 Kubernetes 应用程序&#xff0c;而无需设置完整的 Kubernetes 集群。以下是 Minikube 的基本使用步骤&#xff1a; 安装 Minikube 安装依赖项 虚拟化…...

【C语言】指针(1):入门理解篇

目录 一、内存和地址 1.1内存 1.2 深入理解计算机编址 二、指针变量和地址 2.1 取地址操作符&#xff08;&&#xff09; 2.2 指针变量和解应用操作符 2.2.1 指针变量 2.2.2 解引用操作符 2.3指针变量的大小 三、指针变量类型的意义 3.1 指针的解引用 3.1指针-整数…...

经典双运算放大器LM358

前言 LM358双运放有几十年的历史了吧&#xff1f;通用运放&#xff0c;很常用&#xff0c;搞电路的避免不了接触运放&#xff0c;怎么选择运放&#xff0c;是工程师关心的问题吧&#xff1f; 从本文开始&#xff0c;将陆续发一些常用的运放&#xff0c;大家选型可以参考&#…...

adb不插usb线通过wifi调试

说起做手机开发也有好多年了&#xff0c;说来惭愧&#xff0c;我最近才知道安卓手机是可以不插数据线进行开发调试的。起因是公司近期采购了一批安卓一卡通设备&#xff0c;需要对其进行定制开发APP,但是由于我插USB调试发现没有反应。通过询问厂家才知道可以通过WIFI进行调试。…...

vulnhub--IMF

环境 攻击机&#xff1a;192.168.96.4 靶机&#xff1a;ip未知 主机探测 确定靶机ip为32的主机 端口扫描 访问80端口 外围打点 在contact.php页面源码中找到了flag1 之后没啥突破 但查看网络后发现contact.php页面请求的三个js文件的文件名很有特点&#xff0c;猜测是base64编码…...

ePTFE膜(膨体聚四氟乙烯膜)应用前景广阔 本土企业技术水平不断提升

ePTFE膜&#xff08;膨体聚四氟乙烯膜&#xff09;应用前景广阔 本土企业技术水平不断提升 ePTFE膜全称为膨体聚四氟乙烯膜&#xff0c;指以膨体聚四氟乙烯&#xff08;ePTFE&#xff09;为原材料制成的薄膜。ePTFE膜具有耐化学腐蚀、防水透气性好、耐候性佳、耐磨、抗撕裂等优…...

C++与C#创建位图,是否需要区分RGB和BGR模式

在处理位图时&#xff0c;确实需要区分RGB和BGR模式&#xff0c;因为不同的库和API对颜色通道的排序有不同的约定。具体到C与C#&#xff0c;这一点也是需要注意的。 C 创建位图 使用GDI或WIC (Windows Imaging Component): 当你在C中使用这些Windows API创建或操作位图时&…...

web学习笔记(八十)

目录 1.小程序实现微信一键登录 2. 小程序的授权流程 3.小程序配置vant库 4.小程序配置分包 5.小程序配置独立分包 6.小程序分包预下载 1.小程序实现微信一键登录 要先实现小程序一键登录首先我们需要给按钮设置一个绑定事件&#xff0c;然后在绑定事件内部通过wx.login…...

深度解析 Raft 分布式一致性协议

本文参考转载至&#xff1a;浅谈 Raft 分布式一致性协议&#xff5c;图解 Raft - 白泽来了 - 博客园 (cnblogs.com) 深度解析 Raft 分布式一致性协议 - 掘金 (juejin.cn) raft-zh_cn/raft-zh_cn.md at master maemual/raft-zh_cn (github.com) 本篇文章将模拟一个KV数据读写服…...

Android10以上实现获取设备序列号功能

Android10以上实现获取设备唯一标识&#xff0c;目前只支持华为和荣耀设备。实现原理&#xff1a;通过无障碍服务读取序列号界面。 public class DeviceHelper implements Application.ActivityLifecycleCallbacks {static final String TAG "WADQ_DeviceHelper";s…...

从0到1:培训老师预约小程序开发笔记二

背景调研 培训老师预约小程序&#xff1a; 教师和学生可以更便捷地安排课程&#xff0c;并提升教学质量和学习效果&#xff0c;使之成为管理和提升教学效果的强大工具。培训老师可以在小程序上设置自己的可预约时间&#xff0c;学员可以根据老师的日程安排选择合适的时间进行预…...

【FFmpeg】av_read_frame函数

目录 1.av_read_frame1.2 从pkt buffer中读取帧&#xff08;avpriv_packet_list_get&#xff09;1.3 从流当中读取帧&#xff08;read_frame_internal&#xff09;1.3.1 读取帧&#xff08;ff_read_packet&#xff09;1.3.2 解析packet&#xff08;parse_packet&#xff09;1.3…...

女生学计算机好不好?感觉计算机分有点高……?

众所周知&#xff0c;在国内的高校里&#xff0c;计算机专业的女生是非常少的&#xff0c;很多小班30人左右&#xff0c;但是每个班女生人数只有个位数。这就给很多人一个感觉&#xff0c;是不是女生天生就不适合学这个东西呢&#xff1f;女生是不是也应该放弃呢&#xff1f;当…...

windows10/11 如何开启卓越性能模式

在Windows 10和Windows 11中&#xff0c;可以通过以下步骤启用“卓越性能”模式。请注意&#xff0c;卓越性能模式仅在Windows 10 Pro for Workstations和Windows 10 Enterprise版本中可用。 使用命令提示符启用卓越性能模式 打开命令提示符&#xff1a; 按Win X键&#xff0…...

JSP WEB开发(二) JavaBean

目录 JavaBean JavaBean特征 JavaBean的标签 JavaBean 的范围 标签 JavaBean JavaBean 是一种符合某些命名和设计规范的 Java 类&#xff0c;它是一种可重用组件技术&#xff0c;主要用于封装数据&#xff0c;执行负责的计算任务&#xff0c;封装事务逻辑等。JavaBean 的实…...

G2.【C语言】EasyX绘制颜色窗口

1.窗口 窗口&#xff1a;宽度*高度&#xff08;单位都是像素&#xff09; #include <stdio.h> #include <easyx.h> int main() {initgraph(640, 480);getchar();return 0; } 640是宽&#xff0c;480是高 2.操作窗口的三个按钮 #include <stdio.h> #incl…...

异构计算技术与DTK异构开发套件

异构计算技术与DTK异构开发套件 费林分类法&#xff1a;SISD SIMD MISD MIMD 指令流I和数据流D MIMD不同存储结构&#xff1a; UMA均匀存储访问模型NUMA非均匀存储访问模型Cluster集群 现在以Cluster为主 DTK异构开发套件 生态结构 异构并行编程模型是什么 HIP&#xff…...

数据结构之“栈”(全方位认识)

&#x1f339;个人主页&#x1f339;&#xff1a;喜欢草莓熊的bear &#x1f339;专栏&#x1f339;&#xff1a;数据结构 前言 栈是一种数据结构&#xff0c;具有" 后进先出 "的特点 或者也可见说是 ” 先进后出 “。大家一起加油吧冲冲冲&#xff01;&#xff01; …...

vue项目打包部署后 浏览器自动清除缓存问题(解决方法)

vue打包部署后 浏览器缓存问题&#xff0c;导致控制台报错ChunkLoadError: Loading chunk failed的解决方案 一、报错如下&#xff1a; 每次build打包部署到服务器上时&#xff0c;偶尔会出现前端资源文件不能及时更新到最新&#xff0c;浏览器存在缓存问题&#xff0c;这时在…...