Mysql--运维篇--备份和恢复(逻辑备份,mysqldump,物理备份,热备份,温备份,冷备份,二进制文件备份和恢复等)

MySQL 提供了多种备份方式,每种方式适用于不同的场景和需求。根据备份的粒度、速度、恢复时间和对数据库的影响,可以选择合适的备份策略。主要备份方式有三大类:逻辑备份(mysqldump),物理备份和二进制文件备份。

一、逻辑备份(Logical Backup)

逻辑备份是通过导出SQL语句或表结构和数据来实现的。它不直接复制物理文件,而是生成可以重新执行的SQL文件。逻辑备份的优点是易于理解和恢复,但通常比物理备份慢。

1、mysqldump工具

mysqldump是MySQL自带的命令行工具,用于导出数据库的表结构和数据。它可以生成完整的SQL文件,支持单个表、多个表或整个数据库的备份。

备份方式:

  • 全量备份:备份整个数据库或多个数据库。
  • 部分备份:可以只备份特定的表或数据库。
  • 增量备份:可以通过–master-data和–single-transaction选项结合二进制日志进行增量备份。

mysqldump备份优点:

  • 支持跨版本恢复。(如:8.0版本导出备份文件,可以在5.7版本Mysql上进行还原)
  • 可以选择性地恢复部分数据。
  • 生成的SQL文件易于理解和修改。

mysqldump备份缺点:

  • 备份速度较慢,尤其是大数据库。
  • 备份期间可能会锁定表(除非使用–single-transaction)。
  • 恢复时间较长,因为需要重新执行SQL语句。

示例:(mysql命令,非sql语句)

(1)、备份所有数据库
mysqldump -u root -p --all-databases > all_databases.sql

运行结果:
会在当前目录下生成全量的sql文件。
在这里插入图片描述
查看如下:
包含所有的库,表和数据信息。
在这里插入图片描述

(2)、备份单个数据库

指定备份demo1数据库,输出到demo1.sql文件中。

mysqldump -u root -p demo1> demo1.sql

运行结果:
在这里插入图片描述
查看如下:
包含demo1库中的表和数据信息。
在这里插入图片描述

(3)、备份单个表

指定demo1数据库的employees表进行备份,输出到employees.sql文件中。

mysqldump -u root -p demo1 employees > employees.sql

运行结果:
在这里插入图片描述
查看如下:
在这里插入图片描述

(4)、使用压缩

使用压缩方式进行备份。

mysqldump -u root -p demo1 | gzip > demo1.sql.gz

如果备份文件非常大,且又需要频繁备份的场景。建议备份时启用压缩。

2、mysqlpump工具

mysqlpump是MySQL 5.7引入的一个新工具,类似于mysqldump,但性能更好,尤其是在处理大数据库时。它支持并行备份和更细粒度的控制。

mysqlpump优点:

  • 支持并行备份,备份速度更快。
  • 支持更多的并发操作。
  • 可以选择性地备份存储过程、触发器等。

mysqlpump缺点:

  • 不支持MySQL 5.6及之前版本。
  • 恢复时间仍然较长。

示例:

(1)、备份全部数据库
mysqlpump -u root -p --all-databases > all_databases1.sql

运行结果:
在这里插入图片描述

(2)、备份单个数据库

备份demo1数据库,输出到demo1_1.sql文件中。

mysqlpump -u root -p demo1 > demo1_1.sql

运行结果:
在这里插入图片描述

(3)、并行备份多个数据库

备份demo1数据库和sys数据库到multiple_databases.sql文件中。

mysqlpump -u root -p --parallel-schemas=demo1,sys> multiple_databases.sql

运行结果:
在这里插入图片描述

二、物理备份(Physical Backup)

物理备份是直接复制数据库的物理文件(如.frm、.ibd等)。物理备份的速度通常比逻辑备份快,因为它是直接复制文件而不是生成SQL语句。物理备份可以分为热备份、温备份和冷备份。

1、冷备份(Cold Backup)

冷备份是指在数据库完全停止的情况下进行的备份。这种方式最简单,但会对业务造成停机影响。

步骤:
(1)、停止MySQL服务。
(2)、复制数据目录中的所有文件。
(3)、重启MySQL服务。

示例:

停止MySQL服务
sudo systemctl stop mysql
复制数据目录
cp -R /var/lib/mysql /backup/mysql_cold_backup
重启MySQL服务
sudo systemctl start mysql

优点:

  • 简单易用。
  • 备份速度快。
  • 恢复速度快。

缺点:

  • 需要停机,不适合生产环境。
  • 无法进行增量备份。

2、温备份(Warm Backup)

温备份是指在数据库处于只读模式的情况下进行的备份。这种方式不会完全停止数据库,但会阻止写操作,因此对业务的影响较小。

步骤:
(1)、将数据库设置为只读模式。
(2)、复制数据目录中的所有文件。
(3)、恢复数据库的读写模式。

示例:

-- 设置只读模式
SET GLOBAL readonly = ON;
-- 复制数据目录
cp -R /var/lib/mysql /backup/mysql_warm_backup
-- 恢复读写模式
SET GLOBAL readonly = OFF;

优点:

  • 不需要完全停机。
  • 备份速度快。
  • 恢复速度快。

缺点:

  • 写操作会被阻止,可能影响业务。
  • 无法进行增量备份。

3、热备份(Hot Backup)

热备份是指在数据库正常运行的情况下进行的备份。这种方式不会影响数据库的正常读写操作,适合生产环境。常见的热备份工具有Percona XtraBackup和MySQL Enterprise Backup。

(1)、Percona XtraBackup

Percona XtraBackup是一个开源的热备份工具,专门用于InnoDB和XtraDB存储引擎。它可以进行在线备份,并且支持增量备份和压缩。

特点:

  • 支持热备份,不影响数据库的正常运行。
  • 支持增量备份和全量备份。
  • 支持压缩和流式备份。
  • 支持备份加密。
  • 支持并行备份和恢复。

示例:

安装Percona XtraBackup
sudo apt-get install percona-xtrabackup-80

进行全量备份
xtrabackup --user=root --password=your_password --backup --target-dir=/backup/full

进行增量备份
xtrabackup --user=root --password=your_password --backup --target-dir=/backup/incremental --incremental-basedir=/backup/full

恢复备份
xtrabackup --prepare --target-dir=/backup/full
xtrabackup --copy-back --target-dir=/backup/full
(2)、MySQL Enterprise Backup

MySQL Enterprise Backup是Oracle提供的商业备份工具,专为MySQL企业版设计。它提供了类似Percona XtraBackup的功能,但还有一些额外的企业级特性,如自动备份调度、备份验证等。

特点:

  • 支持热备份,不影响数据库的正常运行。
  • 支持增量备份和全量备份。
  • 支持压缩和流式备份。
  • 支持备份加密。
  • 支持并行备份和恢复。
  • 提供自动备份调度和备份验证。

优点:

  • 支持热备份,不影响数据库的正常运行。
  • 支持增量备份,节省存储空间。
  • 备份速度快,恢复速度快。
  • 适合大规模生产环境。

缺点:

  • 需要购买 MySQL 企业版许可证。

三、二进制日志备份(Binary Log Backup)

二进制日志(binary log)记录了所有对数据库的更改操作(如INSERT、UPDATE、DELETE等)。通过备份二进制日志,可以在全量备份的基础上进行增量恢复,从而减少恢复时间。

步骤:
1、启用二进制日志。
2、定期备份二进制日志文件。
3、在恢复时,先恢复全量备份,再应用二进制日志中的更改恢复到指定时间点。

示例:

查看当前的二进制日志文件
mysql> SHOW MASTER LOGS;

查看日志的路径
SHOW VARIABLES LIKE 'datadir';
SHOW VARIABLES LIKE 'log_bin%';

备份二进制日志文件
cp /var/lib/mysql/mysql-bin. /backup/binlogs/

应用二进制日志进行恢复
mysqlbinlog /backup/binlogs/mysql-bin.000001 | mysql -u root -p

优点:

  • 支持增量备份,节省存储空间。
  • 可以进行精确的时间点恢复。
  • 适合高可用性和灾难恢复场景。

缺点:

  • 需要启用二进制日志,可能会增加I/O开销。
  • 二进制日志文件较大,需要定期清理。

四、逻辑恢复

逻辑备份是通过mysqldump或mysqlpump等工具生成的SQL文件。恢复时,可以通过执行这些SQL文件来重新创建数据库和表结构,并插入数据。

1、使用mysqldump备份文件恢复

步骤:
(1)、导入SQL文件:将备份的SQL文件通过mysql命令行工具导入到目标数据库中。
(2)、指定数据库:如果备份的是单个数据库或多个数据库,确保在导入时指定正确的数据库名称。

示例:

(1)、恢复整个数据库
mysql -u root -p < all_databases.sql

运行结果:
所有的数据库都恢复到了备份文件生成的时间点。
在这里插入图片描述

(2)、恢复单个数据库:

恢复demo1数据库,执行demo1.sql文件

mysql -u root -p demo1 < demo1.sql

运行结果:
在这里插入图片描述

(3)、恢复单个表

恢复demo1数据库的employees表,执行employees.sql文件。

mysql -u root -p demo1 < employees.sql

运行结果:
在这里插入图片描述

优点:

  • 支持跨版本恢复。
  • 可以选择性地恢复部分数据(如单个表或存储过程)。
  • 生成的SQL文件易于理解和修改。

缺点:

  • 恢复速度较慢,尤其是大数据库。
  • 如果备份文件较大,可能会占用较多内存和磁盘I/O。
  • 需要重新执行SQL语句,可能导致锁表或阻塞其他操作。

2、使用mysqlpump备份文件恢复

mysqlpump是MySQL 5.7引入的一个新工具,支持并行备份和更细粒度的控制。恢复过程与mysqldump类似,几乎一样。

示例:

恢复整个数据库
mysql -u root -p < all_databases.sql

恢复单个数据库
指定恢复demo1数据库,执行demo1.sql文件
mysql -u root -p demo1 < demo1.sql

优点:

  • 支持并行恢复,速度更快。
  • 支持更多的并发操作。
  • 可以选择性地恢复部分数据。

缺点:

  • 不支持MySQL 5.6及以下版本。

五、物理恢复

物理备份是直接复制数据库的物理文件(如.frm、.ibd等)。物理备份的恢复速度通常比逻辑备份快,因为它是直接恢复文件而不是重新执行SQL语句。

1、冷备份的恢复

冷备份是在数据库完全停止的情况下进行的备份。恢复时,只需将备份的文件复制回原始位置,并重启MySQL服务。

步骤:
(1)、停止MySQL服务。
(2)、复制备份文件:将备份的数据目录复制回原始位置。
(3)、重启MySQL服务。

示例:

停止MySQL服务
sudo systemctl stop mysql

复制备份文件
cp -R /backup/mysql_cold_backup/ /var/lib/mysql/

重启MySQL服务
sudo systemctl start mysql

优点:

  • 恢复速度快。
  • 不需要重新执行SQL语句。

缺点:

  • 需要停机,不适合生产环境。
  • 无法进行增量恢复。

2、温备份的恢复

温备份是在数据库处于只读模式的情况下进行的备份。恢复时,只需将备份的文件复制回原始位置,并恢复数据库的读写模式。

步骤:
1、设置只读模式。
2、复制备份文件:将备份的数据目录复制回原始位置。
3、恢复读写模式。

示例:

-- 设置只读模式
SET GLOBAL readonly = ON;

-- 复制备份文件
cp -R /backup/mysql_warm_backup/ /var/lib/mysql/

-- 恢复读写模式
SET GLOBAL readonly = OFF;

优点:

  • 不需要完全停机。
  • 恢复速度快。

缺点:

  • 写操作会被阻止,可能影响业务。
  • 无法进行增量恢复。

3、热备份的恢复

热备份是在数据库正常运行的情况下进行的备份。常见的热备份工具有Percona XtraBackup和MySQL Enterprise Backup。恢复时,需要先准备备份文件,然后将其复制回原始位置。

(1)、使用Percona XtraBackup恢复

步骤:
1、准备备份文件:使用XtraBackup --prepare命令准备备份文件,确保其处于一致状态。
2、停止MySQL服务。
3、复制备份文件:将准备好的备份文件复制回原始位置。
4、重启MySQL服务。

示例:

准备全量备份
xtrabackup --prepare --target-dir=/backup/full

如果有增量备份,同时也要指定准备增量备份
xtrabackup --prepare --apply-log-only --target-dir=/backup/full --incremental-dir=/backup/incremental

停止MySQL服务
sudo systemctl stop mysql

删除现有数据目录
rm -rf /var/lib/mysql/

复制备份文件
xtrabackup --copy-back --target-dir=/backup/full

修改数据目录权限
chown -R mysql:mysql /var/lib/mysql

重启MySQL服务
sudo systemctl start mysql

优点:

  • 支持热备份,不影响数据库的正常运行。
  • 支持增量备份,节省存储空间。
  • 恢复速度快。

缺点:

  • 需要准备备份文件,增加了一步操作。
  • 恢复过程中需要停止MySQL服务。
(2)、使用MySQL Enterprise Backup恢复

MySQL Enterprise Backup是Oracle提供的商业备份工具,恢复过程与Percona XtraBackup类似,但提供了更多企业级特性。

步骤:
1、准备备份文件:使用mysqlbackup --apply-log命令准备备份文件。
2、停止MySQL服务。
3、复制备份文件:将准备好的备份文件复制回原始位置。
4、重启MySQL服务。

示例

准备全量备份
mysqlbackup --user=root --password=your_password --backup-dir=/backup/full --apply-log prepare

如果有增量备份,同时也要准备增量备份
mysqlbackup --user=root --password=your_password --backup-dir=/backup/full --incremental-backup-dir=/backup/incremental --apply-log prepare

停止MySQL服务
sudo systemctl stop mysql

删除现有数据目录
rm -rf /var/lib/mysql/

复制备份文件
mysqlbackup --user=root --password=your_password --backup-dir=/backup/full --copy-back

修改数据目录权限
chown -R mysql:mysql /var/lib/mysql

重启MySQL服务
sudo systemctl start mysql

优点:

  • 支持热备份,不影响数据库的正常运行。
  • 支持增量备份,节省存储空间。
  • 恢复速度快。
  • 提供自动备份调度和备份验证。

缺点:

  • 需要购买MySQL企业版许可证。

六、二进制日志恢复

MySQL的二进制日志(Binary Log,简称binlog)记录了所有对数据库的更改操作(如INSERT、UPDATE、DELETE等)。通过二进制日志,可以实现增量备份、主从复制和时间点恢复。

1、什么是二进制日志?

二进制日志是MySQL中的一种日志文件,记录了所有对数据库的更改操作。它以二进制格式存储,因此不能直接阅读,但可以通过工具解析。

二进制日志的主要用途包括:

  • 主从复制:主库将二进制日志发送给从库,从库根据日志重放这些操作,保持与主库同步。
  • 增量备份:在全量备份的基础上,使用二进制日志进行增量备份,减少备份时间和存储空间。
  • 时间点恢复:通过二进制日志,可以在某个特定的时间点恢复数据,避免不必要的数据丢失。

2、启用二进制日志

要使用二进制日志,首先需要在MySQL配置文件中启用它。编辑/etc/my.cnf或/etc/mysql/my.cnf文件,添加或修改以下配置项。

示例:

[mysqld]
 启用二进制日志
log_bin=mysql-bin

 设置二进制日志的格式(STATEMENTROWMIXED)
binlog_format=ROW

 设置二进制日志的过期天数(可选)
expire_logs_days=7

 设置二进制日志的最大文件大小(可选)
max_binlog_size=100M

 设置唯一的服务器 ID(用于主从复制)
server_id=1

解释:

  • log_bin:指定二进制日志的文件名前缀。默认情况下,MySQL会将日志文件保存在数据目录中(通常是/var/lib/mysql/)。
  • binlog_format:设置二进制日志的格式。常见的格式有:
    • STATEMENT:记录SQL语句。
    • ROW:记录每一行的变化(推荐使用,尤其是对于InnoDB表)。
    • MIXED:混合模式,MySQL会根据情况自动选择STATEMENT或ROW。
  • expire_logs_days:设置二进制日志的保留天数。超过这个天数的日志将被自动删除。
  • max_binlog_size:设置单个二进制日志文件的最大大小。当达到这个大小时,MySQL会创建一个新的日志文件。
  • server_id:设置唯一的服务器ID,用于主从复制。

重启MySQL服务:
修改配置文件后,重启MySQL服务以使配置生效:

sudo systemctl restart mysql

3、查看二进制日志文件

启用二进制日志后,MySQL会在数据目录中生成一系列以mysql-bin.000001、mysql-bin.000002等命名的文件。

相关示例:

(1)、查看二进制日志文件列表
SHOW BINARY LOGS;

输出示例:
在这里插入图片描述

(2)、查看当前正在使用的二进制日志文件
SHOW MASTER STATUS;

输出示例:
在这里插入图片描述
解释:

  • File:当前正在使用的二进制日志文件。
  • Position:当前日志文件中的写入位置。

4、备份二进制日志

为了确保数据的安全性,建议定期备份二进制日志。

常见的备份方法:

(1)、手动备份

你可以直接复制二进制日志文件到备份目录中。由于二进制日志文件是追加写入的,因此可以安全地复制它们,而不会影响MySQL的正常运行。

示例:

创建备份目录
mkdir -p /backup/binlogs

复制二进制日志文件
cp /var/lib/mysql/mysql-bin. /backup/binlogs/
(2)、mysqlbinlog工具备份

mysqlbinlog是MySQL提供的一个工具,用于解析和导出二进制日志文件。你可以使用它将二进制日志转换为SQL文件,便于备份和恢复。

示例:
1、将所有二进制日志导出为SQL文件

mysqlbinlog /var/lib/mysql/mysql-bin.000001 > /backup/binlogs/mysql-bin.000001.sql
mysqlbinlog /var/lib/mysql/mysql-bin.000002 > /backup/binlogs/mysql-bin.000002.sql

2、指定时间范围的备份

mysqlbinlog --start-datetime="2023-10-01 00:00:00" --stop-datetime="2023-10-02 00:00:00" /var/lib/mysql/mysql-bin.000001 > /backup/binlogs/mysql-bin.000001.sql

解释:

  • –start-datetime和–stop-datetime:指定导出的时间范围。

3、指定行数的备份

  mysqlbinlog --start-position=1234 --stop-position=5678 /var/lib/mysql/mysql-bin.000001 > /backup/binlogs/mysql-bin.000001.sql

解释:

  • –start-position和–stop-position:指定导出的位置范围。

4、从远程服务器进行复制备份

mysqlbinlog --read-from-remote-server --host=192.168.1.100 --user=root --password=your_password /var/lib/mysql/mysql-bin.000001 > /backup/binlogs/mysql-bin.000001.sql

解释:

  • –read-from-remote-server:从远程服务器读取二进制日志(适用于主从复制环境)。

5、自动化备份

为了实现自动化的二进制日志备份,可以编写一个脚本并结合cron定时任务来定期执行备份。

以下是一个简单的Shell脚本示例:
第一步:编写自动化脚本(backup_binlogs.sh),如下:

#!/bin/bash

# 配置变量
BACKUP_DIR="/backup/binlogs"
DATE=$(date +%Y%m%d_%H%M%S)
MYSQL_USER="root"
MYSQL_PASSWORD="your_password"

# 创建备份目录(如果不存在)
mkdir -p $BACKUP_DIR

# 获取当前的二进制日志文件列表
BINARY_LOGS=$(mysql -u $MYSQL_USER -p$MYSQL_PASSWORD -e "SHOW BINARY LOGS" | awk 'NR>1 {print $1}')

# 备份每个二进制日志文件
for LOG in $BINARY_LOGS; do
    FILENAME="${BACKUP_DIR}/${LOG}_${DATE}.sql.gz"
    echo "Backing up binary log: $LOG to $FILENAME"
    
    # 使用 mysqlbinlog 导出并压缩日志文件
    mysqlbinlog -u $MYSQL_USER -p$MYSQL_PASSWORD /var/lib/mysql/$LOG | gzip > $FILENAME
    
    if [ $? -eq 0 ]; then
        echo "Backup of $LOG completed successfully."
    else
        echo "Backup of $LOG failed."
    fi
done

# 清理旧备份(保留最近7天的备份)
find $BACKUP_DIR -type f -name "*.sql.gz" -mtime +7 -exec rm {} \;

第二步:设置定时任务
(1)、打开crontab编辑器:

crontab -e

(2)、添加以下行,每天凌晨2点执行备份脚本:

0 2 * * * /path/to/backup_binlogs.sh >> /var/log/binlog_backup.log 2>&1   

(3)、保存并退出。
解释:

  • 0 2 * * * :表示每天凌晨2点执行。
  • /path/to/backup.sh:替换为你的备份脚本的实际路径。
  • /var/log/mysql_backup.log 2>&1:将输出和错误日志重定向到指定的日志文件。

6、清理二进制日志

随着时间的推移,二进制日志文件会逐渐增多,占用大量磁盘空间。因此,定期清理不再需要的二进制日志是非常重要的。
你可以通过以下方式清理二进制日志:

(1)、自动清理

通过配置expire_logs_days参数,可以让MySQL自动清理超过指定天数的二进制日志。例如,设置expire_logs_days=7,表示保留最近7天的二进制日志,超过7天的日志将被自动删除。

(2)、手动清理

你可以使用PURGE BINARY LOGS命令手动清理二进制日志。

常见的清理方式:

  • 按文件名清理:删除指定文件名之前的二进制日志。
    sql示例:
PURGE BINARY LOGS TO 'mysql-bin.000010';
  • 按日期清理:删除指定日期之前的二进制日志。
    sql示例:
PURGE BINARY LOGS BEFORE '2023-10-01 00:00:00';
  • 清空所有二进制日志:删除所有二进制日志并重置日志编号。请注意,这会影响主从复制,谨慎使用。
    sql示例:
RESET MASTER;

7、使用二进制日志进行恢复

二进制日志可以用于增量恢复,尤其是在全量备份的基础上。通过应用二进制日志中的操作,可以将数据库恢复到某个特定的时间点。结合恢复全量备份和二进制日志恢复。

示例:
假设你已经有一个过去的全量备份,并且希望恢复到某个时间点。

1、恢复全量备份:首先恢复最近的全量备份。
mysql -u root -p < full_backup.sql

2、应用二进制日志:使用mysqlbinlog解析并应用二进制日志文件。你可以根据需要指定时间范围或位置范围。
mysqlbinlog --start-datetime="2023-10-01 00:00:00" --stop-datetime="2023-10-02 10:00:00" /var/lib/mysql/mysql-bin.000001 | mysql -u root -p

解释:
为什么要先进行全量备份的恢复呢?
全量备份是数据库的一个完整副本,包含了所有表、索引、视图等对象的数据。它是数据库恢复的基础,提供了恢复过程中的“起点”。二进制日志记录了自全量备份之后的所有数据库更改操作。如果你有的只是二进制文件没有之前的备份文件,那么恢复是无法进行的。简单说就是二进制文件的起点行不知道是哪一句增删改的语句,甚至当前的数据库中表都不存在了。

过程推理说明:
假设2025年的1月4日15点30分,你不小心删除了某张重要表的数据。
第一步:(假设每天的0点都进行全量的数据库备份)
你要先找到1月4日0点的全量备份文件。执行恢复此文件,将数据库还原到1月4日0点的状态。
第二步:
找到正在执行的binlog日志文件(不确定可以指定最近的两个),指定开始时间为1月4日0点,结束时间会1月4日15点0分(误删表的前一小段时间点)。
这样就相当于在1月4日0点当时数据库的基础上,重新执行了0点到15点这段时间内的所有增删改的语句,从而实现了故障恢复的效果。

8、监控二进制日志

为了确保二进制日志的健康状态,建议定期监控其使用情况。你可以使用以下查询来获取二进制日志的相关信息:

查看二进制日志的状态:

 SHOW MASTER STATUS;

运行结果:
在这里插入图片描述

查看二进制日志的文件列表:

SHOW BINARY LOGS;

运行结果:
在这里插入图片描述

查看二进制日志的事件:

 SHOW BINLOG EVENTS IN 'mysql-bin.000001';

运行结果:
在这里插入图片描述

监控二进制日志的大小:

  SELECT 
      *
  FROM 
      performance_schema.file_summary_by_instance
  WHERE 
      file_name LIKE '%mysql-bin%';

运行结果:
在这里插入图片描述

乘风破浪会有时,直挂云帆济沧海!!!

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

在 Safari 浏览器中,快速将页面恢复到 100% 缩放(也就是默认尺寸)Command (⌘) + 0 (零)

在 Safari 浏览器中&#xff0c;没有一个专门的快捷键可以将页面恢复到默认的缩放比例。 但是&#xff0c;你可以使用以下两种方法快速将页面恢复到 100% 缩放&#xff08;也就是默认尺寸&#xff09;&#xff1a; 方法一&#xff1a;使用快捷键 (最常用) Command (⌘) 0 (零…

LLMs之RAG:《EdgeRAG: Online-Indexed RAG for Edge Devices》翻译与解读

LLMs之RAG&#xff1a;《EdgeRAG: Online-Indexed RAG for Edge Devices》翻译与解读 导读&#xff1a;这篇论文针对在资源受限的边缘设备上部署检索增强生成 (RAG) 系统的挑战&#xff0c;提出了一种名为 EdgeRAG 的高效方法。EdgeRAG 通过巧妙地结合预计算、在线生成和缓存策…

探索网络安全:浅析文件上传漏洞

前言 在数字化时代&#xff0c;网络安全已成为我们每个人都需要关注的重要议题。无论是个人隐私保护&#xff0c;还是企业数据安全&#xff0c;网络威胁无处不在。了解网络安全的基本知识和防护措施&#xff0c;对我们每个人来说都至关重要。 网络安全 网络安全并非只是对网…

Therabody 与Garmin联手,共同推进运动恢复与健康科技新突破

本次合作以数据整合、人工智能驱动的数字教练与科学研究为重点&#xff0c;旨在更好地了解科学恢复对运动表现的影响 &#xff08;2025年1月13日&#xff0c;中国上海&#xff09;全球健康领导者Therabody宣布与智能手表品牌Garmin佳明建立战略合作关系&#xff0c;共同致力于…

Cloudflare中转Gemini API,国内免费爽用,Gemini编程,音视频,多模态能力测试

视频版&#xff1a; Cloudflare中转顶级大模型API&#xff0c;国内免费爽用&#xff0c;Gemini编程&#xff0c;音视频&#xff0c;多模态能力测试 谷歌Gemini是所有一线顶级大模型当中唯一一个API可以免费白嫖的。本期视频&#xff0c;我们借助互联网大善人Cloudflare来中转一…

腾讯云AI代码助手编程挑战赛-算法小助手

作品简介 一个可以帮助学习计算机各种算法的AI小助手&#xff0c;提升工作效率。 技术架构 使用Html语言完成图形化页面的样式&#xff0c;使用JavaScript语言来操作对应的逻辑代码。 实现过程 1、创建一个界面 2、获取数据 3、添加按钮与功能 4、程序优化调试 开发环境…

网络安全实验之钓鱼网站的制作及技巧

在红队攻击中&#xff0c;除漏洞以外最简洁高效的攻击方式无疑是钓鱼攻击&#xff0c;通过不同的钓鱼方式可达到不同的攻击效果&#xff0c;本次我会分享最常见的钓鱼手段之一的网站钓鱼技术&#xff0c;同时对可实现的攻击操作进行演示。 更多网站钓鱼实验科普&#xff0c;可…

用户注册模块用户校验(头条项目-05)

1 用户注册后端逻辑 1.1 接收参数 username request.POST.get(username) password request.POST.get(password) phone request.POST.get(phone) 1.2 校验参数 前端校验过的后端也要校验&#xff0c;后端的校验和前端的校验是⼀致的 # 判断参数是否⻬全 # 判断⽤户名是否…

linux-28 文本管理(一)文本查看,cat,tac,more,less,head,tail

之前提到过linux的几个重要哲学思想&#xff0c;使用纯文本文件保存软件的配置信息是其中之一&#xff0c;所以大多数情况下&#xff0c;我们对整个系统的操作&#xff0c;都是通过编辑它的配置文件来完成&#xff0c;那也就意味着&#xff0c;处理文本文件是我们作为系统管理员…

JVM面试相关

JVM组成 什么是程序计数器 详细介绍Java堆 什么是虚拟机栈 能不能解释一下方法区&#xff1f; 直接内存相关 类加载器 什么是类加载器&#xff0c;类加载器有哪些 什么是双亲委派模型 类加载过程 垃圾回收 对象什么时候可以被垃圾回收器回收 JVM垃圾回收算法有那些 JVM的分代…

【Unity3D】利用IJob、Burst优化处理切割物体

参考文章&#xff1a; 【Unity】切割网格 【Unity3D】ECS入门学习&#xff08;一&#xff09;导入及基础学习_unity ecs教程-CSDN博客 【Unity3D】ECS入门学习&#xff08;十二&#xff09;IJob、IJobFor、IJobParallelFor_unity ijobparallelfor-CSDN博客 工程资源地址&…

Armv8/Armv9架构从入门到精通-介绍

CSDN学院课程连接&#xff1a;https://edu.csdn.net/course/detail/39573 1 讲师介绍 拥有 12 年手机安全、汽车安全、芯片安全开发经验&#xff0c;擅长 Trustzone/TEE/ 安全的设计与开发&#xff0c;对 ARM 架构的安全领域有着深入的研究和丰富的实践经验&#xff0c;能够…

Cesium小知识:pointPrimitive collection 详解

Cesium.PointPrimitiveCollection 是 Cesium 中用于高效管理和渲染大量点(points)的一个类。它允许你创建和管理大量的 PointPrimitive 实例,这些实例可以用来表示地理空间中的点数据,如传感器位置、车辆位置、兴趣点等。与直接使用 Cesium.Entity 相比,PointPrimitiveCol…

Threejs实现 区块链网络效应

大家好&#xff01;我是 [数擎 AI]&#xff0c;一位热爱探索新技术的前端开发者&#xff0c;在这里分享前端和 Web3D、AI 技术的干货与实战经验。如果你对技术有热情&#xff0c;欢迎关注我的文章&#xff0c;我们一起成长、进步&#xff01; 开发领域&#xff1a;前端开发 | A…

GitCode G-Star 光引计划终审前十名获奖项目公示

在技术的浩瀚星空中&#xff0c;GitCode 平台上的 G-Star 项目熠熠生辉。如今&#xff0c;“光引计划” 已圆满落幕&#xff0c;众多 G-Star 项目作者&#xff0c;一同分享项目在 GitCode 平台托管的宝贵体验&#xff0c;并深入挖掘平台的多样玩法。 众多投稿纷至沓来&#xf…

VRRP技术

堆叠 堆叠指将支持堆叠特性的交换机通过堆叠线缆连接到一起&#xff0c;解决交换机问题 &#xff08;物理多台交换机变成逻辑上的一台交换机 去进行一个数据转发&#xff09;聚合解决链路问题在不同的厂商中堆叠的技术: 思科&#xff1a;stackwise 思科智能堆叠VSS Virt…

primitive 的 Appearance编写着色器材质

import { nextTick, onMounted, ref } from vue import * as Cesium from cesium import gsap from gsaponMounted(() > { ... })// 1、创建矩形几何体&#xff0c;Cesium.RectangleGeometry&#xff1a;几何体&#xff0c;Rectangle&#xff1a;矩形 let rectGeometry new…

31_搭建Redis分片集群

Redis的主从复制模式和哨兵模式可以解决高可用、高并发读的问题。但是依然有两个问题没有解决:海量数据存储问题、高并发写的问题。由于数据量过大,单个master复制集难以承担,因此需要对多个复制集进行集群,形成水平扩展每个复制集只负责存储整个数据集的一部分,这就是Red…

快速上手 INFINI Console 的 TopN 指标功能

背景 在分布式搜索引擎系统&#xff08;如 Easysearch、Elasticsearch 和 OpenSearch&#xff09;中&#xff0c;性能监控至关重要。为了确保系统的高效运行和资源的合理分配&#xff0c;我们通常需要关注一段时间内关键资源的使用情况&#xff0c;特别是索引、节点和分片的内…

风水算命系统架构与功能分析

系统架构 服务端&#xff1a;Java&#xff08;最低JDK1.8&#xff0c;支持JDK11以及JDK17&#xff09;数据库&#xff1a;MySQL数据库&#xff08;标配5.7版本&#xff0c;支持MySQL8&#xff09;ORM框架&#xff1a;Mybatis&#xff08;集成通用tk-mapper&#xff0c;支持myb…