数据库迁移全记录
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:
强烈建议使用第二种方法导入。
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:
强烈建议使用第二种方法导入。
相关文章推荐
- (转)SqlServer2008开启客户端远程连接
- mysql 时间函数总结
- SQL优化
- mysql存储过程游标的运用,适合对游标刚学习者。
- redis之有序集合类型(Zset)——排行榜的实现
- SQL Server中数据行批量插入脚本的存储实现
- ubuntu hiredis环境搭建
- PGA资源的管理
- sqlserver2008导出表数据和表结构sql文件
- 将SQLAlchemy对象转化为dict
- powerdesigner数据库设计技巧
- SQL Server FileStream详解
- redis async client 与自有框架集成
- root用户不能使用psql或者pg_dump等pg命令
- JDBC中注册驱动为什么使用Class.forName
- [MySQL] 不能连接服务器 (10060错误)
- Oracle Dataguard的原理与基本配置
- 黄聪:MySql Host is blocked because of many connection errors; unblock with 'mysqladmin flush-hosts' 解决方法(转)
- mysql去除字段中空格及换行符
- Windows下MongoDB安装与设置