作者 | 吴守阳
审校 | 重楼
目录
1. 概述
2. 主要特性
3. 安装依赖
4.安装WiredTiger
5. WiredTiger编译支持的参数
6. 找到故障WT文件
7. 恢复
8. 总结
概述
WiredTiger 是一个高性能的键值存储和数据引擎,最初由 WiredTiger Inc. 开发,后来被 MongoDB 收购并集成到 MongoDB 中。WiredTiger 提供了高效的数据存储和检索能力,支持多种数据结构和压缩算法,适用于高并发和大规模数据处理场景。
主要特性
- 高性能:WiredTiger 通过高效的内存管理和并发控制机制,提供了卓越的读写性能。
- 多种数据结构:支持 B-Tree、LSM 树等多种数据结构,适用于不同的应用场景。
- 压缩算法:支持多种压缩算法(如 Snappy、LZ4、Zlib、Zstd),可以显著减少存储空间占用。
- 事务支持:提供 ACID 事务支持,确保数据的一致性和可靠性。
- 可扩展性:设计为高度可扩展,适用于从小型嵌入式设备到大型分布式系统的各种环境。
- 灵活的配置:可以通过丰富的配置选项来优化性能和资源使用。
- 数据恢复:提供数据恢复功能,确保在数据损坏或系统故障后能够恢复数据。
数据库节点出现无法启动的问题,显示某个集合文件损坏,使用 --repair修复后,还是不能启动。接下来使用WT修复,此次修复的数据库版本的是7.0.14
安装依赖
安装WiredTiger
WiredTiger编译支持的参数
WiredTiger 软件支持一些额外的配置选项:
功能:配置 WiredTiger 在发生故障时休眠并等待调试器附加。
用途:主要用于开发和调试,不建议在生产环境中使用。
-DHAVE_DIAGNOSTIC=1
功能:配置 WiredTiger 在运行时执行各种诊断测试。
默认值:默认情况下,非发布(Release)构建类型会启用此选项。
用途:主要用于开发和调试,不建议在生产环境中使用。
功能:配置 WiredTiger 在线程让步时不要使用内存屏障,用于诊断目的。
前提条件:必须同时启用 HAVE_DIAGNOSTIC 选项。
用途:主要用于开发和调试,不建议在生产环境中使用。
功能:配置 WiredTiger 使用 LZ4 压缩。
默认值:如果系统中存在 LZ4 库,默认情况下会启用此选项。
用途:提高数据压缩效率。
功能:构建 WiredTiger 的 Python API。
前提条件:需要 SWIG 工具。
默认值:如果系统中存在 Python,默认情况下会启用此选项。
用途:允许使用 Python 访问 WiredTiger 功能。
功能:配置 WiredTiger 使用 snappy 压缩。
默认值:如果系统中存在 snappy 库,默认情况下会启用此选项。
用途:提高数据压缩效率。
功能:配置 WiredTiger 使用 zlib 压缩。
默认值:如果系统中存在 zlib 库,默认情况下会启用此选项。
用途:提高数据压缩效率。
功能:配置 WiredTiger 使用 Zstd 压缩。
默认值:如果系统中存在 Zstd 库,默认情况下会启用此选项。
用途:提高数据压缩效率。
功能:配置 WiredTiger 禁用独立构建。独立构建默认是启用的。
用途:如果你希望 WiredTiger 作为某个更大项目的一部分构建,可以禁用独立构建。
功能:配置 WiredTiger 在主库中包含对扩展的支持。这避免了需要额外的库来支持这些扩展。目前支持的内置扩展选项包括 lz4, snappy, zlib 和 zstd。
用途:简化依赖管理,减少外部库的依赖。
功能:配置 WiredTiger 使用特定的互斥锁类型进行序列化。
选项:
pthread(默认):使用 POSIX 1003.1c 线程互斥锁。
pthread_adaptive:使用配置为自适应的 POSIX 1003.1c 线程互斥锁(如果该功能可用)。
gcc:使用基于 GCC 的自旋锁。
用途:优化多线程环境中的性能
找到故障WT文件
找到故障集合对应的wt文件
恢复
数据库恢复成功
执行以下操作修复
再次启动数据库
查询数据库
总结
WiredTiger 11.2.0 是一个强大且灵活的数据引擎,不仅提供了高效的数据存储和检索能力,还具备强大的数据恢复功能。通过合理的配置和优化,WiredTiger 可以确保数据的完整性和可靠性,适用于多种高性能存储和检索场景。在使用过程中,合理配置和优化是确保性能和数据安全的关键。通过注意配置优化、数据一致性、性能监控、安全性和升级维护,可以充分发挥 WiredTiger 的优势,满足不同应用场景的需求。
作者介绍
吴守阳,51CTO社区编辑,拥有8年DBA工作经验,熟练管理MySQL、Redis、MongoDB等开源数据库。精通性能优化、备份恢复和高可用性架构设计。善于故障排除和自动化运维,保障系统稳定可靠。具备良好的团队合作和沟通能力,致力于为企业提供高效可靠的数据库解决方案。