备份—将大型mysql数据库传输/克隆到另一台服务器的最佳方法

o7jaxewo  于 2021-06-20  发布在  Mysql
关注(0)|答案(0)|浏览(452)

我正在一个共享的托管环境中运行一个web应用程序,它使用一个大约3gb大的mysql数据库。
为了进行测试,我在本地macos机器上设置了一个xampp环境。将联机数据库复制到我使用的本地计算机 mysqldump 然后直接将转储文件导入 mysql :

// Server
$ mysqldump -alv -h127.0.0.3 --default-character-set=utf8 -u dbUser -p'dbPass' --extended-insert dbName > dbDump.sql

// Local machine
$ mysql -h 127.0.0.3 -u dbUser -p'dbPass' dbName < dbDump.sql

这里唯一的优化就是使用 extended-insert . 然而,进口需要大约10个小时!
经过一番搜索,我发现在导入过程中禁用外部约束检查应该可以加快这个过程。因此,我在转储文件的开头添加了以下行:

// dbDump.sql
SET FOREIGN_KEY_CHECKS=0;
...

然而,这并没有造成任何重大差异。。。现在进口大约需要8个小时。更快,但仍然很长。
为什么导入数据要花这么多时间?有没有更好/更快的方法?
服务器不是最快的(共享主机…),但是导出/转储数据只需要大约2分钟。导出比导入快(没有语法检查,没有解析,只写…)并不奇怪,但是快了300倍(10小时对2分钟)?这是一个巨大的区别。。。
没有其他更快的解决方案吗?例如,复制二进制数据库文件?任何东西都比使用文本文件作为传输媒介要好。
这不仅仅是为了将数据传输到另一台机器上进行测试。我还创建数据库的每日备份。如果这将是必要的,以恢复数据库,这将是相当糟糕的,如果该网站是关闭了10个小时。。。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题