首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MariaDB/MySQL:通过网络远程从转储(.sql)文件导入

MariaDB/MySQL:通过网络远程从转储(.sql)文件导入
EN

Database Administration用户
提问于 2020-03-10 08:58:37
回答 1查看 384关注 0票数 0

在按照Rolando的回答:my.inihttps://dba.stackexchange.com/a/83385/191579设置了40GB+文件之后,今天我只在2-3小时内成功地导入了40GB+ sqldump文件。在另一台服务器上;昨天设置了类似的设置并导入了20+GB数据,但是今天仍然在运行,我检查它只能导入不到一半的内部数据(70+百万来自200+百万行)。

这两台服务器的规范如下:

服务器1-在2-3小时内导入40+GB数据:

英特尔Xeon E3 3.00GHz

16

MariaDB 10.3

服务器2-导入20+GB数据仅能在24小时内导入不到一半:

英特尔Xeon E3 3.40GHz

16

MariaDB 10.3

显然,这两台服务器都有几乎相同的规格,但我不明白为什么另一台需要这么长时间才能转储。这两个数据库都不是生产/实时数据库。

我通常选择在本地对大文件进行导入/转储,因为我的印象是这样做要快得多(很明显),但是这个案例让我想到了另一个问题。我目前正在将转储文件放入我的PC中,将其分割成更小的块,在等待的时候,我只是想知道如果我确实通过网络(LAN等)从不同的pc导入,进程将取决于远程服务器pc规范还是本地pc规范?

编辑:我环顾四周发现了这个:https://stackoverflow.com/a/12439368/10910692

使用:mysqldump --extended-insert=FALSE要注意,多个插入比一个大插入要慢。

我随此设置抛出的20+GB。可能是原因吗?

服务器1和服务器2上的my.ini设置:

代码语言:javascript
复制
[mysqld]

innodb_buffer_pool_size=1024M
innodb_file_per_table=1
skip-host-cache
skip-name-resolve

innodb_log_buffer_size = 256M
innodb_log_file_size = 1G
innodb_write_io_threads = 16
innodb_flush_log_at_trx_commit = 0
innodb_doublewrite=0
EN

回答 1

Database Administration用户

回答已采纳

发布于 2020-03-21 03:08:40

经过几次测试后,我得出结论,服务器本身(我想导入的地方)由于有大量的进程正在进行,所以速度很慢。我认为这从一开始就很明显,但我只是感到沮丧,因为我在这两台机器上设置了相同的设置,并且获得了一个非常不同的基准。

我做的最后一次测试是使用两种方法将200 to的sql转储文件大小导入到目标服务器(服务器2);本地和远程;针对我在本地的另一个服务器单元(服务器1)标记的工作台。很少有更多的细节:

  1. 服务器1- CPU负载20% - 30%和内存负载50% - 60%的导入到MariaDB 10.3上,对200 20的sql转储文件花费不到2分钟。
  2. 服务器2- CPU负载50% - 60%和内存负载50% - 60% 导入到MariaDB 10.3上,200 18转储文件占用最多8分钟locally.导入MariaDB 10.3,200 18转储文件最多需要18分钟。

正如我前面提到的,这两台服务器都具有相似的my.ini设置。我没有进一步研究服务器2速度慢的原因,但是在发现这会导致极慢的插入之后,当我放弃转储文件的mysqldump --extended-insert=FALSE设置时,导入执行得更好!另一个明显的原因可能是服务器很忙(提示: CPU负载)。另外,我需要导入的数据实际上是供另一方使用的,但是由于我们和他们之间的时差是6小时(我刚刚发现这一点!),我没有积极地追求这一点。

票数 0
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/261575

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档