MySQL数据库的迁移——使用*.sql文件操作方式

1 篇文章 0 订阅

迁移服务器的MySql数据库时,如果重新创建数据库,重新建表会很麻烦;

而且一些设置(比如头疼的字符编码)还要重新设置。

好在Mysql有数据库的导入导出机制,下面是参考的步骤,红色部分是常用的方法。


1. 概述

MySQL数据库的导入,有两种方法:
1) 先导出数据库SQL脚本,再导入;
2) 直接拷贝数据库目录和文件。
在不同操作系统或MySQL版本情况下,直接拷贝文件的方法可能会有不兼容的情况发生。
所以一般推荐用SQL脚本形式导入


下面分别介绍两种方法。


Windows下:

DOS 窗口
开始->运行-> cmd
导出命令为: 

mysqldump -u 用户名 -p   数据库名 > 数据库名.sql

如:mysqldump -u root -p   db_1 > db_1.sql

接下里有提示要输入你的数据库密码!

接下来就在当前目录下应该就会生成db_1.sql文件,将此文件拷贝下来,这就完成了数据库的导出。

打开这个文件,会发现这其实是一系列SQL语句组成的批处理文件,作用是还原这个数据库。

导入命令为:

mysql -u 用户名 -p 数据库名 < 数据库名.sql (找到这个文件的路径)

如:mysql  -u root -p   db_1 < xxx\db_1.sql



Linux下:

2. 方法一 SQL脚本形式

操作步骤如下:

2.1. 导出SQL脚本

在原数据库服务器上,可以用phpMyAdmin工具,

或者mysqldump(mysqldump命令位于mysql/bin/目录中)命令行,导出SQL脚本。

2.1.1 用phpMyAdmin工具

导出选项中,选择导出“结构”和“数据”,不要添加“DROP DATABASE”和“DROP TABLE”选项。
选中“另存为文件”选项,如果数据比较多,可以选中“gzipped”选项。
将导出的SQL文件保存下来。

2.1.2 用mysqldump命令行

命令格式
mysqldump -u用户名 -p 数据库名 > 数据库名.sql
范例:

mysqldump -uroot -p xxx > xxx.sql

如:mysqldump -uroot -p   db_1 > db_1.sql

接下里有提示要输入你的数据库密码!

接下来就在当前用户目录下(如/root)应该就会生成db_1.sql文件,将此文件拷贝下来,这就完成了数据库的导入。

打开这个文件,会发现这其实是一系列SQL语句组成的批处理文件,作用是还原这个数据库。

(导出数据库abc到abc.sql文件)

提示输入密码时,输入该数据库用户名的密码。

2.2. 创建空的数据库

通过主控界面/控制面板,创建一个数据库。假设数据库名为abc,数据库全权用户为abc_f。

2.3. 将SQL脚本导入执行

同样是两种方法,一种用phpMyAdmin(mysql数据库管理)工具,或者mysql命令行。

2.3.1 用phpMyAdmin工具

从控制面板,选择创建的空数据库,点“管理”,进入管理工具页面。
在"SQL"菜单中,浏览选择刚才导出的SQL文件,点击“执行”以上载并执行。

注意:phpMyAdmin对上载的文件大小有限制,php本身对上载文件大小也有限制,如果原始sql文件
比较大,可以先用gzip对它进行压缩,对于sql文件这样的文本文件,可获得1:5或更高的压缩率。
gzip使用方法:
# gzip xxxxx.sql
得到
xxxxx.sql.gz文件。

2.3.2 用mysql命令行

命令格式
mysql -u用户名 -p 数据库名 < 数据库名.sql
范例:
mysql -uroot -p abc < abc.sql (找到这个文件的路径)

如:mysql  -uroot -p db_1 < xxx\db_1.sql

(导入数据库abc从abc.sql文件)

提示输入密码时,输入该数据库用户名的密码。

3 方法二 直接拷贝

如果数据库比较大,可以考虑用直接拷贝的方法,但不同版本和操作系统之间可能不兼容,要慎用。

3.1 准备原始文件

用tar打包为一个文件

3.2 创建空数据库

3.3 解压

在临时目录中解压,如:
cd /tmp
tar zxf mydb.tar.gz

3.4 拷贝

将解压后的数据库文件拷贝到相关目录
cd mydb/
cp * /var/lib/mysql/mydb/

对于FreeBSD:
cp * /var/db/mysql/mydb/

3.5 权限设置

将拷贝过去的文件的属主改为mysql:mysql,权限改为660
chown mysql:mysql /var/lib/mysql/mydb/*
chmod 660 /var/lib/mysql/mydb/*
把mysqldump出来的数据修改一下。除了要把表增加上) TYPE=MyISAM CHARACTER SET gbk;以外,在下面再增加一句SET NAMES GBK;

这样,数据就可以平滑的导入4.1了,而不必怕出现乱码。


参考链接:http://blog.sina.com.cn/s/blog_4dea4ab101000a9w.html



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值