Skip to main content

hw7-impl

A. 物理备份和逻辑备份的优缺点: 物理备份: 优点:

  1. 速度:物理备份通常比逻辑备份快,因为它直接复制数据文件,不需要解析并应用数据,在超大型数据库之中,这个时间差异可能会进一步拉大。
  2. 备份工具简单:可以使用简单的cp、scp、tar等命令完成备份。
  3. 配置文件和日志文件一并备份:除了数据文件,还可以备份配置文件和日志文件
  4. 占用空间小: 二进制通常比相同数据的文本模式sql要小

缺点:

  1. 依赖性:需要停机迁移并且要求 DBMS 版本及配置最好和原服务器相同,否则可能引起未知问题,一般不能在不同架构上进行迁移。

逻辑备份: 优点:

  1. 便携性:逻辑备份通常是以SQL语句或数据文件的形式存在,可以在不同的数据库系统或平台之间轻松迁移。(如果不涉及到自己的独有方言)
  2. 灵活性:逻辑备份可以更容易地进行数据筛选和转换,例如,只备份特定的表或数据。也可以选择删改部分文件。数据粒度灵活,可以针对服务器、数据库或表级别进行恢复。
  3. 可读性:逻辑备份生成的数据通常是可读的,便于人工检查和验证。

缺点:

  1. 速度慢:逻辑备份通常比物理备份慢,因为它需要解析和转换数据,重建整表非常耗时。
  2. 一致性:在备份过程中,如果数据库正在被修改,可能会导致数据不一致。尤其是涉及到分布式和并发事务时
  3. 占用空间大:相同数据的文本模式sql通常比二进制要大

B. 全量备份和增量备份的恢复过程: 全量备份是指备份数据库中所有数据的备份。它提供了一个完整的数据副本,可以在任何时间点恢复到这个状态。 增量备份是指自上次备份以来对数据库所做的所有更改的备份。它可以是全量备份之后的任何更改,或者是自上次增量备份以来的更改。 恢复过程通常如下:

  1. 恢复全量备份:首先,恢复到特定时间点的全量备份。这是恢复过程的基础。
  2. 应用增量备份:然后,依次应用自全量备份以来的所有增量备份。每个增量备份都会将数据库恢复到它被备份时的状态。
  3. 验证数据:在每个增量备份应用后,验证数据的完整性和一致性,确保没有数据丢失或损坏。
  4. 最终验证:在所有增量备份应用完毕后,进行最终的数据验证,确保数据库完全恢复到期望的状态。

对应的mysql 命令大致如下

# 备份数据库
mysqldump -u username -p database_name > backup.sql
# 导入
mysql -u username -p database_name < backup.sql

增量备份在mysql配置文件之中

[mysqld]
log-bin=mysql-bin

启用二进制日志文件,之后可以 mysqlbinlog mysql-bin.000001 > incremental_backup.sql mysql -u username -p < incremental_backup.sql 在backup全量复制的基础上进行增量复制

验证时先验证表的元信息SHOW TABLES,再验证约束SHOW INDEX,再对数据进行验证,例如COUNT, 抽查,使用默克尔树进行hash一致性校验等等

C. Partition机制的好处:

  1. 提高查询性能:通过将数据分散到不同的分区,可以减少查询需要扫描的数据量,从而提高查询性能。并且小的表有助于降低索引的体积和优化器的开销,因为优化器对不同的索引使用顺序需要进行排列组合,降低b+树高度就是降低磁盘IO压力, 提高索引效率
  2. 优化数据维护:Partition机制允许对单独的分区进行维护操作,如备份、恢复、删除等,而不影响其他分区。
  3. 数据管理:Partition可以简化数据管理,例如,可以轻松地添加或删除数据的历史记录。
  4. 并行处理:许多数据库管理系统如mysql支持对分区数据的并行处理,这可以显著提高数据处理的效率。
  5. 空间再利用:Partition可以帮助更好地管理空间,通过删除或归档旧数据来释放空间。也方便对部分数据做迁移,提高水平拓展的能力

D. 即使数据文件在一台机器上有足够的存储空间存储,Partition仍然可能是必要的,原因包括:

  1. 性能优化:Partition可以提高单个分区上查询和维护操作的性能,通过减少数据扫描的范围和优化数据访问模式。如果数据的主要访问模式是单个分区内部的,那么Partition就可以加速。
  2. 数据管理:同理,如果数据的主要访问模式是单个分区内部的 ,Partition提供了更好的数据管理能力,使得数据的添加、删除更加高效。
  3. 资源利用:虽然存储空间足够,但Partition可以帮助更有效地使用资源,例如,通过在不同的物理设备上存储不同的分区来提高I/O性能。比如有多个磁盘,一张大表可能就是对应一个磁盘,能够提高性能
  4. 拓展性与并行:分区技术使得数据库表更容易扩展到更大的数据集,也便于后续可能的迁移,并且可以并行执行查询和其他数据库操作,从而进一步提高性能。