MySQL数据库的恢复问题

1.要恢复MySQL数据库的话,先要看你自己的table是建立在什么样的引擎上的。

使用show engines命令可以查看自己是MySQL支持什么引擎,下表是我的结果。

mysql> show engines;
+————+———+—————————————————————-+
| Engine | Support | Comment |
+————+———+—————————————————————-+
| MyISAM | YES | Default engine as of MySQL 3.23 with great performance |
| MEMORY | YES | Hash based, stored in memory, useful for temporary tables |
| HEAP | YES | Alias for MEMORY |
| MERGE | YES | Collection of identical MyISAM tables |
| MRG_MYISAM | YES | Alias for MERGE |
| ISAM | NO | Obsolete storage engine, now replaced by MyISAM |
| MRG_ISAM | NO | Obsolete storage engine, now replaced by MERGE |
| InnoDB | DEFAULT | Supports transactions, row-level locking, and foreign
keys |
| INNOBASE | YES | Alias for INNODB |
| BDB | YES | Supports transactions and page-level locking |
| BERKELEYDB | YES | Alias for BDB |
| NDBCLUSTER | NO | Clustered, fault-tolerant, memory-based tables |
| NDB | NO | Alias for NDBCLUSTER |
| EXAMPLE | NO | Example storage engine |
| ARCHIVE | YES | Archive storage engine |
| CSV | NO | CSV storage engine |
| FEDERATED | YES | Federated MySQL storage engine |
| BLACKHOLE | YES | /dev/null storage engine (anything you write to it
disappears) |
+————+———+—————————————————————-+

2.不同的引擎恢复方法不同,下面分别介绍;

MEMORY:不能备份,因为表中的所用内容都是放在内存中的,当MySQL服务重启后,所有的内容丢失;

MyISAM:可直接将数据库所在的目录copy/打包进行备份;

ARCHIVE:可直接将数据库所在的目录copy/打包进行备份;但是它只支持select和insert命令,不支持 auto inc,不能有索引和主键;

MERGE/MRG_MYISAM:可直接将数据库所在的目录copy/打包进行备份;只读的表;

参考:

mysql所支持的所有数据库引擎:
http://solutions.mysql.com/engines.html
介绍archive引擎的文章:
http://dev.mysql.com/tech-resources/articles/storage-engine.html
http://dev.mysql.com/doc/refman/5.1/en/archive-storage-engine.html
介绍merge引擎的文章:
http://dev.mysql.com/doc/refman/5.1/en/merge-storage-engine.html

3.InnoDB的问题

简单的说InnoDB不能通过直接copy数据库所在的目录来进行备份,所以数据库的引擎如果是它的话,

你最好经常使用mysqldump命令来备份你自己的数据库。

PS:关于InnoDB的备份的问题,我google了两天,没有完美的解决方案,有人说有一个 InnoDB Hot Backup

可以进行备份,我没有试过。

如果以上对你有帮助的话,请回复让我知道。