我有一个mysql
数据库填充并在Windows计算机上运行,是否有任何工具可以将数据库传输到另一台计算机(运行Ubuntu)?
否则,我将只写一个script
将所有数据库放入SQL
并将其插入另一台计算机。只是想节省一些时间:)
谢谢你们。
你说的工具已经存在:mysqldump
它转储到 sql,然后您可以将其复制到另一台机器并重新加载。
例如:
来源:
mysqldump -u username -p databasename > dumpfile.sql
然后使用 ftp/rsync/whatever 将文件移动到目标机器,并在那里创建一个空数据库以导入并运行:
mysql -u username -p databasename < dumpfile.sql
您还需要为可能已转移的任何用户设置权限,因为它们不在数据库中。
或者,您可以从 mysql 数据目录复制文件 - 但 mysqldump 是最简单/最可靠的方法。
值得注意的是,当它们不在原始系统上时,表名在一个系统上可能会区分大小写。它取决于两端的配置 - 特别是文件系统的区分大小写(或其他)。
您可以使用一个命令将它们全部导出,而不是一个一个地导出数据库。然后导入它们。例如。
mysqldump -u username -p --all-databases > c:\alldbs.sql
PS-最大的好处是你不会失去用户权限。
磁盘上的文件在 MySQL 的所有版本之间是 100% 兼容的。你只需要注意文件名的大小写,因为它在 Unix 上很重要,而它有时只在 Windows 上有用。
并且记住在复制之前停止 MySQL。MyISAM 文件可以在运行时进行复制,但 InnoDB 文件这样做并不安全,Windows 的 MySQL 默认为 InnoDB 文件。
使用 mysqldump 时要小心字符集,尤其是在 Windows 上。我更喜欢显式设置我的数据库使用的字符集并使用 --result-file=file 而不是使用 > 运算符,以免某些东西被破坏。
来自 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
您可以使用任何 gui 工具进行备份,例如 Mysql Administrator( Windows 上的http://dev.mysql.com/downloads/gui-tools/,Ubuntu上的 aptitude install mysql-admin)或 phpmyadmin(http://www. phpmyadmin.net/home_page/index.php在 Windows 上,aptitude install phpmyadmin 在 Ubuntu 上),然后在另一台计算机上恢复它。
mysqldump 应该正确地转储它并保留数据库中任何内容的字符集。如果您不想出现问题,建议您使用相同版本的 mysql。
mysqldump 生成的文件不是文本文件,尽管看起来,不要用 notepad.exe 等编辑它,否则你会遇到麻烦。
第三方 gui 工具(尤其是 phpmyadmin)生成的转储通常不准确,不一定能正确恢复。
我经常发现自己使用这种单线的一些变体通过网络复制数据库。
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/
使用新的mysql工作台(gui工具),您可以轻松导出数据库并将其导入到您要迁移的数据库中。