mysql innodb数据库备份问题

easilyhe 发布于 2012/02/16 17:09
阅读 1K+
收藏 0

我在自己的win xp机器上安装好了mysql,是通过解压安装的,我my-small.ini文件改成了my.ini文件,自己做测试用。把skip-locking给注释条了,另外添加了federated和skip-external-locking,用命令mysqld --console,返回如下信息:

D:\mysql\bin>mysqld --console
120216 16:46:13  InnoDB: Initializing buffer pool, size = 8.0M
120216 16:46:13  InnoDB: Completed initialization of buffer pool
InnoDB: The first specified data file .\ibdata1 did not exist:
InnoDB: a new database to be created!
120216 16:46:13  InnoDB: Setting file .\ibdata1 size to 10 MB
InnoDB: Database physically writes the file full: wait...
120216 16:46:13  InnoDB: Log file .\ib_logfile0 did not exist: new to be created
InnoDB: Setting log file .\ib_logfile0 size to 5 MB
InnoDB: Database physically writes the file full: wait...
120216 16:46:14  InnoDB: Log file .\ib_logfile1 did not exist: new to be created
InnoDB: Setting log file .\ib_logfile1 size to 5 MB
InnoDB: Database physically writes the file full: wait...
InnoDB: Doublewrite buffer not found: creating new
InnoDB: Doublewrite buffer created
InnoDB: Creating foreign key constraint system tables
InnoDB: Foreign key constraint system tables created
120216 16:46:14  InnoDB: Started; log sequence number 0 0
120216 16:46:14 [Note] Event Scheduler: Loaded 0 events
120216 16:46:14 [Note] mysqld: ready for connections.
Version: '5.1.60-community'  socket: ''  port: 3306  MySQL Community Server (GPL)

成功启动,我的data目录多出了5MB的ib_logfile0和ib_logfile1,还有一个10mb的ibdata1。然后我在test数据库中创建了一张表t1,用的是myiasm引擎,用insert语句插入了一些数据。然后生成了t1.frm,t1.MYI,t1.MYD三个文件。然后我把这3个文件拷贝到别的mysql服务器的data\test目录,然后select,数据都可以显示出来。

然后我又在test数据库中创建了表t2,添加了 engine=innodb,使用innodb引擎,插入了些数据,可是test目录中却只有t2.frm文件,我加大数据的插入量,发现data目录中ibdata1文件大小在增长,t2.frm的大小却没有变化。接着我把t2.frm复制到别的mysql服务器的data\test目录,然后select t2这张表,mysql.exe给出了错误信息,说缺少文件。然后我又新建了一张表t3,同样使用innodb存储引擎,可是test数据库文件夹还是只多了一个t3.frm文件,心想,t3表的数据和t2表的数据存储地方一样,一样是被存储进了ibddata1文件中。我接着又新建一个数据库d1,然后在d1里建一张表t1,使用存储引擎innodb,可是d1的数据库文件夹还是只有t1.frm文件。

针对以上的情况,如何复制innodb存储引擎的数据库文件呢?

如果硬拷贝ibddata1,那么ib_logfile0和ib_logfile1这2个日志文件也要拷贝吗?

如果给my.ini添加了innodb_file_per_table选项,我发现innodb引擎建立的表会多出一个同表名的.ibd文件。可是把.ibd和.frm文件拷贝到其他机器上也会出现问题。

针对innodb引擎的表,对于有innodb_file_per_table选项和没有innodb_file_per_table选项的情况下,我们如何来正确复制以数据库为单位的表文件,就像myiasm引擎那样,直接复制就可以了。

加载中
0
antipro
antipro
码这么多字真是幸苦了,小编辑可不要辣手删贴呀。
0
皮总
皮总

我感觉innodb不能拷贝文件来实现

innodb 可以用  mysqldump 来备份, 同样可以只备份单个或多个表

http://hidinga.xicp.net/blog/download/?b=database&q=Mysql/Backup_Restore

0
杨延庆
杨延庆

为什么不考虑用客户端工具备份呢?看起来你是全备份啊

返回顶部
顶部