我正在更换 VPS 提供商,我想将一台服务器上的 MySQL 表数据转移到另一台服务器上。我目前每天都会对所有表进行 mysqldump,最大的表有超过 1000 万行,转储文件大小约为 4-5GB。导入这些数据需要很多个小时,我想知道是否有更快的方法来完成这项工作 - 只需 10 或 15 分钟,而不是几个小时。谢谢!
编辑:我的所有表都是 InnoDB
答案1
为什么不使用 xtrabackup?您的编辑表明您的表是 InnoDB。正如您所描述的那样,xtrabackup 可以很好地满足您的需求。
答案2
如果是 Innodb,这种方法就行不通了。如果 Mysql 版本相同,您可以尝试将文件从 /var/lib/mysql(取决于您的发行版)从一个 vps 移动到另一个。
例如,在 Debian GNU/Linux 中,这种方法可行,但您还需要更改 debian-sys-maint mysql 用户的密码。您可以这样做: 如果您的 mysql 次要版本不同,这种方法可能会有效,但理论上可能会出现一些错误。
mysql -uroot -p -e "GRANT ALL PRIVILEGES ON . TO 'debian-sys-maint'@'localhost' IDENTIFIED BY '$(sed -n '/password/p;' /etc/mysql/debian.cnf | sed '1d;s/.* //')' WITH GRANT OPTION;"
答案3
使用MySQL 复制这里。您不应该遇到版本问题 - 因为您拥有 VPS 而不仅仅是托管,我理解得没错。如果第二台机器的性能不会比另一台机器差很多 - 从机应该只比主机慢几秒。
从第一个 VPS 退出时不要忘记停止复制(有人可能会在 Master 上发出 DROP,这将复制到 Slave)。
尝试为未来做好规划 - 也许一些 MyISAM 表不足以应对更大的流量 - 您可以让 MySQL Slave 在与 Master 不同的引擎上部署一些表。