【mysql】mysql打包迁移到其他位置或服务器

描述

应用的一次迁移,直接把这个mysql文件夹打包拿了过来,好久没操作了,折腾了好久才把整个库运行起来,记录下,以免下次重蹈覆辙

应用场景

mysql备份迁移,mysql更换目录,mysql从一台服务器复制到另一台服务器

操作步骤

1.查看数据库文件在哪个目录存放,执行下面命令会输出你的数据库文件目录

show variables like ‘%datadir%’;

2.停止你的MySQL服务

service mysqld stop 或者 systemctl stop mysqld

3.打包mysql文件夹移动到新位置或新服务器,并解压

4.修改你数据库的配置文件中的 datadir 配置

一般在 /etc/my.cnf,修改 datadir 的值为你数据库移动的文件夹目录,我的目录为/opt/soft/mysql,我的my.cnf目录为/opt/soft/mysql/my.cnf
[mysqld]
port = 3306
socket = /tmp/mysql.3306.sock
basedir=/opt/soft/mysql/
datadir=/opt/soft/mysql/data

5.修改 /etc/init.d/mysqld 文件

basedir=/opt/soft/mysql
datadir=/opt/soft/mysql/data

如果没有这个文件,cp /opt/soft/mysql/support-files/mysql.server /etc/init.d/mysqld

6.启动 service mysqld start

[yyq subsys]$ service mysqld start
Unit mysqld.service could not be found.
Starting MySQL…[ OK ]
[yyq subsys]$

7.如果不发生异常,表示已经成功

这里根据情况确定是否保留数据库,保留直接永久性,不保留就可以把原先的文件删除了

迁移过程遇到的问题

待确认:

6.删除新的数据库文件夹下的2个文件:ib_logfile0 和 ib_logfile0(不删除启动会报错) (这是某文章写得,我这没报错,有报错可以删除)
7.chown -R 新建数据库目录 mysql:mysql (授权 mysql 该数据库目录)(这是赋权,我这里没有创建mysql用户,直接用的当前用户,不影响,如果有,需要赋权)

1.Unit mysqld.service could not be found.

没找到具体解决方案,我这好像不影响,影响再说……
MySQL问题-Unit mysqld.service could not be found.

2.ERROR! MySQL is not running, but lock file (/var/lock/subsys/mysql) exists

删除/var/lock/subsys/mysql 下的mysql文件即可
参考链接:
ERROR! MySQL is not running, but lock file (/var/lock/subsys/mysql) exists

3.bash: mysql: command not found

[yyq subsys]$ mysql -uroot -p
bash: mysql: command not found…
[yyq subsys]$ ln -s /opt/soft/mysql/bin/mysql /usr/bin
ln: failed to create symbolic link ‘/usr/bin/mysql’: Permission denied
[yyq subsys]$ exit
exit
[root subsys]# ln -s /opt/soft/mysql/bin/mysql /usr/bin

4.Warning: World-writable config file ‘/etc/my.cnf’ is ignored

原因:权限777,任何一个用户都可以改my.cnf,存在很大的安全隐患.

解决方法:授权644权限 chmod 644 /etc/my.cnf,重启mysql服务
参考链接:
Linux系统MySQL开启远程连接Warning: World-writable config file ‘/etc/my.cnf’ is ignored

5.ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/tmp/mysql.sock’

[yyq subsys]$ mysql -uroot -p
Enter password:
ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/tmp/mysql.sock’ (2)
[yyq subsys]$ cd /tmp/
[yyq tmp]$ exit
exit
[root@iaas92824-Computer subsys]# ln -s /tmp/mysql.3306.sock /tmp/mysql.sock

这个其实是我的my.cnf配置的socket存在问题 socket=/tmp/mysql.3306.sock
此处我建了个软连接解决的,其实该这里直接改下

参考链接:
MySQL数据库如何移动
【MySQL】centos7.6安装mysql5.7
菜鸟-MySQL 安装
MySQL移动数据库位置
MySql 报错ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/tmp/mysql.sock’ (2)

你可能感兴趣的:(MySQL)