mrgalaxy 发表于 2009-6-16 09:08:27

mysql数据库的拷贝移动

mysql数据库的拷贝移动
方法大致分为两种

一是将mysql里的数据库导出得到.sql数据文件,导出可以通过mysql中自带的mysqldump实现(mysqldump -uroot -p databsetest.sql)或者利用phpmyadmin等工具.在要导入数据的机器上执行.sql文件,即可实现数据的移动。

导入数据可以参照如下步骤:

(1)   运行-〉cmd,进入到mysql的bin目录下;

(2)   执行bin目录下的mysqld,启动mysql服务;

(3)   执行mysql -uroot –p”,输入密码,即如数据库;

(4)   执行”create database dbname character set gbk;”创建要到入的数据库;

(5)   执行exit,退出mysql;

(6)   执行” mysql -uroot -ppw --default-character-set=gbk -f dbnamedemo.sql”,导入数据;

(7)   执行”mysqladmin shutdown”,停止mysql.

但是如果不能导出.sql文件呢?比如原来机器宕掉,而只能从硬盘拷贝出数据文件,此时第一种方法不可行。

二是mysql数据库的拷贝移动,此方法即是直接将原mysqldata目录下的数据文件拷贝到新机器的相应目录中。但因为存储引擎的不同,会遇到一些问题。

在mysql中常用的有两种存储引擎InnoDB和MyiSAM:

MyISAM是默认存储引擎。它基于更老的ISAM代码,但有很多有用的扩展。(注意MySQL 5.1不支持ISAM)。每个MyISAM在磁盘上存储成三个文件。第一个文件的名字以表的名字开始,扩展名指出文件类型。.frm文件存储表定义。数据文件的扩展名为.MYD (MYData)。索引文件的扩展名是.MYI (MYIndex)。

对于MyISAM存储引擎,直接将data下与数据库名同名的文件夹拷贝至相应目录,重起数据库服务即可。

InnoDB存储引擎是默认地被允许的。如果你不想用InnoDB表,你可以添加skip-innodb选项到MySQL选项文件。被InnoDB存储引擎管理的两个重要的基于磁盘的资源是InnoDB表空间数据文件和它的日志文件。如果你指定无InnoDB配置选项,MySQL将在MySQL数据目录下创建一个名为ibdata1的10MB大小的自动扩展数据文件,以及两个名为ib_logfile0和ib_logfile1的5MB大小的日志文件。InnoDB给MySQL提供具有提交,回滚和崩溃恢复能力的事务安全(ACID兼容)存储引擎。

对于InnoDB存储引擎,mysql从MySQL 4.1.1开始,innodb支持Per-Table Tablespaces,当我们用类似于MyISAM中的方法时,发现会提示错误:

ERROR 1016 Can't open file 'academicbackground.ibd' (errno 1)

即使注释掉#innodb_file_per_table,可能还会寻找找.ibd文件。而且在data目录找不到后缀为.ibd的文件,疑惑??

于是想到InnoDB还有ibdata1,ib_logfile0,ib_logfile1三个文件,遂再次拷贝过来,还是不行,而且会导致mysql不能启动。再次疑惑??

最后,经过N次尝试,发现只需拷贝ibdata1文件即可,查网上很多人说InnoDB不能通过直接拷贝移动数据库,其实还是可以的,只需要移动数据库的.frm文件和ibdata1文件即可。重起数据库,数据无丢失。

另外对于数据损坏的情况,可以利用isamchk等工具进行修复


优惠虚拟主机,建站首选:详情点击进入
页: [1]
查看完整版本: mysql数据库的拷贝移动

免责声明:
本站所发布的一切破解补丁、注册机和注册信息及软件的解密分析文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。

Mail To:Admin@SybaseBbs.com