针对 手动分表 + 符号链接 的详细操作流程(假设新机械硬盘已挂载到 /opt/mysql)

一、准备工作

1. 确认新硬盘挂载状态

# 查看挂载点是否正常
df -h | grep /opt/mysql

# 预期输出示例:
/dev/sdb1        13T  0% /opt/mysql

2. 确保MySQL配置允许符号链接

编辑 /etc/my.cnf,确认以下参数已启用:

[mysqld]
symbolic-links = 1        # 允许符号链接

innodb_file_per_table = 1 # 必须开启(每个表独立存储)

3. 创建子目录并设置权限

sudo mkdir -p /opt/mysql/tables
sudo chown -R mysql:mysql /opt/mysql

二、手动迁移单表到机械硬盘

1. 停止MySQL服务

sudo systemctl stop mysqld

2. 迁移指定表文件(以 big_table 为例)

# 进入MySQL数据目录
cd /home/mysql

# 假设数据库名为 `mydb`,表名为 `big_table`
# 移动表文件到机械硬盘(保留权限)
sudo rsync -av ./mydb/big_table.* /opt/mysql/tables/
没有rsync命令也可以使用cp -rf 

# 删除原文件(确保rsync成功后再操作)
sudo rm -f ./mydb/big_table.ibd ./mydb/big_table.frm

3. 创建符号链接

# 在MySQL数据目录中创建软链接
sudo ln -s /opt/mysql/tables/big_table.ibd /home/mysql/mydb/
sudo ln -s /opt/mysql/tables/big_table.frm /home/mysql/mydb/

# 验证链接
ls -l /home/mysql/mydb/big_table.*
# 正确输出应显示箭头指向目标文件:
lrwxrwxrwx 1 mysql mysql 25 Aug 10 10:00 big_table.ibd -> /opt/mysql/tables/big_table.ibd

4. 修复权限(关键步骤)

sudo chown -R mysql:mysql /home/mysql/mydb
sudo chown -R mysql:mysql /opt/mysql/tables

5. 启动MySQL并验证

sudo systemctl start mysqld

# 登录MySQL检查表状态
mysql -u root -p -e "USE mydb; CHECK TABLE big_table;"
# 预期输出:
# Table   Op       Msg_type  Msg_text
# mydb.big_table check    status    OK
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容