mysql 物理备份 MySQL 全量备份 增量备份 差异备份 日志备份万字长文 1.3万字

news2024/9/20 16:44:20

版权声明:本文为博主原创文章,遵循版权协议,转载请附上原文出处链接和本声明

注意,通常 完备增备,日志(binlog)备,结合使用 差异则根据具体情况选用。

此备份过程 

属于公司

常用的单个数据库备份技术中的

mysql 物理备份 MySQL 全量备份 增量备份 差异备份  日志备份

至于单个数据库备份技术中的逻辑备份 

混合数据库及其备份技术,本人会另外开文章再进行说明

MySQL备份工具的安装

逻辑备份工具 mysqldump  自带

物理备份工具 percona-xtrabackup 需安装

MySQL数据备份方式

主要有四种:

完整备份、增量备份、差异备份和逻辑备份。它们的区别在于备份的范围和备份方式不同。

MySQL物理备份的种类及其特点

MySQL物理备份主要有三种:完整备份增量备份差异备份。每种备份方式都有其独特的特点和适用场景。

1. 完整备份
  • 特点
    • 备份整个数据库的所有数据和结构。
    • 备份文件较大,占用较多存储空间。
    • 恢复速度最快,因为只需要恢复一个备份文件。
  • 适用场景
    • 数据量较小的数据库。
    • 需要快速恢复的场景。
2. 增量备份
  • 特点
    • 备份自上次完整备份或增量备份以来发生变化的数据。
    • 备份文件较小,节省存储空间。
    • 恢复速度较慢,因为需要先恢复完整备份,然后应用所有增量备份。
  • 适用场景
    • 数据量较大且变化频繁的数据库。
    • 需要节省存储空间的场景。
3. 差异备份
  • 特点
    • 备份自上次完整备份以来发生变化的数据。
    • 备份文件大小介于完整备份和增量备份之间。
    • 恢复速度较快,因为只需要恢复完整备份和一个差异备份。
  • 适用场景
    • 数据量较大且变化频繁,但希望恢复过程不太复杂。
    • 需要快速恢复且节省存储空间的场景。

总结

选择哪种备份方式取决于具体需求:

  • 完整备份适用于数据量较小且需要快速恢复的场景。
  • 增量备份适用于数据量较大且变化频繁,需要节省存储空间的场景。
  • 差异备份适用于数据量较大且变化频繁,但希望恢复过程不太复杂的场景。

Percona XtraBackup 是一个开源的 MySQL 和 InnoDB 备份工具,广泛用于物理数据备份和恢复。

MySQL安装percona-xtrabackup

逻辑备份工具 mysqldump  自带

percona-xtrabackup版本这里有必要说明

参考官网如下:

  • Aligning Percona XtraBackup Versions with Percona Server for MySQLWe are excited to let you know about two upcoming changes to Percona XtraBackup which will align Percona XtraBackup Versions with Percona Server for MySQL. icon-default.png?t=N7T8https://www.percona.com/blog/aligning-percona-xtrabackup-versions-with-percona-server-for-mysql/
  • 翻译过来意思就是:Percona XtraBackup 的版本要超过(大于或等于)数据库的版本。

比如:当前 MySQL 数据库版本 8.0.32,若安装 XtraBackup 版本为 8.0.32-xxx

尽量和数据库的版本保持一致  为啥?如果不保持一致 因为会天天输出报警信息说你的备份工具和数据库版本不匹配

查看mysql 版本

[root@root ~]# mysql -V 
mysql  Ver 14.14 Distrib 5.7.44, for Linux (x86_64) using  EditLine wrapper
[root@root ~]# 

 

 注意v必须大写

安装与MySQL 5.7兼容的Percona XtraBackup版本。在你的情况下,MySQL版本是5.7.44,所以你应该安装Percona XtraBackup 2.4,因为这一版本与MySQL 5.7兼容。

MySQL 8.0.32 对应版本:      Percona XtraBackup 8.0.32-x

则查看 XtraBackup 版本时

卸载已经安装的 XtraBackup

查找已经安装的 XtraBackup 名称

查找

[root@root soft]# yum list installed | grep -i xtrabackup

 # 卸载                                        

                                         

       yum -y remove percona-xtrabackup-80.x86_64

安装percona-xtrabackup

查看mysql 版本

[root@root ~]# mysql -V 
mysql  Ver 14.14 Distrib 5.7.44, for Linux (x86_64) using  EditLine wrapper
[root@root ~]# 

安装与MySQL 5.7兼容的Percona XtraBackup版本。在你的情况下,MySQL版本是5.7.44,所以你应该安装Percona XtraBackup 2.4,因为这一版本与MySQL 5.7兼容。

MySQL 8.0.32 对应版本:      Percona XtraBackup 8.0.32-x

[root@mysql-server ~]# vim /etc/yum.repos.d/Percona.repo

[percona]

name = CentOS $releasever - Percona

baseurl=http://repo.percona.com/centos/$releasever/os/$basearch/

enabled = 1

gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-percona

gpgcheck = 1  改为0 不然还要去官网获取密钥太麻烦

注:我的MySQL 5.7.44 是用yum安装的

推荐yum,二进制安装 ,切记不推荐编译,

会爆各种错,五花八门的

MySQL物理备份主要有三种:完整备份、增量备份和差异备份。每种备份方式都有其独特的特点和适用场景。

完全备份 

创建备份目录:

[root@root ~]#  mkdir /xtrabackup/bakwuli -p

备份之前,进入数据库,存入些数据

[root@root ~]# mysql -uroot -p'Password123$'

mysql>  create database testbakwuli;

Query OK, 1 row affected (0.01 sec)

mysql> use testbakwuli

Database changed

mysql>  create table t1(id int);

Query OK, 0 rows affected (0.05 sec)

mysql> exit

备份:

[root@root ~]#  innobackupex --user=root --password='Password123$' /xtrabackup/bakwuli

。。。。。

。。。。。。

40815 20:43:24 Executing FLUSH NO_WRITE_TO_BINLOG ENGINE LOGS...
xtrabackup: The latest check point (for incremental): '32452021'
xtrabackup: Stopping log copying thread.
.240815 20:43:24 >> log scanned up to (32452030)

240815 20:43:24 Executing UNLOCK TABLES
240815 20:43:24 All tables unlocked
240815 20:43:24 [00] Copying ib_buffer_pool to /xtrabackup/bakwuli/2024-08-15_20-43-21/ib_buffer_pool
240815 20:43:24 [00]        ...done
240815 20:43:24 Backup created in directory '/xtrabackup/bakwuli/2024-08-15_20-43-21/'
240815 20:43:24 [00] Writing /xtrabackup/bakwuli/2024-08-15_20-43-21/backup-my.cnf
240815 20:43:24 [00]        ...done
240815 20:43:24 [00] Writing /xtrabackup/bakwuli/2024-08-15_20-43-21/xtrabackup_info
240815 20:43:24 [00]        ...done
xtrabackup: Transaction log of lsn (32452021) to (32452030) was copied.
240815 20:43:25 completed OK!

 

查看:

[root@root ~]# cd  /xtrabackup/bakwuli

[root@root bakwuli]# ls

2024-08-15_20-43-21

[root@root bakwuli]#

完全备份恢复

1.关闭数据库:

[root@root bakwuli]# systemctl stop mysqld

清理环境

[root@root bakwuli]# rm -rf /var/lib/mysql/*

[root@root bakwuli]#  rm -rf /var/log/mysql-slow/slow.log

2.重演恢复:

[root@root bakwuli]#  innobackupex --apply-log /xtrabackup/bakwuli/2024-08-15_20-43-21

。。。。。

。。。

g the file full; Please wait ...
InnoDB: File './ibtmp1' size is now 12 MB.
InnoDB: 96 redo rollback segment(s) found. 1 redo rollback segment(s) are active.
InnoDB: 32 non-redo rollback segment(s) are active.
InnoDB: 5.7.44 started; log sequence number 32452117
xtrabackup: starting shutdown with innodb_fast_shutdown = 1
InnoDB: FTS optimize thread exiting.
InnoDB: Starting shutdown...
InnoDB: Shutdown completed; log sequence number 32452136
240815 20:50:01 completed OK!

 

注:恢复之前需要确认配置文件内有数据库指定目录,如下,不然会随机恢复数据到某个位置

很麻烦

vim /etc/my.cnf

在命令行模式:

/datadir=/var/lib/mysq

查看里面是否有datadir=/var/lib/mysql

[mysqld]

datadir=/var/lib/mysql

:q

.恢复数据:

[root@root bakwuli]#  innobackupex --copy-back /xtrabackup/bakwuli/2024-08-15_20-43-21
。。。。。。

。。。。。。

b_buffer_pool
240815 20:58:39 [01]        ...done
240815 20:58:39 [01] Copying ./xtrabackup_info to /var/lib/mysql/xtrabackup_info
240815 20:58:39 [01]        ...done
240815 20:58:39 [01] Copying ./xtrabackup_master_key_id to /var/lib/mysql/xtrabackup_master_key_id
240815 20:58:39 [01]        ...done
240815 20:58:39 [01] Copying ./ibtmp1 to /var/lib/mysql/ibtmp1
240815 20:58:39 [01]        ...done
240815 20:58:39 completed OK!
[root@root bakwuli]# 

恢复完数据 重启失败,但是给他一个权限就能重启成功

[root@root bakwuli]#  chown mysql.mysql  /var/lib/mysql  -R

[root@root bakwuli]#  systemctl start mysqld

[root@root bakwuli]#

测试是否成功恢复数据

[root@root bakwuli]#  mysql -uroot -p"Password123$"

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| testbakwuli       |
| zabbix             |
+--------------------+
7 rows in set (0.01 sec)

mysql> use testbakwuli;
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_testbakwuli |
+-----------------------+
| t1                    |                              ————》》从这可看出刚刚删除的表,数据已恢复
+-----------------------+
1 row in set (0.00 sec
)

mysql> exit


systemctl stop mysqld

增量备份

增量备份 每次备份上一次备份到现在产生的新数据  且基于前一天的备份为目录,在企业中增量备份通常与完备配合使用 比如1234567天  1用完备,2,3,4,5,6,7分别用增量 .

刚刚已创建指定备份目录/xtrabackup/bakwuli/   和 测试用的数据库testbakwuli  数据表t1

刚刚已经备份了第1天的完备 

现在第2天,增备:

在数据库中插入表值, 模拟第2天产生新数据

mysql -uroot -p"Password123$"

mysql>  insert into testbakwuli.t1 values(2);

Query OK, 1 row affected (0.01 sec)

mysql> exit

systemctl stop mysqld

 备份上一次备份到现在产生的新数据  且基于第一天的备份为目录 

[root@root bakwuli]# innobackupex -uroot -p"Password123$" --incremental /xtrabackup/bakwuli/ --incremental-basedir=//xtrabackup/bakwuli/2024-08-15_20-43-21  

[root@root bakwuli]# ls

2024-08-15_20-43-21  2024-08-15_21-24-39

[root@root bakwuli]#

现在第3天,增备:

在数据库中插入表值, 模拟第3天产生新数据

mysql -uroot -p"Password123$"

mysql>  insert into testbakwuli.t1 values(3);

Query OK, 1 row affected (0.01 sec)

mysql> exit

[root@root bakwuli]# ls  查看前两天的备份

2024-08-15_20-43-21  2024-08-15_21-24-39   

# 备份上一次备份到现在产生的新数据  且基于第2天的备份为目录 

systemctl stop mysqld

[root@root bakwuli]# innobackupex -uroot -p"Password123$" --incremental /xtrabackup/bakwuli/ --incremental-basedir=//xtrabackup/bakwuli/2024-08-15_21-24-39

[root@root bakwuli]# ls

2024-08-15_20-43-21  2024-08-15_21-24-39  2024-08-15_21-35-30

  全备周一第1天      增量周二第2天      增量周三第3天

增量备份恢复

1. 停止数据库

2. 清理环境

3. 依次重演回滚redo log--> 恢复数据

恢复完整备份。依次应用所有增量备份。完成恢复过程。

将恢复的数据文件复制到 MySQL 数据目录

4. 修改权限

5. 启动数据库

测试:

[root@root bakwuli]# ls

2024-08-15_20-43-21  2024-08-15_21-24-39  2024-08-15_21-35-30

[root@root bakwuli]#  systemctl stop mysqld

[root@root bakwuli]#  rm -rf /var/lib/mysql/*

依次重演回滚redo log: 恢复完整备份  假设完整备份存储在 /xtrabackup/bakwuli/2024-08-15_20-43-21/ 目录中。

[root@root bakwuli]# innobackupex --apply-log --redo-only /xtrabackup/bakwuli/2024-08-15_20-43-21/

回滚周二         应用第一个增量 :备份假设完整备份存储在/xtrabackup/bakwuli/2024-08-15_21-24-39 目录中。

[root@root bakwuli]# innobackupex --apply-log --redo-only /xtrabackup/bakwuli/2024-08-15_20-43-21/ --incremental-dir=/xtrabackup/bakwuli/2024-08-15_21-24-39

回滚周三

[root@root bakwuli]# innobackupex --apply-log --redo-only /xtrabackup/bakwuli/2024-08-15_21-24-39/ --incremental-dir=/xtrabackup/bakwuli/2024-08-15_21-35-30

 完成恢复

最后一步是完成恢复过程,这次不再使用 --redo-only 选项。

[root@root bakwuli]# innobackupex --apply-log /xtrabackup/bakwuli/2024-08-15_20-43-21/

恢复数据到 MySQL 数据目录

将恢复的数据文件复制到 MySQL 数据目录中。确保 MySQL 服务已停止。

[root@root bakwuli]# cp -r /xtrabackup/bakwuli/2024-08-15_20-43-21/* /var/lib/mysql/

修改权限

[root@mysql-server ~]# chown -R mysql.mysql /var/lib/mysql

[root@mysql-server ~]# systemctl start mysqld

查看是否恢复

[root@root bakwuli]#  mysql -uroot -p"Password123$"

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| testbakwuli       |
| zabbix             |
+--------------------+
7 rows in set (0.01 sec)

mysql> use testbakwuli;
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;

关于增量备份恢复过程 ,报错解决

InnoDB: Page [page id: space=0, page number=7] log sequence number 32452174 is in the future! Current system log sequence number 32452154.
InnoDB: Your database may be corrupt or you may have copied the InnoDB tablespace but not the InnoDB log files. Please refer to MySQL :: MySQL 5.7 Reference Manual :: 14.22.2 Forcing InnoDB Recovery for information about forcing recovery.

xtrabackup: error: The transaction log file is corrupted.
xtrabackup: error: The log was not applied to the intended LSN!
xtrabackup: Log applied to lsn 32452145
xtrabackup: The intended lsn is 32452347

具体的错误信息如下:

  1. Page log sequence number is in the future

    CopyInnoDB: Page [page id: space=0, page number=7] log sequence number 32452174 is in the future! Current system log sequence number 32452154.
    

    这意味着某个页面的日志序列号(LSN)比当前系统的日志序列号还要大,表明数据不一致。

  2. Transaction log file is corrupted

    Copyxtrabackup: error: The transaction log file is corrupted.
    xtrabackup: error: The log was not applied to the intended LSN!
    xtrabackup: Log applied to lsn 32452145
    xtrabackup: The intended lsn is 32452347
    

    这表示事务日志文件已损坏,日志应用到了错误的 LSN。

这些错误可能是由于以下原因导致的:

  • 备份过程中 InnoDB 表空间和日志文件没有同步复制。
  • 数据库在备份时发生了写入操作,导致数据不一致。
  • 硬件故障或文件系统错误导致文件损坏。

解决方法

  1. 强制恢复
    可以尝试按照 MySQL 官方文档中的指导进行强制恢复。参考链接:Forcing InnoDB Recovery

    在 my.cnf 文件中添加以下配置选项,然后重启 MySQL 服务:

    Copy[mysqld]
    innodb_force_recovery = 1
    

    如果 innodb_force_recovery = 1 无法解决问题,可以尝试逐步增加值(最大为 6),但请注意,较高的值可能会导致数据丢失。

  2. 检查和修复文件权限
    确保 MySQL 服务器对所有 InnoDB 表空间和日志文件具有适当的读写权限。

  3. 重新备份和恢复
    如果可能的话,重新进行一个完整的备份,并确保备份过程没有中断或错误。

  4. 检查硬件和文件系统
    确保硬件和文件系统没有问题,检查磁盘是否有坏块,文件系统是否有错误。

  5. 咨询专业支持
    如果问题依然存在,考虑寻求专业的数据库支持服务,特别是如果这是一个生产环境。

为了避免InnoDB数据库损坏和备份过程中的问题,以下是一些最佳实践和预防措施:

1. 定期备份

  • 频繁备份:定期进行全量和增量备份,确保在数据损坏时有可用的恢复点。
  • 验证备份:定期验证备份文件的完整性和可恢复性,确保备份文件没有损坏。

2. 正确配置备份工具

  • 使用最新版本:确保使用对应数据库版本的备份工具,如Percona XtraBackup,以获得最新的功能和修复。
  • 正确配置:确保备份工具的配置正确,包括备份路径、日志文件路径等。

3. 数据库配置

  • 启用双写缓冲区:在MySQL配置文件中启用InnoDB的双写缓冲区,以减少数据损坏的可能性。
    Copy[mysqld]
    innodb_doublewrite = 1
    
  • 适当的缓冲池大小:配置适当的InnoDB缓冲池大小,确保数据库性能和稳定性。
    Copy[mysqld]
    innodb_buffer_pool_size = <适当的大小>
    

4. 数据库维护

  • 定期检查和优化:定期运行CHECK TABLEOPTIMIZE TABLE命令,确保表的一致性和性能。
  • 监控错误日志:定期检查MySQL错误日志,及时发现和解决潜在问题。

5. 文件系统和硬件

  • 选择可靠的文件系统:使用支持事务的文件系统,如EXT4或XFS,以减少文件系统层面的数据损坏。
  • 硬件监控:定期检查硬件状态,包括磁盘健康状况,确保硬件没有故障。

6. 数据库操作

  • 避免长时间运行的事务:避免长时间运行的事务,减少锁争用和潜在的数据不一致性。
  • 适当的事务隔离级别:根据业务需求设置适当的事务隔离级别,避免不必要的锁争用。

7. 恢复测试

  • 定期恢复测试:定期进行恢复测试,确保备份文件在实际恢复过程中可用。

8. 业务高峰期备份

  • 避开高峰期:尽量避开业务高峰期进行备份,减少备份过程中数据写入的冲突。

9. 备份策略

  • 多层次备份:结合全量备份、增量备份和日志备份,确保多层次的备份策略。
  • 异地备份:将备份文件存储在异地,防止本地灾难导致数据完全丢失。

10. 监控和报警

  • 设置监控和报警:使用监控工具(如Prometheus、Grafana)监控数据库和备份工具的运行状态,设置报警机制,及时发现和处理异常情况。

通过以上措施,可以大大减少InnoDB数据库损坏和备份过程中的问题,确保数据的安全性和可靠性。

Binlog 备份概述

MySQL 的二进制日志(binlog)记录了所有对数据库进行更改的语句(例如,INSERT、UPDATE、DELETE等)。通过备份和恢复 binlog,可以实现数据的增量恢复和灾难恢复。

Binlog 备份

  1. 启用 binlog
    确保在 MySQL 配置文件(my.cnf 或 my.ini)中启用了 binlog。

    Copy[mysqld]
    log-bin=mysql-bin
    server-id=1
    

    重启 MySQL 服务以使配置生效。

    Copysystemctl restart mysqld
    
  2. 查看 binlog 文件
    使用以下命令查看当前的 binlog 文件列表。

    Copymysql -uroot -p"Password123$" -e "SHOW BINARY LOGS;"
    
  3. 备份 binlog 文件
    定期将 binlog 文件复制到安全的位置。例如,可以使用 rsync 或 scp 命令进行远程备份。

    Copyrsync -av /var/lib/mysql/mysql-bin.* /path/to/backup/
    

Binlog 恢复的步骤

  1. 恢复完整备份
    首先恢复最近的完整备份。假设完整备份存储在 /xtrabackup/bakwuli/2024-08-15_20-43-21/ 目录中。

    Copyinnobackupex --apply-log /xtrabackup/bakwuli/2024-08-15_20-43-21/
    cp -r /xtrabackup/bakwuli/2024-08-15_20-43-21/* /var/lib/mysql/
    chown -R mysql:mysql /var/lib/mysql
    systemctl start mysqld
    
  2. 恢复 binlog 文件
    使用 mysqlbinlog 工具将 binlog 文件应用到数据库中。

    Copymysqlbinlog /path/to/backup/mysql-bin.000001 /path/to/backup/mysql-bin.000002 | mysql -uroot -p"Password123$"
    

    如果需要应用特定的时间点,可以使用 --start-datetime 和 --stop-datetime 选项。

    Copymysqlbinlog --start-datetime="2024-08-16 00:00:00" --stop-datetime="2024-08-16 23:59:59" /path/to/backup/mysql-bin.000001 | mysql -uroot -p"Password123$"
    

总结

通过 binlog 备份和恢复,可以实现 MySQL 数据库的增量恢复。这种方法特别适用于需要将数据库恢复到特定时间点的场景。结合完整备份和增量备份,binlog 备份提供了一种灵活且高效的数据恢复方案

差异备份概述

差异备份是备份自上次完整备份以来发生变化的数据。与增量备份不同,差异备份每次都基于上一次的完整备份,而不是基于上一次的增量备份。因此,恢复过程只需要恢复完整备份和最后一个差异备份。

差异备份

注意,通常 完备增备,日志(binlog)备,结合使用 差异则根据具体情况选用

假设我已经完成了第1天的完整备份,现在将进行第2天和第3天的差异备份。

第1天:完整备份

假设完备(完整备份)已经完成,存储在 /xtrabackup/bakwuli/2024-08-15_20-43-21/ 目录中。

第2天:差异备份
  1. 插入新数据

    Copymysql -uroot -p"Password123$"
    mysql> insert into testbakwuli.t1 values(2);
    Query OK, 1 row affected (0.01 sec)
    mysql> exit
    
  2. 停止 MySQL 服务

    Copysystemctl stop mysqld
    
  3. 执行差异备份

    Copyinnobackupex -uroot -p"Password123$" --incremental /xtrabackup/bakwuli/ --incremental-basedir=/xtrabackup/bakwuli/2024-08-15_20-43-21
    
  4. 查看备份目录

    Copyls /xtrabackup/bakwuli/
    

    输出应类似:

    Copy2024-08-15_20-43-21  2024-08-16_21-24-39
    
第3天:差异备份
  1. 插入新数据

    Copymysql -uroot -p"Password123$"
    mysql> insert into testbakwuli.t1 values(3);
    Query OK, 1 row affected (0.01 sec)
    mysql> exit
    
  2. 停止 MySQL 服务

    Copysystemctl stop mysqld
    
  3. 执行差异备份

    Copyinnobackupex -uroot -p"Password123$" --incremental /xtrabackup/bakwuli/ --incremental-basedir=/xtrabackup/bakwuli/2024-08-15_20-43-21
    
  4. 查看备份目录

    Copyls /xtrabackup/bakwuli/
    

    输出应类似:

    Copy2024-08-15_20-43-21  2024-08-16_21-24-39  2024-08-17_21-35-30
    

差异备份的恢复

  1. 停止 MySQL 服务

    Copysystemctl stop mysqld
    
  2. 清理 MySQL 数据目录

    Copyrm -rf /var/lib/mysql/*
    
  3. 恢复完整备份

    Copyinnobackupex --apply-log --redo-only /xtrabackup/bakwuli/2024-08-15_20-43-21/
    
  4. 应用第一个差异备份

    Copyinnobackupex --apply-log --redo-only /xtrabackup/bakwuli/2024-08-15_20-43-21/ --incremental-dir=/xtrabackup/bakwuli/2024-08-16_21-24-39/
    
  5. 应用第二个差异备份

    Copyinnobackupex --apply-log /xtrabackup/bakwuli/2024-08-15_20-43-21/ --incremental-dir=/xtrabackup/bakwuli/2024-08-17_21-35-30/
    
  6. 将恢复的数据文件复制到 MySQL 数据目录

    Copycp -r /xtrabackup/bakwuli/2024-08-15_20-43-21/* /var/lib/mysql/
    
  7. 修改权限

    Copychown -R mysql:mysql /var/lib/mysql
    
  8. 启动 MySQL 服务

    Copysystemctl start mysqld
    

总结

差异备份的恢复过程相对简单,只需要恢复完整备份和最后一个差异备份。相比增量备份,差异备份的恢复速度更快,因为不需要依次应用所有增量备份。选择哪种备份方式应根据具体的需求和场景来决定。

待补充,,,,

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

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

相关文章

OpenVLA: An Open-Source Vision-Language-Action Model

发表时间&#xff1a;13 Jun 2024 作者单位&#xff1a;Stanford University Motivation: the potential to change how we teach robots new skills。然而&#xff0c;VLA 对机器人技术的广泛采用具有挑战性&#xff0c;因为 1&#xff09;现有的 VLA 在很大程度上是封闭的并…

Linux: 进程概念详解

目录 1. 冯诺依曼体系结构 2. 操作系统(Operator System) 1. 概念 2. 设计OS的目的 3. 任务 &#xff08;定位&#xff09; 4. 理解管理 3. 进程 1. 基本概念 2. 描述进程-PCB 3. 进程状态 4. 创建进程 fork 5. (Zombie)-僵尸进程 6. 孤儿进程 7. 进程优先…

[卷积神经网络]YOLOv10论文解读

原文地址&#xff1a; YOLOv10: Real-Time End-to-End Object Detectionhttps://arxiv.org/pdf/2405.14458 项目地址&#xff1a; yolov10https://github.com/THU-MIG/yolov10 一、概述 YOLOv10的改进点主要由两点&#xff1a;①提出一种基于无NMS的一致的双重训练策略&…

构建高效外贸电商系统的技术探索与源码开发

在当今全球化的经济浪潮中&#xff0c;外贸电商作为连接国内外市场的桥梁&#xff0c;其重要性日益凸显。一个高效、稳定、功能全面的外贸电商系统&#xff0c;不仅能够助力企业突破地域限制&#xff0c;拓宽销售渠道&#xff0c;还能提升客户体验&#xff0c;增强品牌竞争力。…

Web网站的授权oAuth2.0 单点登录

1.Web网站的授权(oAuth2.0) Client 第三方应用&#xff08;需要做鉴权的业务网站、业务系统&#xff09;UserAgent 用户代理&#xff08;浏览器&#xff09;Resource Owner 用户授权&#xff08;用户手动点击【同意】按钮&#xff0c;授权使用第三方登录渠道&#xff09;&#…

CPU飙升 怎么定位问题

传统的方法 【top】 查看所有进程占系统CPU的排序&#xff0c;定位是哪个进程搞的鬼。PID那一列就是进程号。 【top -Hp pid】 定位进程中使用 CPU 最高的线程tid 【printf ‘0x%x’ tid】 线程 tid 转化 16 进制,例如printf ‘0x%x’ 11882 得到16进制的 0x2e6a 【jstack…

Spring——IOC/DI思想

1、IOC&#xff08;Inversion of Control&#xff09;控制反转 何为控制反转&#xff1f; 在业务层中我们如果要调用数据层的方法那么必然牵扯到对象的创建&#xff0c;如果我想要改变上述数据层的方法中的内容&#xff0c;那么我就要改变业务层的代码&#xff0c;重新创建对…

R语言的矩阵运算

下面内容摘录自《R 语言与数据科学的终极指南》专栏文章的部分内容&#xff0c;每篇文章都在 5000 字以上&#xff0c;质量平均分高达 94 分&#xff0c;看全文请点击下面链接&#xff1a; 3章4节&#xff1a;R的逻辑运算和矩阵运算-CSDN博客文章浏览阅读165次。在 R 语言的丰…

PHP概述、环境搭建与基本语法讲解

目录 【学习目标、重难点知识】 什么是网站&#xff1f; 1. PHP 介绍 1.1. PHP 概述 1.1.1. PHP 是什么&#xff1f; 1.1.2. PHP 都能做什么&#xff1f; 1.2. PHP 环境搭建 1.2.1. PhpStudy 2. PHP 基本语法 2.1. PHP 语法入门 2.1.1. 第一个 PHP 程序 2.1.2. PHP …

Postman入门指南

前言 当前最为主流的开发模式&#xff1a;前后端分离 在这种模式下&#xff0c;前端技术人员基于"接口文档"&#xff0c;开发前端程序&#xff1b;后端技术人员也基于"接口文档"&#xff0c;开发后端程序。 由于前后端分离&#xff0c;对我们后端技术人…

PHP 无参数RCE总结

在这篇文章中&#xff0c;我总结了在参与CTF比赛过程中积累的关于PHP无参数远程代码执行&#xff08;RCE&#xff09;的经验。由于一直以来时间有限&#xff0c;今天终于有机会整理这些知识点。 可能用到的函数&#xff08;PHP的内置函数&#xff09; localeconv() 函数返回一…

String 事务

目录 一、什么是事务 二、Spring事务的实现方式 1、编程式事务 2、声明式事务 三、自动操作事务的注解的三个属性 1、rollbackFor 2、isolation 3、propagation 前言&#xff1a;本文所见围绕的主题是事务&#xff0c;所以笔者先讲解什么是事务&#xff0c;先让大家了解…

Selenium + Python 自动化测试15(模块化测试)

我们的目标是&#xff1a;按照这一套资料学习下来&#xff0c;大家可以独立完成自动化测试的任务。 上一篇我们讨论了使用SMTP 对象的sendmail 发送HTML报告的方法。 本篇文章我们接着讲测试代码的一些优化&#xff0c;提高我们测试代码的易读性&#xff0c;维护方便性。大家也…

ZooKeeper 集群的详细部署

ZooKeeper 集群部署 一、ZooKeeper 简介1.1 什么是 ZooKeeper1.2 ZooKeeper 特点 二 ZooKeeper 的架构和设计4.1 ZooKeeper 数据模型4.1.1 Znode 节点特性 三、ZooKeeper 的集群安装前准备工作3.1 需要的准备工作3.2 Linux 系统 3 个节点准备3.2.1 克隆3.2.2 配置另外两台服务器…

评论系统如何不崩溃?揭开海量评论背后的技术秘密

我是小米,一个喜欢分享技术的29岁程序员。如果你喜欢我的文章,欢迎关注我的微信公众号“软件求生”,获取更多技术干货! 大家好,我是小米!今天我们来聊聊一个非常实际的场景:海量新闻评论的入库问题。假设你在某个新闻平台工作,某条热门新闻突然火爆,用户的评论量如潮水…

SpringBoot Web开发(请求,响应,分层解耦)

Author_T17&#x1f965; 目录 一.请求响应概述 1.Servlet 2.DispatcherServlet 3.请求响应工作概图 4.BS/CS架构 二.API测试工具 三.请求 1.简单参数 &#xff08;1&#xff09;原始方式&#xff08;不推荐&#xff09; ​编辑 &#xff08;2&#xff09;Spring Boo…

【剑指 offer】删除链表中重复的结点

目 录 描述: 在一个排序的链表中&#xff0c;存在重复的结点&#xff0c;请删除该链表中重复的结点&#xff0c;重复的结点不保留&#xff0c;返回链表头指针。 例如&#xff0c;链表 1->2->3->3->4->4->5 处理后为 1->2->5 思路&#xff1a; 通过快慢…

2024年阳光电源社招校招入职测评:前程无忧智鼎题库全解析

在职场竞争日益激烈的今天&#xff0c;企业对人才的选拔标准越来越高。阳光电源&#xff0c;作为行业的领军企业&#xff0c;采用了前程无忧智鼎题库进行社招校招入职测评&#xff0c;旨在通过科学的方法选拔出与企业文化和价值观高度契合的人才。 测评概览 测评名称&#xff1…

大模型RAG企业级项目实战:Chatdoc智能助手文档(从零开始,适合新手)

大模型RAG企业级项目实战&#xff1a;Chatdoc智能助手文档&#xff08;从零开始&#xff0c;适合新手&#xff09; 大模型RAG企业级项目实战完整链接 LLM模型缺陷&#xff1a; ​ 知识是有局限性的(缺少垂直领域/非公开知识/数据安全) ​ 知识实时性(训练周期长、成本高) …

5计算机网络全面解析

网络功能和分类 计算机网络是计算机技术与通信技术相结合的产物&#xff0c;它实现了远程通信、远程信息处理和资源共享。 计算机网络的功能&#xff1a;数据通信、资源共享、管理集中化、实现分布式处理、负载均衡。 网络性能指标&#xff1a;速率、带宽&#xff08;频带宽…