将Mysql数据库传输到另一台计算机

时间:2008-11-30 14:53:29

标签: mysql migration dump transfer

我在 Windows 计算机上填充并运行了mysql数据库,有没有工具将数据库传输到另一台计算机(运行 Ubuntu ) ?

否则我只需写一个script将所有数据库带入另一台计算机上的SQL插入。只是想节省一些时间:))

谢谢大家。

9 个答案:

答案 0 :(得分:31)

你说的工具已经存在:mysqldump

它转储到sql,然后您可以将其复制到另一台计算机并重新加载。

例如:

来源:

mysqldump -u username -p databasename > dumpfile.sql

然后使用ftp / rsync / whatever将文件移动到目标计算机,然后在那里创建一个空数据库以导入并运行:

mysql -u username -p databasename < dumpfile.sql

您还需要为可能已被转移的任何用户设置权限,因为它们不在数据库中。

或者,您可以从mysql数据目录复制文件 - 但mysqldump是最简单/最可靠的方式。

值得注意的是,当一个系统上的表名不在原始状态时,它们可能会区分大小写。它取决于两端的配置 - 特别是文件系统的区分大小写(或其他)。

答案 1 :(得分:17)

您可以使用单个命令将所有数据库导出,而不是逐个导出数据库。然后导入它们。 例如

mysqldump -u username -p --all-databases > c:\alldbs.sql

PS-最大的好处是你不会失去用户权限。

答案 2 :(得分:2)

磁盘上的文件在所有版本的MySQL之间100%兼容。你只需要注意文件名的大小写,因为它在Unix上很重要,而它有时只在Windows上运行。

记得在复制之前停止MySQL。 MyISAM文件可以在运行时复制,但是InnoDB文件并不安全,Windows的MySQL默认为InnoDB文件。

答案 3 :(得分:2)

使用mysqldump时要小心字符集,尤其是在Windows上。我更喜欢显式设置我的数据库使用的字符集,并使用--result-file =文件而不是使用&gt;操作员,以免有些东西被破坏。

答案 4 :(得分:1)

从MySQL文档中: http://dev.mysql.com/doc/refman/5.0/en/copying-databases.html

shell> mysqldump --quick db_name | gzip > db_name.gz

将包含数据库内容的文件传输到目标计算机并在那里运行以下命令:

shell> mysqladmin create db_name
shell> gunzip < db_name.gz | mysql db_name

答案 5 :(得分:0)

您可以使用任何gui工具进行备份,例如Windows上的Mysql Administrator(http://dev.mysql.com/downloads/gui-tools/,Ubuntu上的aptitude install mysql-admin)或Windows上的phpmyadmin(http://www.phpmyadmin.net/home_page/index.php,Ubuntu上的aptitude install phpmyadmin) ,然后在另一台计算机上恢复它。

答案 6 :(得分:0)

mysqldump应该正确地将其转储出来并保留数据库中任何内容的字符集。如果你不想要问题,建议转到相同版本的mysql。

mysqldump生成的文件不是文本文件,尽管有外观,不要用notepad.exe等编辑它,否则你最终会遇到麻烦。

由第三方gui工具(尤其是phpmyadmin)生成的转储通常不准确,无法正确恢复。

答案 7 :(得分:0)

我经常发现自己使用这种单行的一些变体来通过网络复制数据库。

mysqldump --opt --compress --user=username database | mysql --user=username2 --password=p2 --host=hostB -D database -C database

我最初在这里读到的内容:

http://www.igvita.com/2007/10/10/hands-on-mysql-backup-migration/

答案 8 :(得分:0)

使用新的mysql workbench(gui工具),您可以轻松导出数据库并将其导入要迁移的数据库。