【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.如果不发生异常,表示已经成功

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

8.创建mysql软链接

ln -s /opt/soft/mysql/bin/mysql /usr/bin

迁移过程遇到的问题

待确认:

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
此处我建了个软连接解决的,其实该这里直接改下

6.Starting MySQL. ERROR! The server quit without updating PID file

service mysqld start启动报错

[tmn@ mysql]$ service mysqld start
Starting MySQL. ERROR! The server quit without updating PID file (/home/soft/mysql/data/xxxx.pid).

这个问题在我这里有两个原因,一个是我修改/etc/my.cnf后生效了,另一个是我建了个空数据目录可以了,利旧不行,让把mysql-bin.index删掉或注掉可以了

参考链接:
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提示:The server quit without updating PID file(…)失败
mysql启动报错:Starting MySQL… ERROR! The server quit without updating PID file

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

实施工程师木易

感谢支持

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值