hw7-impl
A. 物理备份和逻辑备份的优缺点: 物理备份: 优点:
- 速度:物理备份通常比逻辑备份快,因为它直接复制数据文件,不需要解析并应用数据,在超大型数据库之中,这个时间差异可能会进一步拉大。
- 备份工具简单:可以使用简单的cp、scp、tar等命令完成备份。
- 配置文件和日志文件一并备份:除了数据文件,还可以备份配置文件和日志文件
- 占用空间小: 二进制通常比相同数据的文本模式sql要小
缺点:
- 依赖性:需要停机迁移并且要求 DBMS 版本及配置最好和原服务器相同,否则可能引起未知问题,一般不能在不同架构上进行迁移。
逻辑备份: 优点:
- 便携性:逻辑备份通常是以SQL语句或数据文件的形式存在,可以在不同的数据库系统或平台之间轻松迁移。(如果不涉及到自己的独有方言)
- 灵活性:逻辑备份可以更容易地进行数据筛选和转换,例如,只备份特定的表或数据。也可以选择删改部分文件。数据粒度灵活,可以针对服务器、数据库或表级别进行恢复。
- 可读性:逻辑备份生成的数据通常是可读的,便于人工检查和验证。
缺点:
- 速度慢:逻辑备份通常比物理备份慢,因为它需要解析和转换数据,重建整表非常耗时。
- 一致性:在备份过程中,如果数据库正在被修改,可能会导致数据不一致。尤其是涉及到分布式和并发事务时
- 占用空间大:相同数据的文本模式sql通常比二进制要大
B. 全量备份和增量备份的恢复过程: 全量备份是指备份数据库中所有数据的备份。它提供了一个完整的数据副本,可以在任何时间点恢复到这个状态。 增量备份是指自上次备份以来对数据库所做的所有更改的备份。它可以是全量备份之后的任何更改,或者是自上次增量备份以来的更改。 恢复过程通常如下:
- 恢复全量备份:首先,恢复到特定时间点的全量备份。这是恢复过程的基础。
- 应用增量备份:然后,依次应用自全量备份以来的所有增量备份。每个增量备份都会将数据库恢复到它被备份时的状态。
- 验证数据:在每个增量备份应用后,验证数据的完整性和一致性,确保没有数据丢失或损坏 。
- 最终验证:在所有增量备份应用完毕后,进行最终的数据验证,确保数据库完全恢复到期望的状态。
对应的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机制的好处:
- 提高查询性能:通过将数据分散到不同的分区,可以减少查询需要扫描的数据量,从而提高查询性能。并且小的表有助于降低索引的体积和优化器的开销,因为优化器对不同的索引使用顺序需要进行排列组合,降低b+树高度就是降低磁盘IO压力, 提高索引效率
- 优化数据维护:Partition机制允许对单独的分区进行维护操作,如备份、恢复、删除等,而不影响其他分区。
- 数据管理:Partition可以简化数据管理,例如,可以轻松地添加或删除数据的历史记录。
- 并行处理:许多数据库管理系统如mysql支持对分区数据的并行处理,这可以显著提高数据处理的效率。
- 空间再利用:Partition可以 帮助更好地管理空间,通过删除或归档旧数据来释放空间。也方便对部分数据做迁移,提高水平拓展的能力
D. 即使数据文件在一台机器上有足够的存储空间存储,Partition仍然可能是必要的,原因包括:
- 性能优化:Partition可以提高单个分区上查询和维护操作的性能,通过减少数据扫描的范围和优化数据访问模式。如果数据的主要访问模式是单个分区内部的,那么Partition就可以加速。
- 数据管理:同理,如果数据的主要访问模式是单个分区内部的 ,Partition提供了更好的数据管理能力,使得数据的添加、删除更加高效。
- 资源利用:虽然存储空间足够,但Partition可以帮助更有效地使用资源,例如,通过在不同的物理设备上存储不同的分区来提高I/O性能。比如有多个磁盘,一张大表可能就是对应一个磁盘,能够提高性能
- 拓展性与并行:分区技术使得数据库表更容易扩展到更大的数据集,也便于后续可能的迁移,并且可以并行执行查询和其他数据库操作,从而进一步提高性能。