【MySQL备份】Percona XtraBackup

这份文档针对的是最新发布的版本:Percona XtraBackup 2.4.29(发布说明)。

Percona XtraBackup是一款针对MySQL系列服务器的开源热备份工具,在备份过程中不会锁定您的数据库。它能够对MySQL 5.1、5.5、5.6和5.7服务器以及带有XtraDB的Percona服务器上的InnoDB、XtraDB和MyISAM表进行数据备份。

注意

从Percona XtraBackup 2.1版本开始,已移除对InnoDB 5.1内置版本的支持。

如需了解更多关于其众多高级功能的概述,包括功能对比,请参阅“关于Percona XtraBackup”。

无论是对24小时高负载服务器还是低交易量环境,Percona XtraBackup都旨在实现无缝备份,而不会中断生产环境中服务器的性能。我们还提供商业支持合同。

重要提示

Percona XtraBackup 2.4 不支持对 MySQL 8.0Percona Server for MySQL 8.0 或 Percona XtraDB Cluster 8.0 中创建的数据库进行备份。请为8.0版本的数据库使用Percona XtraBackup 8.0。

一 介绍

1 关于 Percona XtraBackup

Percona XtraBackup是全球唯一一款开源且免费的MySQL热备份软件,能够为InnoDB和XtraDB数据库执行非阻塞备份。使用Percona XtraBackup,您可以获得以下好处:

  • 快速且可靠的备份完成
  • 备份期间事务处理不间断
  • 节省磁盘空间和网络带宽
  • 自动备份验证
  • 由于恢复时间更快,因此系统正常运行时间更长

请查看Percona软件和平台生命周期中的兼容性矩阵,了解Percona XtraBackup支持哪些版本的MySQL、MariaDB以及Percona Server for MySQL,并且支持对任何类型的备份进行加密。

Percona XtraBackup支持对InnoDB、Percona XtraDB Cluster和HailDB存储引擎进行非阻塞备份。此外,在备份结束时短暂暂停写入操作,Percona XtraBackup还可以备份以下存储引擎:MyISAM、Merge(.MRG)和Archive(.ARM),包括分区表、触发器和数据库选项。在复制非InnoDB数据时,InnoDB表仍然会被锁定。对于启用了更改页面跟踪的Percona Server with Percona XtraDB Cluster,支持快速增量备份。

重要提示

  • Percona XtraBackup 2.4仅支持Percona XtraDB Cluster 5.7。
  • Percona XtraBackup 2.4不支持MyRocks存储引擎或TokuDB存储引擎。
  • Percona XtraBackup与MariaDB 10.3及更高版本不兼容。

Percona的企业级商业MySQL支持合同包括了对Percona XtraBackup的支持。我们建议您为关键的生产环境部署提供支持。

Percona XtraBackup有哪些功能?

以下是Percona XtraBackup功能的简短列表。更多信息请参见文档。

  • 在不暂停数据库的情况下创建InnoDB热备份
  • 对MySQL进行增量备份
  • 将压缩的MySQL备份流式传输到另一台服务器
  • 在线在MySQL服务器之间移动表
  • 轻松创建新的MySQL复制副本
  • 在不增加服务器负载的情况下备份MySQL

备份锁是Percona Server 5.6+中提供的FLUSH TABLES WITH READ LOCK的轻量级替代方案。Percona XtraBackup会自动使用它们来复制非InnoDB数据,以避免阻塞修改InnoDB表的DML查询。

Percona XtraBackup根据每秒IO操作的数量进行限速。

在准备紧凑备份时,Percona XtraBackup会跳过次要索引页并在之后重新创建它们。

无论InnoDB版本如何,Percona XtraBackup都可以从完整备份中导出单个表。

使用Percona XtraBackup导出的表可以导入到Percona Server 5.1、5.5或5.6+或MySQL 5.6+中。

2  Percona XtraBackup 如何工作

Percona XtraBackup基于InnoDB的崩溃恢复功能。它首先复制您的InnoDB数据文件,这些数据文件在内部是不一致的;但随后它会对这些文件执行崩溃恢复操作,使它们再次成为一致且可用的数据库。

这之所以可行,是因为InnoDB维护了一个重做日志(也称为事务日志)。该日志记录了InnoDB数据的所有更改。InnoDB启动时,会检查数据文件和事务日志,并执行两个步骤。它将已提交的事务日志条目应用到数据文件中,并对任何修改了数据但未提交的事务执行回滚操作。

Percona XtraBackup的工作原理是,在开始时记住日志序列号(LSN),然后复制数据文件。这个过程需要一些时间,因此如果文件正在更改,则它们会反映数据库在不同时间点的状态。同时,Percona XtraBackup会运行一个后台进程来监控事务日志文件,并从中复制更改。Percona XtraBackup需要持续这样做,因为事务日志是以循环方式写入的,并且可以被重用。自Percona XtraBackup开始执行以来,它需要事务日志记录来记录对数据文件的每次更改。

在可能的情况下,Percona XtraBackup会使用备份锁作为FLUSH TABLES WITH READ LOCK的轻量级替代方案。此功能在Percona Server for MySQL 5.6+中可用。Percona XtraBackup会自动使用此功能来复制非InnoDB数据,以避免阻塞修改InnoDB表的DML查询。当服务器支持备份锁时,xtrabackup将首先复制InnoDB数据,运行LOCK TABLES FOR BACKUP并复制MyISAM表和.frm文件。完成这些操作后,将开始备份文件。它将备份.frm、.MRG、.MYD、.MYI、.TRG、.TRN、.ARM、.ARZ、.CSM、.CSV、.par和.opt文件。

注意

仅对MyISAM和其他非InnoDB表进行锁定,并且仅在Percona XtraBackup完成备份所有InnoDB/XtraDB数据和日志后进行。在可能的情况下,Percona XtraBackup会使用备份锁作为FLUSH TABLES WITH READ LOCK的轻量级替代方案。此功能在Percona Server for MySQL 5.6+中可用。Percona XtraBackup会自动使用此功能来复制非InnoDB数据,以避免阻塞修改InnoDB表的DML查询。

之后,xtrabackup将使用LOCK BINLOG FOR BACKUP来阻止所有可能会更改二进制日志位置或Exec_Master_Log_Pos或Exec_Gtid_Set(即SHOW MASTER/SLAVE STATUS报告的与复制副本上当前SQL线程状态对应的源二进制日志坐标)的操作。然后,xtrabackup将完成复制REDO日志文件并获取二进制日志坐标。完成此操作后,xtrabackup将解锁二进制日志和表。

最后,二进制日志位置将被打印到STDERR,如果一切正常,xtrabackup将退出并返回0。

请注意,xtrabackup的STDERR不会写入任何文件。您需要将其重定向到文件,例如,xtrabackup OPTIONS 2> backupout.log。

它还会在备份目录中创建以下文件。

在准备阶段,Percona XtraBackup将使用复制的事务日志文件对复制的数据文件执行崩溃恢复。完成后,数据库即可恢复和使用。

备份的MyISAM和InnoDB表最终将相互一致,因为在准备(恢复)过程之后,InnoDB的数据会向前滚动到备份完成时的点,而不是回滚到开始时的点。这个时间点与FLUSH TABLES WITH READ LOCK的时间点相匹配,因此MyISAM数据和准备好的InnoDB数据是同步的。

xtrabackup和innobackupex工具都提供了许多前面解释中未提及的功能。手册中进一步详细解释了每个工具的功能。简而言之,这些工具允许您执行诸如流式和增量备份等操作,这些操作可以结合复制数据文件、复制日志文件以及将日志应用到数据来实现。

恢复备份

要使用xtrabackup恢复备份,您可以使用xtrabackup --copy-back或xtrabackup --move-back选项。

xtrabackup将读取my.cnf中的datadir、innodb_data_home_dir、innodb_data_file_path、innodb_log_group_home_dir变量,并检查这些目录是否存在。

它将首先复制MyISAM表、索引等(.frm、.MRG、.MYD、.MYI、.TRG、.TRN、.ARM、.ARZ、.CSM、.CSV、par和.opt文件),然后是InnoDB表和索引,最后是日志文件。在复制文件时,它会保留文件的属性,因此在启动数据库服务器之前,您可能需要将文件的所有权更改为mysql,因为备份文件的所有者将是创建备份的用户。

另外,还可以使用xtrabackup --move-back选项来恢复备份。此选项与xtrabackup --copy-back类似,唯一不同的是,它不是复制文件,而是将它们移动到目标位置。由于此选项会删除备份文件,因此请谨慎使用。当磁盘空间不足以同时存储数据文件和其备份副本时,此选项很有用。

3 理解版本号 

版本号用于标识产品的发布版本。该产品包含发布时最新的通用可用(GA)功能。


Percona采用语义版本号,遵循基础版本和次要构建的格式。Percona为每个次要构建发布分配唯一且递增的非负整数。版本号结合了Percona XtraBackup的基础版本号和次要构建版本号。

Percona并不会为MySQL 5.7的每个发布版本都发布一个新的Percona XtraBackup 2.4版本。Percona XtraBackup 2.4与MySQL 5.7的更新版本兼容。

Percona XtraBackup 2.4.26的版本号定义了以下信息:

  • 基础版本 - 最左边的数字表示基于MySQL 5.7的Percona XtraBackup的版本。基础版本升级时,次要构建版本会重置为0。
  • 次要构建版本 - 一个内部编号,表示软件的版本。每次发布Percona XtraBackup时,构建版本都会增加1。

二 安装

官方文档支持多种安装方式 使用RPM包 源码编译 ,二进制压缩包等,我们这里使用下载的rpm包进行安装

使用下载的rpm包安装Percona XtraBackup

下载页面:  https://www.percona.com/downloads

下载页面为您的架构下载所需系列的包。以下示例将下载适用于CentOS 7的Percona XtraBackup 2.4.28发行版包:

wget https://downloads.percona.com/downloads/Percona-XtraBackup-2.4/Percona-XtraBackup-2.4.28/binary/redhat/7/x86_64/percona-xtrabackup-24-2.4.28-1.el7.x86_64.rpm

现在,您可以通过运行以下命令来安装Percona XtraBackup:

yum install -y percona-xtrabackup-24-2.4.28-1.el7.x86_64.rpm

卸载Percona XtraBackup

要完全卸载Percona XtraBackup,您需要删除所有已安装的软件包。

删除软件包:

yum remove percona-xtrabackup

三 要求

1 连接和所需权限

Percona XtraBackup在创建备份、在某些场景下准备备份以及恢复备份时,需要能够连接到数据库服务器并在服务器上和数据目录(datadir)执行操作。为了执行这些操作,必须满足其执行时的权限和许可要求。

权限指的是系统用户在数据库服务器上被允许执行的操作。这些权限在数据库服务器上设置,并且仅适用于数据库服务器中的用户。

许可是指允许用户在系统上执行操作,如读取、写入或执行某个目录中的文件,或启动/停止系统服务。这些许可在系统级别设置,并且仅适用于系统用户。

无论使用xtrabackup还是innobackupex,都涉及两个主体:调用程序的用户(系统用户)和在数据库服务器上执行操作的用户(数据库用户)。请注意,尽管它们可能有相同的用户名,但它们在不同的地方是不同的用户。

本文档中所有对innobackupex和xtrabackup的调用都假设系统用户具有适当的许可,并且您除了提供执行操作所需的选项外,还提供了连接数据库服务器的相关选项,同时数据库用户具有足够的权限。

连接到服务器

连接到服务器的数据库用户及其密码由xtrabackup的--user和--password选项指定:

$ xtrabackup --user=DVADER --password=14MY0URF4TH3R --backup \--target-dir=/data/bkps/
$ innobackupex --user=DBUSER --password=SECRET /path/to/backup/dir/
$ innobackupex --user=LUKE  --password=US3TH3F0RC3 --stream=tar ./ | bzip2 -

如果您不使用xtrabackup的--user选项,Percona XtraBackup将假定执行它的系统用户的名称是数据库用户名。

其他连接选项

根据您的系统,您可能需要指定以下一个或多个选项来连接到服务器:

  • --port:使用TCP/IP连接到数据库服务器时要使用的端口。
  • --socket:连接到本地数据库时要使用的套接字。
  • --host:使用TCP/IP连接到数据库服务器时要使用的主机。

这些选项将原封不动地传递给mysql子进程,详见mysql --help。

注意:在多个服务器实例的情况下,为了xtrabackup能够与正确的服务器通信,必须指定正确的连接参数(端口、套接字、主机)。

所需许可和权限

连接到服务器后,为了执行备份,您需要在服务器的数据目录的文件系统级别具有读取和执行权限。

数据库用户需要对要备份的表/数据库具有以下权限:

  • RELOADLOCK TABLES(除非指定了--no-lock选项),以便在开始复制文件之前执行FLUSH TABLES WITH READ LOCK和FLUSH ENGINE LOGS,并且在使用备份锁时需要此权限来LOCK TABLES FOR BACKUP和LOCK BINLOG FOR BACKUP。
  • REPLICATION CLIENT以获得二进制日志位置。
  • CREATE TABLESPACE以导入表(见恢复单个表)。
  • PROCESS以运行SHOW ENGINE INNODB STATUS(这是必需的),并且可选地查看服务器上正在运行的所有线程(见改进的FLUSH TABLES WITH READ LOCK处理)。
  • SUPER以在复制环境中启动/停止复制线程,使用XtraDB Changed Page Tracking进行增量备份,以及进行改进的FLUSH TABLES WITH READ LOCK处理。
  • CREATE权限以创建PERCONA_SCHEMA.xtrabackup_history数据库和表。
  • ALTER权限以升级PERCONA_SCHEMA.xtrabackup_history数据库和表。
  • INSERT权限以向PERCONA_SCHEMA.xtrabackup_history表添加历史记录。
  • SELECT权限以使用innobackupex --incremental-history-name或innobackupex --incremental-history-uuid功能来查找PERCONA_SCHEMA.xtrabackup_history表中的innodb_to_lsn值。

这些权限的使用情况解释可以在《Percona XtraBackup的工作原理》中找到。

创建一个具有执行完整备份所需最低权限的数据库用户的SQL示例如下:

mysql> CREATE USER 'bkpuser'@'localhost' IDENTIFIED BY 's3cret';
mysql> GRANT RELOAD, LOCK TABLES, PROCESS, REPLICATION CLIENT ON *.* TO'bkpuser'@'localhost';
mysql> FLUSH PRIVILEGES;

2 配置xtrabackup

xtrabackup的所有配置都是通过选项完成的,这些选项的行为与标准的MySQL程序选项完全相同:它们既可以在命令行中指定,也可以通过如/etc/my.cnf这样的文件指定。

xtrabackup二进制文件会按顺序读取任何配置文件中的[mysqld]和[xtrabackup]部分。这样做是为了让它可以从您现有的MySQL安装中读取选项,比如datadir或一些InnoDB选项。如果您想覆盖这些选项,只需在[xtrabackup]部分中指定它们,并且由于它是后面读取的,因此会优先生效。

如果您不想在my.cnf中放置任何配置,也不需要这样做。您可以直接在命令行中指定选项。通常,您可能觉得在my.cnf文件的[xtrabackup]部分中唯一方便放置的是target_dir选项,用于设置备份文件默认放置的目录,例如:

[xtrabackup]
target_dir = /data/backups/mysql/

本手册将假设您没有为xtrabackup设置任何基于文件的配置,因此它总是会显式地显示所使用的命令行选项。有关所有配置选项的详细信息,请参阅选项和变量参考。

xtrabackup二进制文件在my.cnf文件中接受的语法并不完全与mysqld服务器二进制文件相同。出于历史原因,mysqld服务器二进制文件接受带有--set-variable=<variable>=<value>语法的参数,但xtrabackup不理解这种语法。如果您的my.cnf文件中有这样的配置指令,您应该将它们重写为--variable=value语法。

3 系统配置和NFS卷

在大多数系统上,xtrabackup工具不需要特殊配置。但是,xtrabackup的--target-dir所在的存储必须在调用fsync()时表现正常。特别是,我们注意到,未使用sync选项挂载的NFS卷可能不会真正同步数据。因此,如果您将备份存储在使用async选项挂载的NFS卷上,然后尝试从也挂载了该卷的不同服务器准备备份,数据可能会显示为损坏。您可以使用sync挂载选项来避免这个问题。

四 备份场景

1 全备

(1)Creating a backup 创建全备

要创建备份,请使用带有--backup选项的xtrabackup命令。您还需要指定--target-dir选项,该选项定义了备份存储的位置。如果InnoDB数据或日志文件未存储在相同目录中,您可能还需要指定这些文件的位置。如果目标目录不存在,xtrabackup将创建它。如果目录已存在且为空,xtrabackup将成功执行。xtrabackup不会覆盖现有文件,如果尝试这样做,将会遇到操作系统错误17(文件已存在)并导致失败。

要启动备份过程,请运行:

$ xtrabackup --backup --target-dir=/data/backups/

这将在/data/backups/目录下存储备份。如果您指定的是相对路径,则目标目录将相对于当前目录。

在备份过程中,您应该会看到大量输出,显示数据文件正在被复制,以及日志线程反复扫描日志文件并从中复制内容。以下是一个示例,显示了后台日志线程正在扫描日志,以及一个文件复制线程正在处理ibdata1文件:

最后,您应该会看到类似以下的内容,其中<LSN>的值将取决于您的系统:

xtrabackup: 已复制lsn从(<SLN>)到(<LSN>)的事务日志。

注意

日志复制线程每秒检查一次事务日志,以查看是否有需要复制的新日志记录写入,但有可能日志复制线程无法跟上写入事务日志的量,并且当日志记录在被读取之前被覆盖时,会遇到错误。

备份完成后,目标目录将包含如下文件,假设您有一个名为test.tbl1的单个InnoDB表,并且正在使用MySQL的innodb_file_per_table选项:

$ ls -lh /data/backups/

结果如下:

备份可能需要很长时间,具体取决于数据库的大小。但您可以随时安全地取消,因为它不会修改数据库。

下一步是准备恢复备份。

(2) Preparing a backup 准备恢复

使用xtrabackup --backup选项进行备份后,您需要先准备它,然后才能恢复。在准备之前,数据文件并不是时间点一致的,因为它们在程序运行时是在不同时间复制的,而且在这个过程中可能会发生变化。如果您尝试使用这些数据文件启动InnoDB,它将检测到损坏并自行崩溃,以防止您在损坏的数据上运行。xtrabackup --prepare步骤可以使文件在某一瞬间完全一致,这样您就可以在它们上面运行InnoDB。

您可以在任何机器上运行准备操作;它不需要在原始服务器或您打算恢复的服务器上。您可以将备份复制到实用程序服务器并在那里准备它。

注意

您可以使用较新的Percona XtraBackup版本来准备使用较旧版本创建的备份,但反之则不行。在不支持的服务器版本上准备备份时,应使用支持该服务器版本的最新Percona XtraBackup发行版。例如,如果有人使用Percona XtraBackup 1.6创建了MySQL 5.0的备份,那么使用Percona XtraBackup 2.3来准备备份是不受支持的,因为Percona XtraBackup 2.1中已移除了对MySQL 5.0的支持。相反,应该使用2.0系列的最新版本。

在准备操作期间,xtrabackup会启动一种嵌入在其内部的修改过的InnoDB(它链接到的库)。这些修改是必要的,以禁用InnoDB的标准安全检查,比如抱怨日志文件大小不正确,这些对于处理备份来说是不合适的。这些修改仅适用于xtrabackup二进制文件;您不需要修改InnoDB即可使用xtrabackup进行备份。

准备步骤使用此嵌入的InnoDB对复制的数据文件执行崩溃恢复,并使用复制的日志文件。准备步骤的使用非常简单:您只需运行xtrabackup --prepare选项并告诉它要准备哪个目录,例如,要准备之前创建的备份,请运行:

$ xtrabackup --prepare --target-dir=/data/backups/

完成后,您应该会看到InnoDB关闭并显示如下消息,其中LSN的值将取决于您的系统:

InnoDB: Shutdown completed; log sequence number 137345046
160906 11:21:01 completed OK!

后续的所有准备操作都不会更改已经准备好的数据文件,您会看到输出显示:

xtrabackup: This target seems to be already prepared.
xtrabackup: notice: xtrabackup_logfile was already used to '--prepare'.

不建议在准备备份时中断xtrabackup进程,因为这可能会导致数据文件损坏,使备份无法使用。如果准备过程被中断,则不保证备份的有效性。

注意

如果您打算让备份成为进一步增量备份的基础,那么在准备备份时应使用xtrabackup --apply-log-only选项,否则您将无法将增量备份应用到它上面。有关准备增量备份的更多详细信息,请参阅相关文档。

(3) Restoring a Backup 恢复备份

警告

备份需要先准备好才能恢复。

$ xtrabackup --copy-back --target-dir=/data/backups/

如果您不想保留备份,可以使用xtrabackup --move-back选项,这将把备份的数据移动到datadir。

如果您不想使用上述任何选项,还可以使用rsynccp来恢复文件。

注意

  • 在恢复备份之前,datadir必须为空。
  • 此外,重要的是要注意,在恢复之前需要关闭MySQL服务器。您不能恢复到正在运行的mysqld实例的datadir(除非在导入部分备份时)。

可以使用以下示例rsync命令来恢复备份:

$ rsync -avrP /data/backup/ /var/lib/mysql/

您应该检查恢复的文件是否具有正确的所有权和权限。

由于文件属性将被保留,在大多数情况下,您需要在启动数据库服务器之前将文件的所有权更改为mysql,因为它们的所有者将是创建备份的用户:

$ chown -R mysql:mysql /var/lib/mysql

现在数据已恢复,您可以启动服务器。

注意

当启用relay-log-info-repository=TABLE时,从备份恢复的实例会在错误日志中出现错误,如下所示:

2019-08-09 12:40:02 69297 [ERROR] Failed to open the relay log '/data/mysql-relay-bin.004349' (relay_log_pos 5534092)

为避免此类问题,请在执行CHANGE MASTER TO之前启用relay_log_recovery或执行RESET SLAVE

中继日志信息已备份,但已创建新的中继日志,这在恢复期间会造成不匹配。

2 增量备份

3 压缩备份

Percona XtraBackup 支持压缩备份:可以使用 xbstream 对本地或流式备份进行压缩或解压缩。

(1)创建压缩备份

要创建压缩备份,您需要使用 xtrabackup 的 --compress 选项:

$ xtrabackup --backup --compress --target-dir=/data/compressed/

xtrabackup --compress 使用 qpress 工具进行压缩,您可以通过 percona-release 包配置工具安装该工具,如下所示:

$ sudo percona-release enable tools
$ sudo apt update
$ sudo apt install qpress

注意

启用存储库:percona-release enable-only tools release。如果您打算将 Percona XtraBackup 与上游 MySQL 服务器结合使用,则只需启用 tools 存储库:percona-release enable-only tools

如果要加快压缩速度,可以使用并行压缩,通过 --compress-threads 选项启用。以下示例将使用四个线程进行压缩:

$ xtrabackup --backup --compress --compress-threads=4 \
--target-dir=/data/compressed/

(2)准备备份

在准备备份之前,您必须解压缩所有文件。Percona XtraBackup 实现了 --decompress 选项,可用于解压缩备份。

 
$ xtrabackup --decompress --target-dir=/data/compressed/

注意

--parallel 可以与 --decompress 选项一起使用,以同时解压缩多个文件。

Percona XtraBackup 不会自动删除压缩文件。为了清理备份目录,请使用 --remove-original 选项。如果未删除文件,在使用 --copy-back 或 --move-back 时,它们不会被复制到或移动到 datadir。

解压文件后,您可以使用 --prepare 选项准备备份:

 
$ xtrabackup --prepare --target-dir=/data/compressed/

检查确认消息

现在,/data/compressed/ 中的文件已准备好供服务器使用。

(3)恢复备份

xtrabackup 有一个 --copy-back 选项,可将备份恢复到服务器的 datadir:

$ xtrabackup --copy-back --target-dir=/data/backups/

该选项将所有相关数据文件复制回服务器的 datadir,该目录由服务器的 my.cnf 配置文件确定。检查输出的最后一行以获取成功消息:

 

复制代码

170223 13:49:13 完成 OK!

复制数据后,验证文件权限。您可能需要调整权限。例如,以下命令更改文件位置的所有者:

 

bash复制代码

$ chown -R mysql:mysql /var/lib/mysql

现在,datadir 包含恢复的数据。您已准备好启动服务器。

 

4 加密备份

参考

Percona XtraBackup

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

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

相关文章

UDP传输协议Linux C语言实战

文章目录 1.UDP简介1.1特点1.2 UDP协议头部格式1.2.1 **UDP头部**&#xff1a;1.2.2 **头部意义**&#xff1a;1.2.3 **头部参数**&#xff1a; 1.3 UDP数据长度控制1.4 UDP协议建立框架 2. 函数介绍2.1 sendto函数2.2 recvform函数2.3 其他函数 3.实例3.1 通用结构体、IPV4结构…

转置卷积的一些理解

转置卷积 当图像输入到卷积网络中&#xff0c;最终生成的特征图的宽高会减小 在语义分割中标签和原始图像大小一致&#xff0c;若输出宽高减小&#xff0c;不利于标签比对 于是使用转置卷积将图像宽高还原 在卷积的时候&#xff0c;通常输入大于输出&#xff0c;可根据输入大小…

【Linux】waitpid函数 及其 非阻塞等待和阻塞等待

父进程等待子进程结束可以通过两种方式实现&#xff1a;阻塞等待和非阻塞等待。这两种方式各有优缺点&#xff0c;适用于不同的场景。 简单来说&#xff1a; 阻塞等待&#xff1a;先等你&#xff0c;我再继续 非阻塞等待&#xff1a;不等你&#xff0c;我继续做自己的事&…

使用Python实现某易云音乐歌曲下载

前言 在这篇文章中,我们将探讨如何通过Python结合JavaScript代码来逆向网易云音乐的API接口,以获取并下载指定歌曲。请注意,本文仅用于技术学习与交流目的,实际使用时请遵守相关法律法规及服务条款。 目标网站 1. 准备工作 首先,我们需要安装一些必要的库: execjs:用…

NVIDIA RTX 5080移动版GPU真身首曝!全系要用GDDR7

英伟达下一代移动版GPU的神秘面纱似乎正在揭开&#xff0c;Moore’s Law is Dead的最新视频首次曝光了疑似RTX 5080移动版GPU的工程样品照片。 这款工程样品印有N22W-ES-A1&#xff0c;与Clevo的下一代笔记本主板规格表相匹配&#xff0c;表明该芯片确实基于NVIDIA的下一代芯片…

java 提示 避免用Apache Beanutils进行属性的copy。

避免用Apache Beanutils进行属性的copy。 Inspection info: 避免用Apache Beanutils进行属性的copy。 说明&#xff1a;Apache BeanUtils性能较差&#xff0c;可以使用其他方案比如Spring BeanUtils, Cglib BeanCopier。 TestObject a new TestObject(); TestObject b new Te…

Cadence元件A属性和B属性相互覆盖

最近在使用第三方插件集成到Cadence,协助导出BOM到平台上&#xff0c;方便对BOM进行管理和修改&#xff0c;结果因为属性A和属性B不相同&#xff0c;导致导出的BOM错误。如下图&#xff1a; ​​ 本来我们需要导出Q12&#xff0c;结果给我们导出了Q13&#xff0c;或者反之&…

SpringBoot实现的高效民宿预订平台

2相关技术 2.1 MYSQL数据库 MySQL是一个真正的多用户、多线程SQL数据库服务器。 是基于SQL的客户/服务器模式的关系数据库管理系统&#xff0c;它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等&#xff0c;非常…

AWD的复现

学习awd的相关资料&#xff1a;速成AWD并获奖的学习方法和思考记录- Track 知识社区 - 掌控安全在线教育 - Powered by 掌控者&#xff08;包含使用脚本去批量修改密码&#xff09; 在复现之前去了解了以下AWD的相关脚本 资料&#xff1a;AWD批量攻击脚本使用教程-CSDN博客 …

13_渲染器的设计

目录 渲染器与响应式系统的结合渲染器的基本概念自定义渲染器 渲染器与响应式系统的结合 渲染器与响应式系统是相辅相成的&#xff0c;渲染器负责将响应式系统中的响应式数据渲染到视图中&#xff0c;而响应式系统则负责监听数据的变化并通知渲染器进行更新。 渲染器在浏览器…

大数据-184 Elasticsearch - 原理剖析 - DocValues 机制原理 压缩与禁用

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; 目前已经更新到了&#xff1a; Hadoop&#xff08;已更完&#xff09;HDFS&#xff08;已更完&#xff09;MapReduce&#xff08;已更完&am…

在 Docker 中搭建 PostgreSQL16 主从同步环境

1. 环境搭建 本文介绍了如何在同一台机器上使用 Docker 容器搭建 PostgreSQL 的主从同步环境。通过创建互联网络和配置主库及从库&#xff0c;详细讲解了数据库初始化、角色创建、数据同步和验证步骤。主要步骤包括设置主库的连接信息、创建用于复制的角色、使用 pg_basebacku…

成都跃享未来教育咨询有限公司抖音小店新生态

在数字化浪潮席卷全球的今天&#xff0c;教育行业正经历着前所未有的变革与升级。作为一座历史悠久而又充满活力的城市&#xff0c;成都凭借其深厚的文化底蕴和前瞻性的发展眼光&#xff0c;孕育了众多创新型企业。其中&#xff0c;成都跃享未来教育咨询有限公司&#xff08;以…

计算机专业大学四年的学习路线(非常详细),零基础入门到精通,看这一篇就够了

前言 许多学子选择踏上计算机这条充满挑战与机遇的道路。但在大学四年中&#xff0c;如何规划自己的学习路线&#xff0c;才能在毕业时脱颖而出&#xff0c;成为行业的佼佼者呢&#xff1f; 第一学年&#xff1a;基础知识的奠基 1.1 课程安排 在大学的第一年&#xff0c;重…

spark:Structured Streaming介绍

文章目录 1. Structured Streaming介绍1.1 实时计算和离线计算1.1.1 实时计算1.1.2 离线计算 1.2 有界和无界数据 2. 简单使用3. 编程模型4. 数据处理流程4.1 读取数据Source4.1.1 文件数据处理 4.2 计算操作 Operation4.3 数据输出 Sink4.3.1 输出模式4.3.2 指定输出位置4.3.3…

JVM篇(运行时数据区(实战课程学习总结)

目录 学习前言 一、运行时数据区 1. JVM运行时数据区规范 2. Hotspot运行时数据区 3. 分配JVM内存空间 分配堆的大小 分配方法区的大小 分配线程空间的大小 二、程序计数器 1. 作用 2. 存储的数据 3. 异常 三、Java虚拟机栈 1. 栈帧 1.1. 局部变量表 存储内容 …

【已解决】C# NPOI如何在Excel文本中增加下拉框

前言 上图&#xff01; 解决方法 直接上代码&#xff01;&#xff01;&#xff01;&#xff01;综合了各个大佬的自己修改了一下&#xff01;可以直接规定在任意单元格进行设置。 核心代码方法块 #region Excel增加下拉框/// <summary>/// 增加下拉框选项/// </s…

12. 命令行

Hyperf 的命令行默认由 hyperf/command 组件提供&#xff0c;而该组件本身也是基于 symfony/console 的抽象。 一、安装 通常来说该组件会默认存在&#xff0c;但如果您希望用于非 Hyperf 项目&#xff0c;也可通过下面的命令依赖 hyperf/command 组件。 composer require hype…

使用 Spring 框架构建 MVC 应用程序:初学者教程

Spring Framework 是一个功能强大、功能丰富且设计精良的 Java 平台框架。它提供了一系列编程和配置模型&#xff0c;旨在简化和精简 Java 中健壮且可测试的应用程序的开发过程。 人们常说 Java 太复杂了&#xff0c;构建简单的应用程序需要很长时间。尽管如此&#xff0c;Jav…

Unity/C#使用EPPlus读取和写入Excel

简介&#xff1a;本篇使用EPPlus来将数据写入Excel&#xff0c;如果需要使用NPOI那可以阅读我之前文档使用NPOI创建及写入数据_npoi 模板 写数据-CSDN博客 一、安装EPPlus 这里使用 .unitypackage 文件形式安装 1.1下载NuGetForUnity.unitypackage github进行搜索下载 下载…