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

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

注意,通常 完备增备,日志(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.rhkb.cn/news/401505.html

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

相关文章

凹凸纹理概念

1、凹凸纹理 纹理除了可以用来进行颜色映射外&#xff0c;另外一种常见的应用就是进行凹凸映射。凹凸映射的目的是使用一张纹理来修改模型表面的法线&#xff0c;让我们不需要增加顶点&#xff0c;而让模型看起来有凹凸效果。原理&#xff1a;光照的计算都会利用法线参与计算&…

数的个位相加

给定一个非负整数 num&#xff0c;反复将各个位上的数字相加&#xff0c;直到结果为一位数。返回这个结果。 示例 1: 输入: num 38输出: 2 解释: 各位相加的过程为&#xff1a; 38 --> 3 8 --> 11 11 --> 1 1 --> 2 由于 2 是一位数&#xff0c;所以返回 2。…

搜维尔科技:驾驶模拟器背后的技术: Varjo的虚拟/混合现实 (VR/XR)提供独特的优势,最终加快汽车开发创新的步伐

专业驾驶模拟器广泛应用于车辆开发&#xff0c;帮助汽车行业在开发过程的早期做出更好的设计决策。总体目标是为测试驾驶员提供最真实的驾驶体验&#xff0c;包括动态动作和声音&#xff0c;并测试控制算法或辅助系统等功能。环境越真实&#xff0c;驾驶员的体验就越接近最终车…

视觉SLAM ch3补充——在Linux中配置VScode以及CMakeLists如何添加Eigen库

ch3中的所有代码&#xff0c;除了在kdevelop中运行&#xff0c;还可以在VScode中运行。下面将简要演示配置过程&#xff0c;代码不再做解答&#xff0c;详细内容在下面的文章中。&#xff08;这一节中的pangolin由于安装过程中会出现很多问题&#xff0c;且后续内容用不到该平台…

自动化解决 reCAPTCHA v2:CapSolver 教程

对于那些经常进行网页爬取的人来说&#xff0c;你是否曾觉得 reCAPTCHA v2 就像是互联网版的过于严格的裁判员&#xff0c;总是在质疑你的真实性&#xff1f;但如果你能够轻松且合规地与这些裁判员达成和解&#xff0c;使你的网络搜索和自动化任务变得更顺畅&#xff0c;那该有…

k8s部署kubeadm init初始化不成功,coredns处于pending,master和nodes处于notready状态

声明&#xff1a;本文仅为个人学习笔记使用&#xff0c;解决方法参考原文&#xff1a; https://blog.csdn.net/Harry_mumu/article/details/132099876 在部署完k8s集群后&#xff0c;节点一直处于notready状态&#xff08;master和nodes&#xff09; 查看kubectl get pods -n…

全球海事航行通告解析辅助决策系统

“全球海事航行通告解析辅助决策系统”是一个针对海事行业设计的智能系统&#xff0c;旨在帮助海上导航和航运操作人员解析和应对全球发布的海事航行通告。 要做这样的系统我们必须要了解海事签派员的日常工作。 海事签派员&#xff0c;也称为船舶操作员或船运调度员&#xff0…

HanLP分词的使用与注意事项

1 概述 HanLP是一个自然语言处理工具包&#xff0c;它提供的主要功能如下&#xff1a; 分词转化为拼音繁转简、简转繁提取关键词提取短语提取词语自动摘要依存文法分析 下面将介绍其分词功能的使用。 2 依赖 下面是依赖的jar包。 <dependency><groupId>com.ha…

替代进程注入的新工具

目录 前言 Windows Session 的利用 Windows Session 介绍 跨会话激活技术 什么是跨会话激活机制&#xff1f; 常见的跨会话激活技术 结合利用 地址 前言 众所周知&#xff0c;常用的C2工具&#xff08;例如CobaltStrike&#xff09;在另一个进程上下文中执行代码经常使…

【Android】不同系统版本获取设备MAC地址

【Android】不同系统版本获取设备MAC地址 尝试实现 尝试 在开发过程中&#xff0c;想要获取MAC地址&#xff0c;最开始想到的就是WifiManager&#xff0c;但结果始终返回02:00:00:00:00:00&#xff0c;由于用得是wifi &#xff0c;考虑是不是因为用得网线的原因&#xff0c;但…

Fultter项目中IOS打包问题整理(附带解决方案)

Fultter项目中IOS打包问题整理&#xff08;附带解决方案&#xff09; 问题一&#xff1a;CocoaPods 在你的项目中找不到名为 AlicloudPush 版本为 ~> 1.9.1 的 Pod 规范。报错信息问题分析解决方法 问题二&#xff1a;ruby版本问题报错信息问题分析问题原因解决方法 问题三&…

WPS真题题库导入刷题小程序:个人使用经验分享

这篇文章的诞生&#xff0c;是因为我即将踏上一场超级有趣的挑战——备考全国计算机等级二级WPS Office高级应用与设计的冒险之旅&#xff01; WPS的分值&#xff1a; 单项选择题20分(含公共基础知识部分10分)。 WPS处理文字文档操作题30分。 WPS处理电子表格操作题30分。 …

挑战程序设计竞赛c++(第一天)1.抽签(枚举,二分法查找)2.三角形(暴力枚举)

方法一&#xff1a; #include<iostream> #include<algorithm> #include<vector>using namespace std; char flag0; int n0; int m0; int shu[1000]{0}; int i; int main() {cin >> n;cin >> m;for (i0;i<n;i){cin >> shu[i];}vector&l…

Design Compiler——综合及debug流程

文章目录 前言一、什么是综合&#xff1f;二、综合的流程1. Develop HDL files2. Specify libraries3. Read design4. Define design environment5. Set design constraints6. Select compile strategy7. Synthesize and optimize the design8. Analyze and resolve design pro…

idea 中的properties文件中文乱码

如遇到以下类似的问题&#xff1a; 配置setting中-》Editor-》File Encodings 中&#xff0c;将以下三处位置的编码格式进行修改 Global Encoding GBK Project Encoding GBK Default encoding for properties files UTF-8 修改之后文件的中文显示正常

老友记台词 第一季 第十四集 Friends 114(全英版)

文章目录 V114 The One With the Candy Hearts[Scene: Central Perk, Ross is eyeing a beautiful woman at the counter, and Joey and Chandler are egging him on to go talk to her. No pun intended. I mean it.][Scene: Central Perk, Monica, Rachel, Phoebe, Joey, Cha…

从源码到应用:医疗陪诊系统与在线问诊小程序开发详解

在数字化医疗时代&#xff0c;医疗陪诊系统与在线问诊小程序的开发成为了医疗机构和技术公司关注的焦点。接下来&#xff0c;小编将与您一同深入了解。 一、医疗陪诊系统的核心功能 医疗陪诊系统旨在为患者提供更贴心的医疗服务&#xff0c;通过专业人员陪同患者完成就医过程。…

【C语言篇】C语言常考及易错题整理DAY1

文章目录 C语言常考及易错题整理选择题全局、局部和静态变量#define与typedef转义字符操作符循环其他 编程题计算日期到天数转换柯尼希定理旋转数组的最小数字描述错误的集合整数转换密码检查 C语言常考及易错题整理 选择题 全局、局部和静态变量 执行下面程序&#xff0c;正…

[000-01-030].第3节 :搭建Zookeeper集群环境

1.搭建Zookeeper集群环境 1.1.集群安装&#xff1a; a.集群规划&#xff1a; 在 hadoop103(192.168.2.3)、hadoop104(192.168.2.4) 和 hadoop105&#xff08;(192.168.2.5&#xff09; 三个节点上都部署 Zookeeper b.解压安装&#xff1a; 1.下载zookeeper压缩版本&#x…

微软披露Office最新零日漏洞,可能导致数据泄露

近日&#xff0c;微软披露了 Office 中一个未修补的零日漏洞&#xff0c;如果被成功利用&#xff0c;可能导致敏感信息在未经授权的情况下泄露给恶意行为者。 该漏洞被追踪为 CVE-2024-38200&#xff08;CVSS 得分&#xff1a;7.5&#xff09;&#xff0c;被描述为一个欺骗漏洞…