gpt4 book ai didi

mysql - MyDumper/MyLoader 无法将大型表导入 Azure MySql 数据库

转载 作者:行者123 更新时间:2023-12-02 06:12:34 25 4
gpt4 key购买 nike

我正在将大型 mysql 数据库迁移到“Azure 数据库 voor MySQL 灵活服务器”。该数据库有几张大于1GB的表,最大的一张达到200GB。所有表都是InnoDB表。

由于表的大小,普通的 mysql 转储不起作用,因此按照此处的建议,我求助于 MyDumper/MyLoader:https://learn.microsoft.com/en-us/azure/mysql/concepts-migrate-mydumper-myloader

我使用以下命令转储了其中一个大型表(31GB 表):

mydumper --database mySchema \ 
--tables-list my_large_table
--host database
--user root
--ask-password
--compress-protocol
--chunk-filesize 500
--verbose 3
--compress
--statement-size 104857600

然后,我将文件复制到与 Azure 数据库位于同一区域/区域的虚拟机,并使用以下命令开始导入:

myloader --directory mydumpdir \
--host dbname.mysql.database.azure.com \
--user my_admin \
--queries-per-transaction 100 \
--ask-password \
--verbose 3 \
--enable-binlog \
--threads 4 \
--overwrite-tables \
--compress-protocol

MyLoader 似乎开始加载并产生以下输出:

** Message: 08:37:56.624: Server version reported as: 5.7.32-log
** Message: 08:37:56.674: Thread 1 restoring create database on `mySchema` from mySchema-schema-create.sql.gz
** Message: 08:37:56.711: Thread 2 restoring table `mySchema`.`my_large_table` from export-20220217-073020/mySchema.my_large_table-schema.sql.gz
** Message: 08:37:56.711: Dropping table or view (if exists) `mySchema`.`my_large_table`
** Message: 08:37:56.979: Creating table `mySchema`.`my_large_table` from export-20220217-073020/mySchema.my_large_table-schema.sql.gz
** Message: 08:37:57.348: Thread 2 restoring `mySchema`.`my_large_table` part 3 of 0 from mySchema.my_large_table.00003.sql.gz. Progress 1 of 26 .
** Message: 08:37:57.349: Thread 1 restoring `mySchema`.`my_large_table` part 0 of 0 from mySchema.my_large_table.00000.sql.gz. Progress 2 of 26 .
** Message: 08:37:57.349: Thread 4 restoring `mySchema`.`my_large_table` part 1 of 0 from mySchema.my_large_table.00001.sql.gz. Progress 3 of 26 .
** Message: 08:37:57.349: Thread 3 restoring `mySchema`.`my_large_table` part 2 of 0 from mySchema.my_large_table.00002.sql.gz. Progress 4 of 26 .

当我在 Azure 数据库上执行“show full processlist”命令时,我看到 4 个连接的线程,但我看到它们都在休眠,似乎什么也没发生。

当我不终止该命令时,它会在很长一段时间后出错:

** (myloader:31323): CRITICAL **: 17:07:27.642: Error occours between lines: 6 and 1888321 on file mySchema.my_large_table.00002.sql.gz: Lost connection to MySQL server during query
** (myloader:31323): CRITICAL **: 17:07:27.642: Error occours between lines: 6 and 1888161 on file mySchema.my_large_table.00001.sql.gz: MySQL server has gone away
** (myloader:31323): CRITICAL **: 17:07:27.642: Error occours between lines: 6 and 1888353 on file mySchema.my_large_table.00003.sql.gz: Lost connection to MySQL server during query
** (myloader:31323): CRITICAL **: 17:07:27.642: Error occours between lines: 6 and 1888284 on file mySchema.my_large_table.00000.sql.gz: MySQL server has gone away

发生这些错误后,表仍然是空的。

我在转储/加载时尝试了一些不同的设置,但没有成功:

  • 仅启动 1 个线程
  • 制作更小的 block (100mb)
  • 删除--压缩协议(protocol)

我还尝试导入一个较小的表(400MB,每 block 100MB),设置完全相同,而且确实有效。

我尝试将表导入本地计算机上的 mysql 数据库,在那里我遇到了完全相同的问题:大表(31GB)导入创建了 4 个休眠线程并且没有执行任何操作,而较小的表导入(100MB block 中的 400MB)确实有效。所以问题似乎与Azure数据库无关。

我现在不知道问题是什么,有什么想法吗?

最佳答案

我遇到了类似的问题,对我来说,最终是我要恢复的实例太小,服务器一直内存不足。尝试暂时将实例大小增加到更大的大小,导入数据后缩小实例的大小。

关于mysql - MyDumper/MyLoader 无法将大型表导入 Azure MySql 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71155980/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com