MySQL 主从复制的两种方式详解

news2024/9/23 3:12:49

目录

概述

主从复制原理

环境准备

基于二进制日志的复制

配置master

配置slave

启动复制的命令

测试

Gtid方式进行主从同步

工作原理

配置master

配置slave

测试 


概述

主从复制是指将主数据库的 DDL 和 DML 操作通过二进制日志传到从库服务器中,然后在从库上对这 些日志重新执行(也叫重做),从而使得从库和主库的数据保持同步。

MySQL支持一台主库同时向多台从库进行复制, 从库同时也可以作为其他从服务器的主库,实现链状 复制。

MySQL 复制的优点主要包含以下三个方面:

        1. 主库出现问题,可以快速切换到从库提供服务。

        2. 实现读写分离,降低主库的访问压力。

        3. 可以在从库中执行备份,以避免备份期间影响主库服务。

主从复制原理

MySQL主从复制的核心就是 二进制日志,具体的过程如下: 

从上图来看,复制分成三步:

        1. Master 主库在事务提交时,会把数据变更记录在二进制日志文件 Binlog 中。

        2. 从库读取主库的二进制日志文件 Binlog ,写入到从库的中继日志 Relay Log 。

        3. slave重做中继日志中的事件,将改变反映它自己的数据。

环境准备

准备两台虚拟机,进行更换阿里镜像源,关闭防火墙和selinux,进行时间同步,固定IP等基础操作

主机名角色IP系统版本
master主库192.168.226.100Centos7-2009-miniMySQL:8.0.39
slave从库192.168.226.101Centos7-2009-miniMySQL:8.0.39

 初始化脚本,其中固定IP可选操作。

#!/bin/bash
echo "=====系统环境初始化脚本====="
sleep 3
echo "——>>> 关闭防火墙与SELinux <<<——"
sleep 3
systemctl stop firewalld
systemctl disable firewalld &> /dev/null
setenforce 0
sed -i '/SELINUX/{s/enforcing/disabled/}' /etc/selinux/config
 
echo "——>>> 创建阿里仓库 <<<——"
sleep 3
rm -rf /etc/yum.repos.d/*
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo 
yum -y install wget
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo  
 
 
echo "——>>> 设置时区并同步时间 <<<——"
sleep 3
timedatectl set-timezone Asia/Shanghai
yum -y install chrony
systemctl start chronyd
systemctl enable chronyd
reboot

 给两台主机下载MySQL,并给root用户设置了简单密码为1234

sudo yum remove mysql-server -y && sudo yum autoremove -y
sudo yum remove *mysql* -y
sudo rm -rf /var/lib/mysql/ 
sudo rm -rf /etc/mysql/ 

yum install -y yum-utils > /dev/null
yum install -y https://dev.mysql.com/get/mysql80-community-release-el7-11.noarch.rpm > /dev/null
yum-config-manager --enable mysql80-community > /dev/null
yum-config-manager --disable mysql57-community > /dev/null
yum install -y mysql-server
systemctl start mysqld && systemctl enable mysqld
mysqladmin -p"`awk '/temporary password/{p=$NF}END{print p}' /var/log/mysqld.log`" password 'TianPFh@123'
mysql -p'TianPFh@123' -e "UNINSTALL COMPONENT 'file://component_validate_password'"
mysqladmin -p'TianPFh@123' password '1234'

基于二进制日志的复制

这是最常见的主从复制模式。在这种模式下,主服务器将所有更改(如插入、更新、删除)记录到二进制日志(binary log)中。从服务器读取这些日志并将相同的更改应用到自己的数据上。

配置master

修改配置文件 /etc/my.cnf,在配置文件末尾追加即可。

# 追加如下配置 

server-id = 1            # 服务器唯一标识,每个服务器在复制环境中应有唯一的ID,用于标识不同的复制实例

log-bin = mysql-bin      # 启用二进制日志,指定二进制日志文件的基名,MySQL会在此基名后添加数字和扩展名来创建日志文件

binlog-format = ROW      # 设置二进制日志格式为ROW,记录每一行数据的变化,有助于减少数据不一致的风险,也便于从库的并行复制

expire_logs_days = 10    # 二进制日志保留时间,设置二进制日志文件的自动清理周期,这里是10天,根据数据保留和备份策略调整

read-only=0             # 设置服务器是否为只读模式,0表示关闭只读模式,允许所有用户进行写操作,包括非超级用户

# binlog-ignore-db =      # 指定不需要复制的数据库,即不记录这些数据库的变更到二进制日志中,多个数据库用逗号分隔

# binlog_do_db =          # 指定需要复制的数据库,即只记录这些数据库的变更到二进制日志中,多个数据库用逗号分隔
# 注意:binlog-ignore-db和binlog_do_db不要同时使用,以免产生冲突

重新启动MySQL服务

systemctl restart mysqld

登录MySQL,创建远程连接的账号,并授予主从复制权限

[root@master ~]# mysql -uroot -p1234  # 使用root用户登录MySQL,密码是1234
mysql: [Warning] Using a password on the command line interface can be insecure.  # 警告:在命令行界面使用密码可能不安全
Welcome to the MySQL monitor.  Commands end with ; or \g.  # 欢迎信息,命令以;或\g结束
Your MySQL connection id is 8  # MySQL连接ID为8
Server version: 8.0.39 MySQL Community Server - GPL  # 服务器版本信息

Copyright (c) 2000, 2024, Oracle and/or its affiliates.  # 版权信息

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.  # Oracle是Oracle公司及其附属公司的注册商标

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.  # 输入'help;'或'\h'获取帮助,输入'\c'清除当前输入的命令

mysql> CREATE USER 'itit'@'%' IDENTIFIED WITH mysql_native_password BY '123456';  # 创建用户'itit',允许从任何主机访问,并设置密码为'123456'
Query OK, 0 rows affected (0.01 sec)  # 命令执行成功,没有行受到影响

mysql> GRANT REPLICATION SLAVE ON *.* TO 'itit'@'%';  # 授予用户'itit'从任何主机进行复制的权限
Query OK, 0 rows affected (0.00 sec)  # 命令执行成功,没有行受到影响

mysql> show master status ;  # 显示主服务器状态,包括二进制日志文件名和位置
+------------------+----------+--------------+------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000001 |      660 |              |                  |                   |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)  # 输出结果,显示当前使用的二进制日志文件和位置

mysql> exit  # 退出MySQL命令行
Bye  # MySQL命令行退出信息

查询的字段解释:

  • File:当前正在写入的二进制日志文件名。对于新的复制关系,从库需要从这个文件开始复制。

  • Position:在当前二进制日志文件中的位置(偏移量)。从库将从这个位置开始复制。

  • Binlog_Do_DB:指定需要复制的数据库。如果配置了binlog_do_db参数,这里会显示相应的数据库。如果没有设置,则该字段为空。

  • Binlog_Ignore_DB:指定不需要复制的数据库。如果配置了binlog_ignore_db参数,这里会显示相应的数据库。如果没有设置,则该字段为空。

  • Executed_Gtid_Set:已经执行的GTID集合。在GTID复制模式下,主库会记录每个事务的GTID。这个字段显示了所有已经执行的事务的GTID集合。如果服务器没有启用GTID模式,则此字段为空。

配置slave

修改配置文件 /etc/my.cnf

# 在文件中追加下述配置即可

# 从库的唯一标识,与主库和其他从库不同
server-id = 2

# 启用二进制日志,以便从库可以作为其他从库的主库
log-bin = mysql-bin

# 设置二进制日志格式为ROW,有助于减少数据不一致的风险
binlog-format = ROW

# 设置从库为只读模式,防止在从库上直接写入数据导致的数据不一致
read-only = 1

# 设置服务器为只读模式,超级管理员也无法执行写操作(可选操作)
#super-read-only=1

# 注:从库开启二进制文件是可以记录从库的数据操作的记录,也是可选操作,
#如果不开,从库就不会记录自己这个库的操作。

重新启动MySQL服务

systemctl restart mysqld

登录从库的MySQL,配置从库以连接到主库

CHANGE REPLICATION SOURCE TO
    SOURCE_HOST='192.168.226.100',
    SOURCE_USER='itit',
    SOURCE_PASSWORD='123456',
    SOURCE_LOG_FILE='mysql-bin.000001',
    SOURCE_LOG_POS=660;

在 MySQL 8.0.23之前的版本中,MySQL 的主从复制相关的语法经历了一些变化,特别是 CHANGE MASTER TO 语句的重命名为 CHANGE REPLICATION SOURCE TO。这种变化是为了统一复制源的概念并改善语法的一致性。下面是你提供的命令在 MySQL 8.0.23 之前版本中的正确语法:

CHANGE MASTER TO 
    MASTER_HOST='192.168.226.100',
    MASTER_USER='itit', 
    MASTER_PASSWORD='123456', 
    MASTER_LOG_FILE='mysql-bin.000001', 
    MASTER_LOG_POS=660;
  • MySQL 8.0.23 及更高版本:使用 CHANGE REPLICATION SOURCE TO
  • MySQL 8.0.22 及更早版本:使用 CHANGE MASTER TO
MySQL 8.0.23 及更高版本含义MySQL 8.0.22 及更早版本
SOURCE_HOST主库IP地址MASTER_HOST
SOURCE_USER连接主库的用户名MASTER_USER
SOURCE_PASSWORD连接主库的密码MASTER_PASSWORD
SOURCE_LOG_FILE连接主库的密码MASTER_LOG_FILE
SOURCE_LOG_POSbinlog日志文件位置MASTER_LOG_POS
启动复制的命令

在 MySQL 8.0.23 及之后版本中

  1. 启动复制进程: 使用 START REPLICA 命令来启动复制进程:

    START REPLICA;
  2. 停止复制进程: 使用 STOP REPLICA 命令来停止复制进程:

    STOP REPLICA;
  3. 查看复制状态: 使用 SHOW REPLICA STATUS 命令查看复制状态:

    SHOW REPLICA STATUS\G;
  4. 查看复制进程的线程状态: 使用 SHOW PROCESSLIST 来查看正在运行的线程,包括复制线程:

    SHOW PROCESSLIST;

在 MySQL 8.0.22 及之前版本中

  1. 启动复制进程: 使用 START SLAVE 命令来启动复制进程:

    START SLAVE;
  2. 停止复制进程: 使用 STOP SLAVE 命令来停止复制进程:

    STOP SLAVE;
  3. 查看复制状态: 使用 SHOW SLAVE STATUS 命令查看复制状态:

    SHOW SLAVE STATUS\G;
  4. 查看复制进程的线程状态: 使用 SHOW PROCESSLIST 来查看正在运行的线程,包括复制线程:

    SHOW PROCESSLIST;

测试

当前主库的内容

[root@master ~]# mysql -p1234
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 10
Server version: 8.0.39 MySQL Community Server - GPL

Copyright (c) 2000, 2024, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.04 sec)

当前从库的内容

[root@slave ~]# mysql -p1234
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 15
Server version: 8.0.39 MySQL Community Server - GPL

Copyright (c) 2000, 2024, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.02 sec)

在主库执行一系列sql操作

-- 创建数据库,如果数据库不存在
CREATE DATABASE IF NOT EXISTS db01;

-- 切换到刚刚创建的数据库
USE db01;

-- 创建用户表
CREATE TABLE tb_user (
    id INT(11) AUTO_INCREMENT PRIMARY KEY NOT NULL,
    name VARCHAR(50) NOT NULL,
    sex VARCHAR(1)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- 插入数据
INSERT INTO tb_user (name, sex) VALUES
('Tom', '1'),
('Trigger', '0'),
('Dawn', '1');

来到从库查看

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| db01               |
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
5 rows in set (0.00 sec)

mysql> use db01;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> show tables;
+----------------+
| Tables_in_db01 |
+----------------+
| tb_user        |
+----------------+
1 row in set (0.00 sec)

mysql> select * from tb_user;
+----+---------+------+
| id | name    | sex  |
+----+---------+------+
|  1 | Tom     | 1    |
|  2 | Trigger | 0    |
|  3 | Dawn    | 1    |
+----+---------+------+
3 rows in set (0.00 sec)

Gtid方式进行主从同步

GTID(全局事务标识符)主从复制是 MySQL 提供的一种复制方式,它增强了复制的管理和恢复能力。GTID 复制使用全局唯一的事务标识符来追踪和管理事务的复制,从而简化了主从服务器之间的数据同步和故障恢复。以下是关于 GTID 主从复制的详细介绍,包括其工作原理、配置步骤和优缺点。

工作原理

全局事务标识符(GTID)

  • GTID 是一个唯一标识符,分配给每个事务。它由主服务器生成,并在二进制日志中记录。
  • 格式通常是 UUID:事务ID,其中 UUID 是主服务器的唯一标识,事务ID 是事务的序列号。

主服务器

  • 主服务器将每个事务记录到二进制日志中,并为每个事务分配一个 GTID。
  • 主服务器的 GTID 集合表示已提交的事务的完整列表。

从服务器

  • 从服务器从主服务器获取二进制日志,并应用其中的事务。
  • 从服务器维护一个 GTID 集合,记录已经应用的事务。

复制过程

  • 从服务器请求主服务器的 GTID 事务。
  • 主服务器传输含 GTID 的二进制日志到从服务器。
  • 从服务器应用这些事务,并更新其 GTID 集合。

自动故障恢复

  • 在故障恢复过程中,从服务器可以自动重新同步主服务器的事务,因为 GTID 提供了唯一的事务标识,无需手动指定日志位置。

首先恢复原先的初始环境,进行操作,避免上面做过的干扰。

配置master

修改配置文件 /etc/my.cnf,在配置文件末尾追加即可。

server-id = 1
log-bin = mysql-bin
enforce-gtid-consistency = ON
gtid-mode = ON
binlog_format = ROW
  • server-id:唯一标识符,用于区分主从服务器。
  • log-bin:启用二进制日志。
  • enforce-gtid-consistency:确保所有事务具有一致的 GTID。
  • gtid-mode:启用 GTID。
  • binlog_format:指定二进制日志格式为 ROW,这是 GTID 复制的要求。

重新启动 MySQL 服务以应用这些更改

sudo systemctl restart mysqld

创建复制用户

在主服务器上创建一个用于复制的用户:

CREATE USER 'replica'@'%' IDENTIFIED BY '123456';
GRANT REPLICATION SLAVE ON *.* TO 'replica'@'%';
ALTER USER 'replica'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
FLUSH PRIVILEGES;

获取主服务器状态

运行以下命令来获取主服务器的当前状态:

SHOW MASTER STATUS;

配置slave

修改从服务器配置文件

编辑从服务器的 MySQL 配置文件 my.cnf

[mysqld] 部分添加以下配置:

server-id = 2
enforce-gtid-consistency = ON
gtid-mode = ON
log-bin = mysql-bin
relay-log = mysql-relay-bin
  • server-id:唯一标识符,用于区分从服务器。
  • enforce-gtid-consistency:确保所有事务具有一致的 GTID。
  • gtid-mode:启用 GTID。
  • log-bin:启用二进制日志。
  • relay-log:指定中继日志文件。

 重新启动 MySQL 服务以应用这些更改

sudo systemctl restart mysqld

配置复制

在从服务器上运行以下 SQL 命令来配置复制:

CHANGE MASTER TO
  MASTER_HOST='192.168.226.100',
  MASTER_USER='replica',
  MASTER_PASSWORD='123456',
  MASTER_AUTO_POSITION=1;
  • MASTER_HOST:主服务器的 IP 地址或主机名。
  • MASTER_USERMASTER_PASSWORD:用于复制的用户和密码。
  • MASTER_AUTO_POSITION=1:启用 GTID 自动定位。

启动复制进程

START SLAVE;

检查复制状态

使用以下命令来检查复制是否正常运行:

SHOW SLAVE STATUS\G

确保 Slave_IO_RunningSlave_SQL_Running 两个字段的值都为 Yes,并且 Last_Error 字段为空,这表明从服务器正在正常复制主服务器上的数据。

测试 

在主库中执行

CREATE DATABASE test_db;
USE test_db;
CREATE TABLE test_table (id INT PRIMARY KEY, value VARCHAR(255));
INSERT INTO test_table (id, value) VALUES (1, 'Test Value 1');
INSERT INTO test_table (id, value) VALUES (2, 'Test Value 2');
INSERT INTO test_table (id, value) VALUES (3, 'Test Value 3');
COMMIT;
SHOW MASTER STATUS;

在从库中查看

SHOW DATABASES;
USE test_db;
SELECT * FROM test_table;
SHOW SLAVE STATUS\G;

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

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

相关文章

初识C语言指针(4)

目录 1. 字符指针变量 2. 数组指针变量 3. ⼆维数组传参的本质 4. 函数指针变量 5. typedef 关键字 6. 函数指针数组 结语 1. 字符指针变量 字符指针变量就是存储字符或字符串首字符地址的变量&#xff0c;字符指针变量有2种使用方式。 最常用的使用方式&#xff1a…

pikachu-ssrf_redis

目录 SSRF 1、SSRF漏洞介绍&#xff1a; 2、SSRF漏洞原理&#xff1a; 3、SSRF漏洞利用手段&#xff1a; 4、SSRF漏洞绕过方法&#xff1a; SSRF(curl)用法 1、通过网址访问链接 2、利用file协议查看本地文件 3、dict协议扫描内网主机开放端口 4.gopher&#xff1a;威…

神经网络算法 - 一文搞懂Gradient Descent(梯度下降)

本文将从梯度下降的本质、梯度下降的原理、梯度下降的算法 三个方面&#xff0c;带您一文搞懂梯度下降 Gradient Descent | GD。 梯度下降 机器学习“三板斧”&#xff1a;选择模型家族&#xff0c;定义损失函数量化预测误差&#xff0c;通过优化算法找到最小化损失的最优模型参…

docker GBase 8sV8.8使用的常见错误

因项目需要GBase 8sV8.8数据库环境&#xff0c;所以在搭建使用过程中有一些坑和错误&#xff0c;所以记录和分享 docker搭建 docker.com获取镜像 docker pull liaosnet/gbase8s:v8.8_3503x1_x64创建容器 docker run -d -p 19088:9088 \-e SERVERNAMEgbase01 \-e USERPASSGB…

CCleaner:系统优化与隐私保护的双重守护

大家好&#xff0c;今天电脑天空要介绍一款非常实用的系统优化工具——CCleaner。如果你的电脑运行速度越来越慢&#xff0c;或者担心隐私泄露问题&#xff0c;那么CCleaner可能是你的解决方案。 系统优化&#xff0c;一键搞定 CCleaner能够智能识别并清理电脑中的临时文件、…

基于Spring Boot的文字识别系统

前端使用htmlcssjs&#xff0c;后端使用Spring Boot&#xff0c;数据库使用mysql&#xff0c;识别算法有两个&#xff0c;一个是使用百度OCR接口&#xff0c;一个是自己写一个python&#xff0c;用flask包装。 其中百度OCR接口可以去免费申请&#xff0c;然后把appid、apikey、…

k8s 部署Ruoyi-Vue-Plus之vue打包镜像

在这里插入图片描述 在这篇文章中&#xff0c;解释如何通过容器化&#xff08;Docker&#xff09;来打包和部署前端项目&#xff0c;替代之前手动维护版本的方式 1.nginx配置 在 ruoyi-ui 项目的根目录下创建一个 nginx.conf 文件, 我没有使用monitor-admin和xxljob-admin模块…

【吊打面试官系列】为什么Mysql的索引结果用B+树

Mysql如何使用索引查询数据的 下图是一个B树我们的目标节点是 13 我们先根据 13 锁定非叶子节点 2&#xff0c;计算机进行一次IO操作把叶子节点取出来&#xff0c;在叶子节点2中找到叶子节点5 里面有 13 计算机也要进行一次IO将数据取到内存里然后读数据 一共进行了 3次磁盘I…

MATLAB 快速计算点到二维直线的距离并可视化(79)

计算点到二维直线距离,主要是还提供了具体的可视化方法 MATLAB 快速计算点到二维直线的距离并可视化(79) 一、算法介绍二、算法实现1.代码2.效果一、算法介绍 问题:给定一条直线的方程 (Ax + By + C = 0) 和一个点 ((x_0, y_0)),点到直线的距离 (d) 方法:运行此脚本后,…

区块链的搭建与运维4

区块链的搭建与运维4 任务一:区块链产品需求分析与方案设计 本任务需要依据项目背景完成需求分析与方案设计,具体要求如下: 按照新能源系统的需求规定,用户可以通过本系统实现能源管理与交易、新能源资产管理与交易、用户管理等功能。本系统软件部分可划分为浏览器页面、服务…

Tina-SDK开发

开发环境搭建 获取TinaSDK源码 Tina-SDKV2.0源码网盘链接&#xff1a;https://pan.baidu.com/s/13uKlqDXImmMl9cgKc41tZg?pwdqcw7 上传到ubuntu&#xff0c;创建文件夹用来保存源码&#xff1a; ubuntuubuntu1804:~$ mkdir Tina_SDK ubuntuubuntu1804:~$ cd Tina_SDK/ ubu…

【单片机】PIC16F1719 单片机,UART,串口发送

/** 文件: main.c* 目标: PIC16F1719* 编译器: XC8 v1.41* 开发环境: MPLABX v4.10** 创建日期: 2023年8月4日 下午2:58** PIC16F1719* +-----------------+* VPP -> 1 : RE3/MCLR/VPP : 40 <> PGD/RB7* <>…

【二分-BM19 寻找峰值】

题目 BM19 寻找峰值 描述 给定一个长度为n的数组nums&#xff0c;请你找到峰值并返回其索引。数组可能包含多个峰值&#xff0c;在这种情况下&#xff0c;返回任何一个所在位置即可。 分析 对一个左闭右闭的区间二分&#xff0c;通过改变l 或r 的值将原始查找区间缩小一半…

【HarmonyOS NEXT星河版开发实战】页面跳转

个人主页→VON 收录专栏→鸿蒙综合案例开发​​​​​ 代码及其图片资源会发布于gitee上面&#xff08;已发布&#xff09; gitee地址https://gitee.com/wang-xin-jie234 目录 前言 界面功能介绍 界面构建过程 知识点概述 页面跳转 页面传参 全套源代码 Index页面 Sec…

API 的多版本管理,如何在 Apifox 中操作?

开放 API 是技术团队向外部提供服务和数据的关键手段。随着业务的发展和技术的更新&#xff0c;API 也需要不断进行版本迭代。这种迭代通常是为了满足市场需求&#xff0c;优化现有功能&#xff0c;增加新特性&#xff0c;或者修复漏洞。 在多个版本共存的情况下&#xff0c;团…

pikachu靶场----ssrf实现

目录 ssrf简介 SSRF&#xff08;curl&#xff09; 1.后端代码分析 2.http协议连接本地文件 3.file协议读取C盘中的文件。 4.dict协议扫描内网其他主机的端口开放情况 5.使用burp扫描内网其他主机的端口开放情况 ssrf简介 SSRF(Server-Side Request Forgery:服务器端请求…

AI引领边缘计算变革,打造嵌入式产业新未来

在科技的洪流中&#xff0c;AI&#xff08;人工智能&#xff09;如同一位强大的领航者&#xff0c;正引领着边缘计算发生深刻的变革&#xff0c;为嵌入式产业开辟出一片充满无限可能的新未来。 曾经&#xff0c;我们难以想象智能设备能够在无需依赖云端强大计算能力的情况下&am…

.NET_WebForm_layui控件使用及与webform联合使用

使用layui控件填充布局 操作流程&#xff1a; 创建项目。引入css以及js样式。使用栅格样式进行布局。官网查找控件元素&#xff08;此处以图标和按钮为例&#xff09;。将对应的元素从官网复制下来。在布局中填充。很简单的操作&#xff0c;其他控件也同理&#xff0c;不再赘…

GlusterFS-分布式文件系统:概念、案例

目录 GlusterFS 简介 概念 文件系统 通信方式 Cluster特点 扩展性和高性能 高可用性 全局统一命名空间 弹性卷管理 基于标准协议 GlusterFS术语 &#xff08;1&#xff09;Brick &#xff08;2&#xff09;Volume &#xff08;3&#xff09;FUSE &#xff08;4…

因http连接问题产生的生产事故

早上7点接到报警&#xff08;有机器oom报警&#xff0c;且负载很高&#xff0c;运维看阿里云监控上的tcp链接&#xff09;&#xff0c;研发和运维小伙伴一起分析&#xff0c;因为怕影响线上客户&#xff0c;直接选择了服务回退&#xff08;昨天&#xff09;。 服务回退后&…