数据库迁移全记录

前言:

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: 
 

强烈建议使用第二种方法导入。




你可能感兴趣的:(数据库迁移全记录)