rsync、dd 然后添加到 RAID 1,是否会导致数据库损坏?

rsync、dd 然后添加到 RAID 1,是否会导致数据库损坏?

首先,我有一块已设置为 RAID 的 HDD,类型为卷,而不是 RAID 0 或 RAID 1... 我想再添加一块 HDD 来设置 RAID 1 阵列。以下步骤是我所做的。

  • 将旧硬盘的整个磁盘从服务器分离dd到新硬盘:``dd if=/dev/sda of=/dev/sdb conv=noerror,sync bs=2048`

  • 将旧硬盘重新安装回服务器使用一天。周四,此硬盘上的数据发生了一些变化。

  • 然后,我再次将旧硬盘从服务器上卸下。然后rsync -aruv从旧硬盘卸到新硬盘上。dd这次不是:rsync -aruv /data/ /data-2/

  • 将两个 HDD 都攻击到服务器并设置新的 RAID 1 阵列。

此时,磁盘(RAID 1)上的所有内容都已被删除(设置新 RAID 阵列时注意到的)。很可能,因为我认为分区表是唯一被删除的内容。

一些信息:

  • 我的服务器是 System X 3400,它使用ServeRAID 8-i 控制器

  • 安装了 Windows Server 2008 R 并运行 MSSQL

  • 此磁盘用于存储 MSSQL 数据库。服务器上的数据卷/分区

  • FS 是 NTFS。

  • 我不想使用第三块硬盘来备份旧硬盘上的数据,然后在设置 RAID 阵列后再复制回来,并在第一块(旧)和第二块(新)硬盘上重新创建新的分区表。这就是为什么我将dd第一块到第二块的rsync数据放在这些磁盘上,因为使用旧硬盘一天后有些东西发生了变化,而且恢复分区表完成后在此(这些)(对)磁盘上设置新的 RAID 1 阵列。我的意思是新的 RAID 阵列(包含两个这样的磁盘)。我太懒了!

  • 最后一次重新启动服务器。一切似乎都运行良好。哇,我不必重新创建新的分区表并从第三个硬盘驱动器(如果有)复制数据。不再重新检查,我去睡觉了。

但:

第二天早上,MSSQL 客户端弹出一个诊断错误,内容如下:...无法连接到默认数据库...这也是我在 MSSQL 日志中得到的结果。

重新检查数据,其中一个MSSQL数据库文件是0kB。天哪。这是最大的文件,rsync之前已经成功过。

问题:

  • MSSQL 数据库文件大小为零。我不知道为什么。

问题:

  • 我所做的方法和我执行的步骤会导致数据损坏吗?这不应该是完成我这样的任务的方法吗?

  • 有什么可以使数据库文件成为零大小文件、MSSQL 行为或其他什么?

我对服务器端还很陌生。

欢迎大家提供帮助!谢谢!

答案1

说实话——我认为你完全做错了。

创建 RAID 时,需要一些空间来分配元数据,描述该磁盘上的 RAID 类型。当磁盘成为 RAID 成员/备用磁盘时,控制器会对其进行初始化。

它应该是这样的:
如果控制器允许,您可以创建一个缺少一个驱动器的降级镜像:
1.初始化新驱动器并在控制器 bios 中创建缺少一个驱动器的 RAID1 阵列。2
.停止所有磁盘活动 Rsync:旧磁盘->新磁盘
3.卸载旧磁盘,在旧磁盘之前所在的位置安装新阵列。4
.验证一切正常。5
.转到控制器 bios 并初始化旧磁盘并将其添加为备用。raid 应该重建。

如果控制器 BIOS 不允许创建降级的 RAID 阵列,那么最安全的做法是将所有数据转储到另一个磁盘/服务器,然后创建 RAID 阵列。

您的程序可能出现什么问题:
- 在没有备份的情况下进行这种危险的操作是一个糟糕的选择。
- 你在 rsync 之前是否停止了所有磁盘活动?这就是为什么文件长度可能为零的原因,因为它被数据库引擎锁定了
- 你必须检查你的控制器文档,以确保可以从常规驱动器转换为阵列成员。我自己总是威胁要将磁盘变成阵列成员,就像格式化一样。
- 在这里将一个磁盘 DD 到另一个磁盘不是一个好主意。你复制了所有内容,甚至分区 GUID。复制损坏的硬盘并更换它也许是一个不错的选择。

相关内容