(最新)ubuntu20.04LTS版迁移mysql8.0数据库的方法
之前mysql通过apt安装的,运行一段时间之后,发现根分区过小,有必要将占用空间大的数据库迁移到home分区,于是,有了这篇文章。
微信号:xfiles_sky(喜欢网络技术的朋友可以加我微信一起研讨学习进步!)
<!--还没有主机的同学,可以通过下面优惠购买,每人只能买一台,活动过了就没有了。-->
优惠上云,来阿里云·云小站www.aliyun.com<!--阿里云年末回馈,新老用户都支持-->
<!--1核2G1M40G盘,89元/1年,-->
<!--1核2G1M40G盘,229元/3年,-->
<!--2核4G5M40G盘,899元/3年,-->
<!--2核8G5M40G盘,1399元/3年-->
交待一下环境:操作系统:ubuntu20.04LTS版,数据库:mysql 8.0.20
第一步:为了保证数据的完整性,先暂时停掉正在使用的数据库
systemctl stop mysql
第二步:找到mysql8.0配置文件所在地,默认配置所在地有所变更,变成/etc/mysql/mysql.conf.d/mysqld.conf,同时查看这个配置文件,看数据库存放的路径在哪里,本文中确定的是在/var/lib/mysql下。
命令:
sudo su
cd /etc/mysql/mysql.conf.d/
cat mysqld.conf
第三步:因为是要将数据迁移到home分区下,所以,在home分区下新建一个目录来存放数据,并将新建目录写入mysql的配置文件中。
命令:
cd ~/
mkdir mysql_data
nano /etc/mysql/mysql.conf.d/mysqld.conf
为了安全,先注释掉datadir项,并重写一项datadir = /home/wlp2s0/mysql_data
第四步,将源数据复制到目标文件夹,同时给目标目录赋于权限。
命令:
cp -a -r /var/lib/mysql/* /home/wlp2s0/mysql_data
#一定要跟上 -a参数,不然复制过去的目录没有权限 chown -R mysql:mysql /home/wlp2s0/mysql_data
第五步,要通过在默认目录和新位置之间创建别名来告诉AppArmor让MySQL写入新目录。需要编辑AppArmor alias
文件
命令:
nano /etc/apparmor.d/tunables/alias
在文件底部添加
alias /var/lib/mysql/ -> /mnt/volume-nyc1-01/mysql/,
第六步,保存后退出,使更改生效,要重新启动apparmor
命令:
systemctl restart apparmor
第七步,重启mysql
命令:
systemctl start mysql
查看mysql状态
systemctl status mysql
第八步,检查mysql使用的是不是目标目录里的文件。
命令:
mysql -u wlp2s0 -p
show global variables like "%datadir%";
第九步,至此数据迁移到目标目录完成,可以删掉旧目录了。
rm -rf /var/lib/mysql