【YashanDB数据库】VMware虚拟机使用默认安装,在掉电之后数据库无法启动

简介: VMware虚拟机使用默认安装,在掉电之后数据库无法启动

问题现象
客户使用VMware虚拟机使用默认安装,部署YashanDB个人版,在掉电之后无法启动

操作系统:

Virtualization: VMware

Operating System: CentOS Linux 7 (Core)

CPE OS Name: cpe:/o:centos:centos:7

Kernel: Linux 3.10.0-1160.el7.x86_64

Architecture: x86-64

[yashan@localhost ~]$ nohup /home/yashan/yasdb_home/yashandb/23.1.1.100/bin/yasdb open -D /home/yashan/yasdb_data/db-1-1 &

[1] 6684

[yashan@localhost ~]$ nohup: ignoring input and appending output to ‘nohup.out’

[yashan@localhost ~]$ cat nohup.out

Starting instance nomount

Instance started

Starting instance open

[1]+ Segmentation fault (core dumped) nohup /home/yashan/yasdb_home/yashandb/23.1.1.100/bin/yasdb open -D /home/yashan/yasdb_data/db-1-1

问题单:客户测试库启动后很快就Segmentation fault

问题的风险及影响
客户为个人环境,掉电后无法拉起,手动拉起会出现coredump,影响个人使用

问题影响的版本
YashanDB版本:

YashanDB Server Personal Edition Release 23.1.1.100 x86_64 0e623bd

问题发生原因
VMware因为涉及虚拟化层,存在一些特有机制和考量。VMware使用缓存来提高磁盘操作速度,包括读缓存和写缓存。写操作可能先写入缓存,然后根据策略决定何时将数据落盘。

在默认安装模式下,数据不会实时落盘(实测方式:可以在虚拟机中新增文件,随机写入内容,观察虚拟机文件修改时间是否发生变化,可以确认文件没有实时写入物理磁盘)。

因为客户环境中的磁盘文件落盘不是实时,掉电过程出现异常,导致undo中的lsn比ctrl中的lsn大的情况,进而导致数据库无法启动。

解决方法及规避方式
因为是个人环境,没有真实数据,重新安装新版本的YashanDB。

问题分析和处理过程
1、客户反馈是掉电,DOUBLE_WRITE_ENABLED默认为TRUE,一线反馈客户没有修改该参数

2、分析出问题的堆栈位置setGroupBlocksLsn COD_PANIC,head->lsn是 undo block的lsn,而assist->lsn是系统全局的lsn自增得到的;

系统的lsn先写入ctrl文件,再写入undo文件,在db启动的时候系统全局的lsn从ctrl文件中读取,逻辑上确保undo的lsn比系统的lsn小;

3、发现VMware虚拟机默认安装为虚拟磁盘。在默认安装方式下,在虚拟机中新增文件,随机写入内容,观察虚拟机文件修改时间并未发生变化,可以确认文件没有实时写入物理磁盘。

在默认安装模式下,掉电之后,虚拟机出现磁盘文件损坏,无法进入虚拟机:

4、VMware因为涉及虚拟化层,存在一些特有机制和考量。 VMware使用缓存来提高磁盘操作速度,包括读缓存和写缓存。写操作可能先写入缓存,然后根据策略(如ESXi的磁盘调度器策略)决定何时将数据落盘。实测使用“强制写入”策略(VMware的“独立-永久”磁盘模式)可确保数据立即写入,以提高数据安全性。

5、因为客户环境中的磁盘文件落盘不是实时, 掉电过程出现异常, 导致undo中的lsn比ctrl中的lsn大的情况, 进而导致数据库无法启动。

官网参考说明:

更改虚拟硬盘节点和模式设置 (VMware.com)

在物理磁盘或未使用的分区上安装客户机操作系统 (VMware.com)

经验总结

1、VMware虚拟机,使用物理磁盘。

2、对虚拟磁盘需要设置独立-永久(创建虚拟机的时候才能修改, 启动之后不能修改):

配置成功, 在首页即可看到对应的标志:

相关文章
|
2月前
|
存储 分布式计算 Linux
安装篇--CentOS 7 虚拟机安装
VMware 装 CentOS 7 不知道从哪下手?这篇超详细图文教程手把手教你在 VMware Workstation 中完成 CentOS 7 桌面系统的完整安装流程。从 ISO 镜像下载、虚拟机配置,到安装图形界面、设置用户密码,每一步都有截图讲解,适合零基础新手快速上手。装好之后无论你是要搭 Hadoop 集群,还是练 Linux ,这个环境都够你折腾一整天!
848 2
|
2月前
|
Oracle 关系型数据库 虚拟化
在VMware的Win10虚拟机中安装使用ENSP
本文介绍了在Windows 10虚拟机上安装ENSP及相关软件的全过程,包括VirtualBox、WinPcap、Wireshark、VLC和ENSP的安装步骤,并提供图文演示,帮助用户顺利完成配置与测试。
763 134
|
19天前
|
Linux 虚拟化 iOS开发
VMware Remote Console 13.0.1 for macOS, Linux, Windows - vSphere 虚拟机控制台的桌面客户端
VMware Remote Console 13.0.1 for macOS, Linux, Windows - vSphere 虚拟机控制台的桌面客户端
221 0
VMware Remote Console 13.0.1 for macOS, Linux, Windows - vSphere 虚拟机控制台的桌面客户端
|
27天前
|
Linux 虚拟化 iOS开发
VMware Fusion 25H2 OEM BIOS 2.7 - 在 macOS 中运行 Windows 虚拟机的最佳方式
VMware Fusion 25H2 OEM BIOS 2.7 - 在 macOS 中运行 Windows 虚拟机的最佳方式
292 0
VMware Fusion 25H2 OEM BIOS 2.7 - 在 macOS 中运行 Windows 虚拟机的最佳方式
|
1月前
|
存储 Linux 文件存储
VMware vSphere Replication 9.0.4 - 虚拟机复制和数据保护
VMware vSphere Replication 9.0.4 - 虚拟机复制和数据保护
118 2
|
2月前
|
Ubuntu 安全 关系型数据库
安装与配置MySQL 8 on Ubuntu,包括权限授予、数据库备份及远程连接指南
以上步骤提供了在Ubuntu上从头开始设置、配置、授权、备份及恢复一个基础但完整的MySQL环境所需知识点。
341 7
|
3月前
|
Linux 虚拟化 iOS开发
Windows Server 2025 OVF (2025 年 8 月更新) - VMware 虚拟机模板
Windows Server 2025 OVF (2025 年 8 月更新) - VMware 虚拟机模板
353 3
Windows Server 2025 OVF (2025 年 8 月更新) - VMware 虚拟机模板
|
2月前
|
监控 Linux 网络安全
VMware vCenter Converter 9.0 - P2V 虚拟机转换工具
VMware vCenter Converter 9.0 - P2V 虚拟机转换工具
537 0
VMware vCenter Converter 9.0 - P2V 虚拟机转换工具
|
2月前
|
缓存 关系型数据库 BI
使用MYSQL Report分析数据库性能(下)
使用MYSQL Report分析数据库性能
100 3
|
2月前
|
关系型数据库 MySQL 数据库
自建数据库如何迁移至RDS MySQL实例
数据库迁移是一项复杂且耗时的工程,需考虑数据安全、完整性及业务中断影响。使用阿里云数据传输服务DTS,可快速、平滑完成迁移任务,将应用停机时间降至分钟级。您还可通过全量备份自建数据库并恢复至RDS MySQL实例,实现间接迁移上云。

热门文章

最新文章