输出示例中,你会看到类似 /dev/sdb 的新磁盘(未格式化)

admin
请提供您需要摘要的具体内容,我会根据您的要求(100-200字)为您生成摘要。

数据库磁盘空间告急?Linux 下将 MySQL 数据迁移至独立磁盘的完整实战指南 **

在 Linux 服务器运维中,最常见的问题之一莫过于根分区()空间不足,当数据库(如 MySQL、PostgreSQL 等)不断增长时,它会迅速占用系统盘空间,导致系统无法写入日志甚至崩溃,为了避免这种情况,将数据库的数据目录迁移到独立的磁盘或分区是最佳实践。

本文将以最常用的 MySQL 为例,详细讲解如何将数据库挂载到其他磁盘,确保数据安全并提升性能。

输出示例中,你会看到类似 /dev/sdb 的新磁盘(未格式化)


准备工作

在开始操作之前,我们需要确认两件事:

  1. 确认新磁盘: 系统是否已经识别到了新的硬盘(/dev/sdb)。
  2. 数据备份: 这是最重要的一步,在移动数据前,务必对数据库进行全量备份。

查看磁盘状态

使用 lsblkfdisk -l 命令查看系统中的磁盘情况。

lsblk```
### 二、 创建分区并格式化
假设新的磁盘设备名为 `/dev/sdb`(请根据实际情况替换)。
#### 1. 创建分区
使用 `fdisk` 命令对磁盘进行分区。
```bash
fdisk /dev/sdb
  • 输入 n 创建新分区。
  • 输入 p 选择主分区。
  • 直接回车(使用默认值)。
  • 直接回车(使用默认值)。
  • 输入 w 保存并退出。

格式化分区

分区创建后,我们需要将其格式化为文件系统(ext4 或 xfs)。

mkfs.ext4 /dev/sdb1
# 或者使用 xfs: mkfs.xfs /dev/sdb1

创建挂载点并挂载

挂载点是指文件系统中用于访问该磁盘的目录。

创建挂载目录

建议在根目录下创建一个明确的目录,/data/mysql

mkdir -p /data/mysql

临时挂载

将新分区挂载到该目录。

mount /dev/sdb1 /data/mysql

验证挂载

使用 df -h 命令查看,确认 /data/mysql 已显示新磁盘的容量。

df -h

迁移数据库数据

磁盘已经挂载好了,但里面的数据还是空的,我们需要把现有的数据库数据从旧位置复制到新位置。

停止数据库服务

必须先停止服务,否则文件可能处于锁定状态,导致复制失败。

systemctl stop mysql
# 或者如果是其他服务,如 mariadb: systemctl stop mariadb

复制数据

使用 rsync 命令将旧数据复制到新挂载点。-a 参数表示归档模式(保留权限、时间戳等),-v 表示显示详细信息。

rsync -av /var/lib/mysql/ /data/mysql/

(注意:如果你的 MySQL 数据目录不是 /var/lib/mysql,请替换为实际路径,/usr/local/mysql/data)

修改目录权限

MySQL 服务通常以 mysql 用户运行,必须确保新目录的所有权属于该用户。

ch
文章版权声明:除非注明,否则均为xmsdn原创文章,转载或复制请以超链接形式并注明出处。

取消
微信二维码
微信二维码
支付宝二维码