数据库非常大(大于400MB),所以dump> SCP>源被certificate是工作时间和小时数。
有更容易的方法吗? 我可以直接连接到数据库,并从新的服务器导入?
您可以简单地复制整个/ data文件夹。
看看高性能的MySQL – 传输大文件
使用可以使用ssh直接通过互联网传输数据。 首先设置无密码登录的SSH密钥。 接下来,尝试这样的事情:
$ mysqldump -u db_user -p some_database | gzip | ssh someuser@newserver 'gzip -d | mysql -u db_user --password=db_pass some_database'
笔记:
db_user
更改为用户用户和some_database
到您的数据库。 someuser
是(Linux) 系统用户 ,而不是MySQL用户。 --password
,因为有了mysql提示你将会是很多头痛的事情。 您可以设置一个MySQL从属复制,并让MySQL复制数据,然后使从属为新的主节点
400M真的不是一个大型的数据库; 将其传输到另一台机器只需要几分钟的时间,在一个100M的网络上。 如果您的机器之间没有100M的网络,那么您遇到了很大的麻烦!
如果他们运行的是完全相同版本的MySQL,并且具有相同(或类似的ENOUGH)my.cnf,并且只需要整个数据的副本,则跨服务器的整个数据目录复制是安全的(当两个实例都停止,明显)。 你当然需要首先删除目标机器的数据目录,但是你可能不关心这个。
备份/恢复通常是由于恢复不得不重建表结构,而不是文件副本。 通过直接复制数据文件,可以避免这种情况(受上述限制)。
如果您正在迁移服务器:
转储文件可能非常大,所以最好在发送或使用scp的-C标志之前对其进行压缩。 我们的文件传输方法是创建一个完整的转储,在其中刷新增量日志(使用–master-data = 2 – 冲洗日志,如果你有它们,请检查你是否搅乱了任何从属主机)。 然后我们复制转储并播放它。 之后我们再次刷新日志(mysqladmin flush-logs),取最近的增量日志(不应该很大),只播放它。 继续这样做,直到最后一个增量日志非常小,以便您可以停止原始计算机上的数据库,复制最后一个增量日志,然后播放它 – 应该只需要几分钟。
如果您只想将数据从一台服务器复制到另一台服务器:
mysqldump -C --host=oldhost --user=xxx --database=yyy -p | mysql -C --host=newhost --user=aaa -p
您将需要正确设置数据库用户并提供对外部主机的访问。
尝试使用MySQL控制台导入新服务器上的转储,而不是一个辅助软件
我没有这样做与MySQL的经验,但对我来说,似乎瓶颈是传输实际的数据?
4oo MB没那么多。 但是,如果转储 – > SCP很慢,我不认为从删除框连接到数据库服务器会更快?
我建议转储,压缩,然后通过网络复制或刻录到磁盘并手动传输数据。 压缩这样的转储很可能会给你带来相当好的压缩率,因为很可能是很多重复数据。
如果您只复制服务器的所有数据库,请复制整个/data
目录。
如果您只是复制一个或多个数据库并将其添加到现有的mysql服务器:
/data/databasename
的数据库文件夹复制到新的服务器/data/databasename
我喜欢在从旧服务器导出数据库之后使用BigDump:交错的Mysql转储导入器。
有一点需要注意,如果您不设置导出选项(即创建的查询的最大长度)与您的新服务器可以处理的加载相关,则只会失败,您将不得不再次尝试不同的参数。 就我个人而言,我设置了大约25,000,但这只是我。 测试一下,你会得到它的挂钩。