当我需要将我的数据库从一台机器复制到另一台机器时,我通常会执行 mysqldump -u root -ppassword database > backup.sql 然后在另一台机器上执行 mysql -u root -ppassword databsae < backup.sql
但是我现在正在处理一个 1 GB 的 sql 文件,这需要几个小时!还有其他方法可以做到这一点吗?
不幸的是,问题中缺少太多变量。db datadir 和文件是否在同一个磁盘挂载上?转储是否使用扩展插入?(假设没有)
If a textual dump is the only solution (meaning you don't wanna use xtrabackup or an LVM snapshot) then you want to make you musqldump use extended insert (so one insert for each whole table, faster) and try to have the file on a separate mount from the data directory to reduce disk seeks. For that point on, it's all IO bound and the disk speed is your bottleneck.
我个人使用 HeidiSQL 来管理我的备份。在工具中设置连接后,您可以非常快速地从 source1 备份到 source2。
如果您使用的是 Windows,则您的数据位于如下路径:
C:\Program Files\MySQL\MySQL 服务器 5.0\data
在那里,您将拥有包含数据库名称的文件夹,您可以将这些文件夹复制并粘贴到其他计算机上,并且应该可以使用。
停止服务器,只需复制存档并压缩 db 目录中的文件,在目标机器上执行相反的操作。您需要为新服务器上的数据库分配权限等。在可行的情况下复制 mysql 数据库可能会让您陷入混乱。
虽然这不是备份,但不要将其用作一个备份,更像是一个图像。