数据迁移(Data migration)是指在存储类型、格式和计算机系统之间的数据转换。
项目使用的数据存储技术是MySQL,关于MySQL的迁移方案大致分为三类:
mysql提供了对数据迁移需求的支持手段,mysqldump是MySQL自带的逻辑备份工具,它的备份原理是通过协议连接到MySQL数据库,根据参数转换,将需要操作的数据查询出来,然后将数据转换成相应的查询语句,生成sql脚本文件,将sql脚本拷贝到迁移机器上,执行脚本文件即可。
这种数据迁移方案被官方所支持,也是较为推荐使用的方案。因为该方法采用sql脚本命令进行数据库迁移,兼容性最好,准确性最高,只是速率会较慢。
mysqldump命令参数说明
参数名 |
缩写 |
含义 |
–host |
-h |
服务器IP地址 |
–port |
-P |
服务器端口号 |
–user |
-u |
MySQL 用户名 |
–password |
-p |
MySQL 密码 |
–databases |
指定要备份的数据库 |
|
–all-databases |
备份mysql服务器上的所有数据库 |
|
–compact |
压缩模式,产生更少的输出 |
|
–comments |
添加注释信息 |
|
–complete-insert |
输出完成的插入语句 |
|
–lock-tables |
备份前,锁定所有数据库表 |
|
–no-create-db/–no-create-info |
禁止生成创建数据库语句 |
|
–force |
当出现错误时仍然继续备份操作 |
|
–default-character-set |
指定默认字符集 |
|
–add-locks |
备份数据库表时锁定数据库表 |
这种方式采用的是数据目录迁移,将数据库文件存档目录直接拷贝至要迁移的目标机器。
可以直接将mysql存储数据的目录copy下来,用ftp等方式上传至新主机的对应存储数据的目录下。该操作需要关闭两端的数据库服务,否则将产生错误。
该方法只支持myql的Myisam的表引擎。该方法迁移速度快,但因Mysql默认采用innodb引擎,适用场景少,且数据库版本升级后出错率高。
采用云主机的第三方迁移工具,将整个磁盘文件直接进行迁移。
该方法迁移速度快,对业务中断时间短,但成本高,一般为收费工具。
基于项目实验数据特点及迁移过程的要求,综合比对三种数据迁移方案的优缺点之后,项目采用的数据迁移方案为第一种,使用MySQL自带的逻辑备份工具mysqldump将项目数据库转成sql脚本文件,然后拷贝sql脚本文件在目标机器上进行执行,完成数据迁移工作。
在使用mysqldump进行迁移数据库之前,首先要将mysql数据库表锁定,将存在内存中的数据写入磁盘之中,命令如下
用mysqldump将数据库中数据导出为sql文件
命令参数说明:
参数 |
参数说明 |
mysqldump |
mysqldump命令 |
-uroot |
数据库使用root用户登录 |
-p1234 |
数据库密码1234 |
AISDB |
迁移数据库名为AISDB |
>d:\Game\test.sql |
sql文件的存储路径 |
将sql文件拷贝到目标机器上,采用MySQL提供的sql脚本执行支持技术,将数据迁移的sql文件再转换成数据导入到目标机器。
注意,因为数据迁移转换的sql脚本不能自动生成数据库,所以在转换前需要建好数据库,数据库名可以根据需求设定。
建库语句:
使用MySQL数据库提供的mysql命令,执行sql语句将数据迁移到目标机器数据库中,执行语句
命令参数说明:
参数 |
参数说明 |
mysql |
mysql命令 |
-uroot |
数据库使用root用户登录 |
-p1234 |
数据库密码1234 |
AISDB |
迁移数据库名为AISDB |
<d:\Game\test.sql |
执行sql脚本写入数据库 |