统信 UOS Server 20 修改 MySQL 数据目录(datadir)

一、环境说明

  • 操作系统:UnionTech OS Server 20 Enterprise

  • 数据库:MySQL 5.7

    注1:统信 UOS 查看系统版本方式

    # 方式一,查看发行版信息
    cat /etc/os-release
    # 方式二,查看详细版本信息
    cat /etc/os-version
    

    注2:以下操作需使用 root 用户或具有 sudo 权限的用户。

二、查看当前数据目录

登录 MySQL 控制台

mysql -uroot -p

在 MySQL 控制台执行如下语句,查看当前数据目录

show variables like 'datadir';

我的 MySQL 当前数据目录为: /var/lib/mysql

三、停止 MySQL 服务

# 停止服务
systemctl stop mysql
# 检查运行状态,确认服务停止
systemctl status mysql

四、创建目标数据目录,迁移数据

# 将数据迁到到 /mnt/hd1/ 目录下,迁移后的数据目录为 /mnt/hd1/mysql
# 使用 -a 选项,用户组、链接等都会保留,无需再修改用户组等操作
cp -av /var/lib/mysql /mnt/hd1/

# 修改当前数据目录名称,备份
mv /var/lib/mysql /var/lib/mysql_backup

五、修改配置文件

vim /etc/mysql/mysql.conf.d/mysqld.cnf

datadir = /var/lib/mysql 修改为 datadir = /mnt/hd1/mysql

六、创建保证通过脚本环境的最小目录结构

mkdir -p /var/lib/mysql/mysql
chown -R mysql:mysql /var/lib/mysql/mysql

七、启动 MySQL 服务

# 启动服务
systemctl start mysql
# 检查运行状态,确认服务启动
systemctl status mysql

八、验证数据目录是否修改成功

  • 验证配置
    登录 MySQL 控制台后,查看 datadir 变量是否为修改后的新目录 /mnt/hd1/mysql

    show variables like 'datadir';
    
  • 验证数据文件是否写入新目录(可选)
    登录 MySQL 控制台后,创建 testdb 数据库和 User 表。

    -- 创建数据库,数据目录下会新建 testdb 目录
    create database testdb;
    use testdb;
    -- 创建表,testdb 目录下会新建对应表结构文件和数据文件
    create table User (
      id int primary key auto_increment,
      name varchar(30) not null
    );
    

    完成 testdb 数据库和 User 表创建后,检查新数据目录下是否有 testdb 目录,testdb 目录下是否有 User 表的表结构文件和表数据文件。

    # 检查是否有 testdb 目录
    ls -l /mnt/hd1/mysql
    # 检查是否有 User 表的表结构文件和表数据文件
    ls -l /mnt/hd1/mysql/testdb
    

九、删除备份目录

检查一切正常后,可删除备份目录 /var/lib/mysql_backup

rm -fr /var/lib/mysql_backup

参考资料

[1] How To Change The MySQL Data Directory to Another Location on Ubuntu 16.04

posted @ 2022-08-25 10:27  qifenghao  阅读(875)  评论(0编辑  收藏  举报