MySQL 数据文件迁移至新硬盘

文章目录

  • 一、SSD 初始化
    • 1.1 查看 SSD 信息
    • 1.2 分区
    • 1.3 格式化
    • 1.4 挂载与自动挂载
  • 二、迁移MySQL数据文件
    • 2.1 停止服务
    • 2.2 迁移数据文件目录
    • 2.3 修改目录权限
    • 2.4 新建软链接
    • 2.5 重启服务

最近项目遇到 MySQL 的效率瓶颈,尝试从配置及代码层面进行优化,但是并没有取得比较显著的效果,于是打算将MySQL迁移至固态硬盘,以解决效率瓶颈问题。

在迁移前,有两个要求:

  • 原有数据必须保留
  • 不更改 MySQL 的配置文件(因为集群服务器数比较多,更改配置文件会比较繁琐)

以下是具体步骤。


一、SSD 初始化

1.1 查看 SSD 信息

首先,输入 fdisk -l 命令查看 SSD 信息。

Disk /dev/sda: 240.1 GB, 240057409536 bytes
255 heads, 63 sectors/track, 29185 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disk identifier: 0x00e800e8

我们发现 SSD 已经插入,但此时它还没有分区,需要先进行分区操作。

1.2 分区

输入命令 fdisk /dev/sda 进行磁盘管理窗口,然后按照以下步骤完成硬盘分区:

  • 输入 n 按回车新建分区
  • 输入 p 选择新建主分区
  • 输入分区数量(1-4)
  • 设置分区起始柱面
  • 设置分区结束柱面
  • 输入 p 查看是否分区成功,若成功,会有如下分区信息:
    Device Boot      Start         End      Blocks   Id  System
    /dev/sda1               1       29185   234428481   83  Linux
    Partition 1 does not start on physical sector boundary.
    
  • 输入 w 按回车保存退出

1.3 格式化

mkfs.xfs   /dev/sda1

1.4 挂载与自动挂载

此时,新加入的硬盘还无法使用,需要我们完成挂载,具体步骤如下:

  • 在根目录下新建 data 文件夹
  • 输入命令 mount /dev/sda1 /data 完成挂载
  • 输入命令 df -h 查看文件系统使用情况,若挂载成功,会包含以下记录:
    /dev/sda1             224G  6.2G  218G   3% /data
    

为防止重启后挂载失效,我们还需要设置开机自动挂载,具体步骤如下:

  • 输入命令 vi /etc/fstab 进入 fstab 文件的编辑界面
  • 在文件底部新增如下记录:
    /dev/sda1	/data	xfs     defaults    0 0
    

二、迁移MySQL数据文件

2.1 停止服务

service mysql stop

2.2 迁移数据文件目录

MySQL 默认数据文件目录为 /var/lib/mysql,若不清楚可查看配置文件 /etc/my.cnf(也可能是 /usr/my.cnf)。

现在,我们输入以下命令,将数据文件迁移至新硬盘。如果数据文件比较大,这个过程可能会有点久。

mv /var/lib/mysql/ /data

2.3 修改目录权限

chown -R mysql:mysql /data/mysql/

2.4 新建软链接

我们在一开始的时候说过,想要迁移数据文件又不想修改配置文件,因此在这里需要通过软链接实现。

输入以下命令建立软链接:

ln -s /data/mysql /var/lib/mysql

若链接成功,可以查看到如下信息:

lrwxrwxrwx  1 root    root      11 Jan 16 18:11 mysql -> /data/mysql

2.5 重启服务

service mysql restart

至此,我们完成了迁移 MySQL 数据文件至新硬盘的工作!

你可能感兴趣的:(数据库)