复制MySQL InnoDB文件

5
我知道复制mySQL InnoDB文件(frm等)会带来麻烦。但是,如果我按原样复制整个MSYSQL目录呢?bin、data、docs等等...这样会行吗?我相信应该可以。我是对的吗?
我认为除非明确设置,否则MySQL不会在MySQL文件夹之外做任何事情。
对于那些想知道我为什么需要这样做的人,我构建内部网络应用程序,通常为这些应用程序制作简单的1点击WINDOWS BASED安装程序。这意味着在虚拟机上准备WAMP/XAMPP服务器状态、配置和所有内容,然后对其进行快照。
3个回答

8

使用命令行备份到SQL文件:

mysqldump -u 用户名 -p --lock-tables 数据库1 > 数据库备份.sql

备份多个数据库:

mysqldump -u 用户名 -p --lock-tables --databases 数据库1 数据库2 数据库3 ... > 数据库备份.sql

备份所有数据库:

mysqldump -u 用户名 -p --lock-tables --all-databases > 数据库备份.sql

使用 "--lock-tables" 选项可以在备份时阻止对数据库的访问。

导入数据库:

mysql -u 用户名 -p 数据库1 < 数据库备份.sql

导入多个数据库:

mysql -u 用户名 -p < 数据库备份.sql


1
逻辑备份的方法总结得非常好。如果仅使用InnoDB,--single-transaction是--lock-tables的替代选择。这将对数据库进行一致性快照,因此不会锁定表。但需要确保表使用InnoDB。 - Mats Kindahl

5
是的,您可以使用此方法创建数据库备份,但在执行此操作之前需要停止服务器,否则可能会导致数据不一致的风险。如果您只有MyISAM表,则通常可以通过执行FLUSH TABLES WITH READ LOCK、复制目录和UNLOCK TABLES来完成备份。
有关更多信息,请参见http://dev.mysql.com/doc/mysql-backup-excerpt/5.0/en/backup-methods.html

谢谢大家。两个回答都很有帮助。但我会选择标准的文件复制方式,这样就不必为命令行烦恼了。复制粘贴无可比拟!哈哈对了,在复制之前我会先关闭服务器。 - BrownChiLD

2
对于InnoDB表,mysql>>data文件夹中有一个日志文件。将日志文件“ibdata1”复制到您的数据文件夹中,新安装的Phpmyadmin也会显示InnoDB表。否则,它只会显示MyISAM表。
但是需要注意一件事情,如果您当前的数据文件夹中已经有ibdata1文件,替换备份的ibdata1文件可能会对当前的InnoDB表造成问题,但如果您正在将备份数据库安装到新安装的Xampp/Wamp中,则可以正常工作。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接