前言:
1)A服务器(mysql版5.5)上的数据库文件是放在系统盘的(心塞),配置mysql的时候千万要改数据库存放路径,系统盘的空间才20G,目前买了一台新的数据库服务器,只做数据处理,所以要迁移到新的服务器上。
2)目标服务器也是阿里云的ECS(mysql版本5.7),所以想直接通过内网复制把数据库的存放目录整体迁移,可是移过去后却是有部分表打不开,不知道为啥,为了没有mysql版本兼容等问题,还是走老套路了,目前
以下是实际操作过程:
在迁移之前要先把原服务器的Nginx暂停(mysql停了,数据就导不出来了,所以改成暂停Nginx)
一、导出数据库用mysqldump命令(注意mysql的安装路径,即此命令的路径):
1、导出数据和表结构:
为了防止有数据写入,先把服务器Nginx暂停
mysqldump -u用户名 -p密码 数据库名 > 数据库名.sql
#/usr/local/mysql/bin/ mysqldump -uroot -p abc > abc.sql
[root@iZ94i3b6byzZ ~]# mysqldump -uroot -p apiservice > /home/apiservice.sql Enter password:
敲回车后会提示输入密码
2、只导出表结构
mysqldump -u用户名 -p密码 -d 数据库名 > 数据库名.sql
#/usr/local/mysql/bin/ mysqldump -uroot -p -d abc > abc.sql
注:/usr/local/mysql/bin/ ---> mysql的data目录
二、将导出来的sql文件传输到目标数据库服务器
1)查看下这个文件有多大
[root@iZ94i3b6byzZ home]# ll -lh total 3.7G -rw-r--r-- 1 root root 3.7G Dec 24 14:16 apiservice.sql
2)通过阿里云内网传输,速度可以达到100M/s以上,我这边测试是这个速度
切换到B服务器上,输入如下命令
scp -r [email protected]:/home/apiservice.sql /data/执行后会提示输入A服务器的密码,成功即启动传输
用时2分钟
3)在B服务器上将刚刚传输过来的sql文件导入到数据库中
a)需要先建立一个数据库
我是用Navicat建立的,就不截图了
b)在B服务器上登录mysql
[root@hotdata data]# mysql -uroot -p Enter password:
c)导入到刚刚建立的数据库中
方法一:
(1)选择数据库
mysql>use apiservice;( 2 )设置数据库编码
mysql>set names utf8;( 3 )导入数据(注意 sql 文件的路径)
mysql>source /home/apiservice.sql;
方法二:
mysql -u用户名 -p密码 数据库名 < 数据库名.sql
[root@hotdata mysql]# mysql -uroot -p apiservice < /data/apiservice.sql Enter password:
强烈建议使用第二种方法导入。