您的位置:首页 > 数据库

数据库迁移全记录

2015-12-24 15:07 288 查看
前言:
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 root@10.45.177.154:/home/apiservice.sql /data/执行后会提示输入A服务器的密码,成功即启动传输如果端口号不是默认的端口号,则需要指定端口号#ssh: connect to host 10.29.59.56 port 22: Connection refused
#如果是非22端口,则需要指定端口号
scp -P 4600 root@10.29.59.56:/hotdata/97jiayou.sql /data/


用时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:  
强烈建议使用第二种方法导入。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: