记录一次mysql的数据迁移问题

本来有两个方式

1.mysqldump

2.select * from table_1 into outfile

结果好奇心驱使想尝试直接复制data目录

源:centos,mysql 5.6

目标:ubuntu,mysql 5.7

操作

centos:

复制本地data数据到目标机器

rsync -av /var/lib/mysql root@192.168.235.133:/data/

/data目录下会多一个mysql目录

 

ubuntu:

修改basedir

vim /etc/mysql/mysql.conf.d/mysqld.cnf
修改
#basedir   /var/lib/mysql
basedir /data/mysql

修改basedir权限

chown -R mysql:mysql /data/mysql

chmod -R 777 /data/mysql  (此操作可以换权限,此处安全性不重要)

不修改的话,可能会报错Error 13

 

修改AppArmor

其实Ubuntu下默认安装了并存在一个AppArmor的服务,这个服务是用于访问控制的。在以apt-get安装mysql时,在AppArmor的配置中也写入了针对mysql的权限控制的配置,导致mysqld_safe与mysqld进程无法读写新移植的datadir目录中的文件,也同样导致了mysql_install_db无法在对应的mysql schema下创建文件。

所以相应的, 我们只需要修改对应的配置文件,然后重新写加载AppArmor就可以了。我们通过

vi /etc/apparmor.d/usr.sbin.mysqld

然后修改mysql部分中,将原来的数据目录替换成迁移后的新目录

#/var/lib/mysql/ r,
#/var/lib/mysql/** rwk,
/data/mysql_data/ r,
/data/mysql_data/** rwk,

然后重新加载AppArmor

/etc/init.d/apparmor reload

之后再重新启动mysql服务就可以了。

参考自
https://blog.csdn.net/harleylau/article/details/81222949

ubuntu上不修改的话,可能会启动失败

 

mysql -uroot -p

mysql>show variables like '%dir%';

报错
Table 'performance_schema.session_variables' doesn't exist
终端命令行输入
mysql_upgrade -u root -p --force
输入密码

mysql>show variables like '%dir%';

报错
Native table 'performance_schema'.'session_variables' has the wrong structure
mysql命令行输入
mysql>set @@global.show_compatibility_56=ON;

 

目前在ubuntu上遇到的问题通过如上操作解决。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值