mysql数据目录迁移

Isve丨丶勿言
Isve丨丶勿言
发布于 2023-06-29 / 91 阅读
0
0

mysql数据目录迁移

ubuntu22.04下mysql-server-8.0数据目录迁移方法

前言

我习惯于把mysql的数据目录放到其他硬盘,以便于使得系统出问题不得不重装后,数据仍然能无损,而在我本次恢复数据目录时,遇到了一些问题,再次记录,供以后参考

系统环境

  • Ubuntu 22.04
  • mysql-server-8.0
  • 数据目录放在外挂的usb固态硬盘,usb固态硬盘挂载路径为/data,而mysql的数据目录为/data/mysql

恢复(目录迁移)过程

1. 安装mysql,安装后不用启动

sudo apt install mysql-server-8.0

如果已经安装,则将其停止

sudo service mysql stop

2. 修改mysql涉及数据目录相关配置,此处参考 Ubuntu 系统mysql数据库目录迁移

将mysql数据目录/data/mysql所有上层目录/data的权限改为777,否则在启动mysql的时候会出现“Error: 13 权限不足”的错误

sudo chmod 777 /data

管理员权限编辑/etc/mysql/mysql.conf.d/mysqld.cnf。把datadir = /var/lib/mysql修改为

datadir = /data/mysql

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

管理员权限编辑/etc/apparmor.d/usr.sbin.mysqld。把# Allow data files dir access下面的/var/lib/mysql/ r,修改为/data/mysql/ r,;把/var/lib/mysql/** rwk,修改为/data/mysql/** rwk,

sudo vim /etc/apparmor.d/usr.sbin.mysqld

管理员权限编辑/etc/apparmor.d/abstractions/mysql。把/var/lib/mysql{,d}/mysql{,d}.sock rw,修改为/data/mysql{,d}/mysql{,d}.sock rw,

sudo vim /etc/apparmor.d/abstractions/mysql

重启apparmormysql服务。

sudo service apparmor restart
sudo service mysql restart

3.踩坑说明

  1. 配置修改后,一定要记得先重启apparmor服务,否则mysql无法启动,会报错
2023-06-29T06:03:22.579599Z 0 [System] [MY-010910] [Server] /usr/sbin/mysqld: Shutdown complete (mysqld 8.0.33-0ubuntu0.22.04.3)  (Ubuntu).
2023-06-29T06:03:23.077481Z 0 [Warning] [MY-010091] [Server] Can't create test file /data/mysql/mysqld_tmp_file_case_insensitive_test.lower-test
2023-06-29T06:03:23.077536Z 0 [System] [MY-010116] [Server] /usr/sbin/mysqld (mysqld 8.0.33-0ubuntu0.22.04.3) starting as process 10218
2023-06-29T06:03:23.080575Z 0 [Warning] [MY-010091] [Server] Can't create test file /data/mysql/mysqld_tmp_file_case_insensitive_test.lower-test
2023-06-29T06:03:23.080585Z 0 [Warning] [MY-010159] [Server] Setting lower_case_table_names=2 because file system for /data/mysql/ is case insensitive
mysqld: File './binlog.index' not found (OS errno 13 - Permission denied)
  1. 新的mysql目录用户和用户组必须都是mysql

评论