文章目录
最近项目遇到 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 数据文件至新硬盘的工作!