You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

挂载无法启动的Ubuntu 16.04 LVM硬盘后,如何导出MySQL数据库及修复启动?

我来帮你一步步解决这两个问题——先搞定MySQL数据库导出,再聊聊修复硬盘启动的思路:

从挂载的LVM硬盘导出MySQL数据库

既然你已经把旧服务器的LVM卷挂载到了工作站上,有两种可靠的方法可以导出MySQL数据库:

方法一:直接用mysqldump读取数据目录(无需启动MySQL服务)

这种方法最安全,不会影响工作站上的现有MySQL服务:

  • 首先确认旧系统MySQL数据目录的挂载路径:假设你把旧系统根目录挂载到了/mnt/old_server,那么数据目录通常是/mnt/old_server/var/lib/mysql
  • 用sudo执行导出命令,确保权限足够读取MySQL数据文件:
    • 导出所有数据库:
      sudo mysqldump --datadir=/mnt/old_server/var/lib/mysql --all-databases > all_old_databases.sql
      
    • 只导出特定数据库(替换your_db_name为实际库名):
      sudo mysqldump --datadir=/mnt/old_server/var/lib/mysql your_db_name > your_db_name.sql
      
  • 提示:如果工作站的MySQL版本和旧服务器差异较大,可以添加--compatible=mysql5.7(根据旧版本调整)参数避免兼容性问题。

方法二:临时启动MySQL服务使用旧数据目录

如果需要先验证数据库内容再导出,或者遇到方法一的兼容性问题,可以临时启动服务:

  1. 先停止工作站上的MySQL服务,避免端口冲突:
    sudo systemctl stop mysql
    
  2. 复制旧系统的MySQL配置文件并修改路径:
    cp /mnt/old_server/etc/mysql/my.cnf /tmp/old_mysql.cnf
    
    编辑/tmp/old_mysql.cnf,将datadir改为/mnt/old_server/var/lib/mysql,socket改为/tmp/old_mysql.sock(避免覆盖工作站的socket)
  3. 启动临时MySQL服务:
    sudo mysqld_safe --defaults-file=/tmp/old_mysql.cnf &
    
  4. 连接到临时服务导出数据:
    mysqldump -S /tmp/old_mysql.sock --all-databases > all_old_databases.sql
    
  5. 导出完成后停止临时服务,恢复工作站的MySQL:
    sudo mysqladmin -S /tmp/old_mysql.sock shutdown
    sudo systemctl start mysql
    

修复旧LVM硬盘的启动问题

先从基础排查开始,逐步定位问题:

步骤1:验证LVM卷组状态

  • 检查系统识别到的LVM资源:
    sudo vgscan
    sudo vgdisplay
    sudo lvdisplay
    
  • 如果卷组处于未激活状态,执行激活命令:
    sudo vgchange -ay
    

步骤2:修复GRUB引导加载器

这是最常见的启动故障原因:

  1. 挂载旧系统根目录及必要的虚拟文件系统:
    sudo mount /dev/mapper/[旧卷组名]-root /mnt/old_server
    sudo mount --bind /dev /mnt/old_server/dev
    sudo mount --bind /proc /mnt/old_server/proc
    sudo mount --bind /sys /mnt/old_server/sys
    
  2. 进入旧系统的chroot环境:
    sudo chroot /mnt/old_server
    
  3. 更新GRUB配置并重新安装到旧硬盘(替换/dev/sdX为旧硬盘的设备名,比如sdb,不要加分区号):
    update-grub
    grub-install /dev/sdX
    
  4. 退出chroot并卸载挂载:
    exit
    sudo umount /mnt/old_server/sys
    sudo umount /mnt/old_server/proc
    sudo umount /mnt/old_server/dev
    sudo umount /mnt/old_server
    

步骤3:检查文件系统完整性

如果文件系统损坏也会导致启动失败:

  • 确保旧逻辑卷已经卸载:
    sudo umount /mnt/old_server
    
  • 运行fsck检查并修复(替换为你的逻辑卷路径):
    sudo e2fsck -f /dev/mapper/[旧卷组名]-root
    

注意:执行fsck前必须卸载逻辑卷,否则可能造成不可逆的数据损坏

步骤4:排查initramfs问题

如果启动时提示initramfs错误,重新生成initramfs:

  1. 进入chroot环境(参考步骤2的挂载操作)
  2. 重新生成所有内核版本的initramfs:
    update-initramfs -u -k all
    

步骤5:查看启动日志定位问题

如果以上步骤无效,查看旧系统的启动日志找线索:

cat /mnt/old_server/var/log/syslog | grep -i error
cat /mnt/old_server/var/log/dmesg | grep -i disk

日志里的错误信息(比如磁盘IO错误、LVM挂载失败)能帮你精准定位问题。


内容的提问来源于stack exchange,提问作者Jacco

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 03:22:21