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]