恢复多个转储文件时,所有MySQL进程都挂起

恢复多个转储文件时,所有MySQL进程都挂起,mysql,mysqldump,Mysql,Mysqldump,我有一个Ruby程序,它使用20个线程的线程池来下载1000多个压缩的MySQL转储文件(“xxx.sql.gz”)。下载每个文件后,脚本将创建一个数据库并调用 gzip -dc xxx.sql.gz | cat - commit.txt | mysql -D db_name 恢复转储文件 commit.txt追加commit添加到SQL文件内容 问题是,有时所有用于恢复转储的MySQL进程都会在随机时间挂起 顺便说一下,我用的是ramdisk 我的cnf是: [mysqld] autoco

我有一个Ruby程序,它使用20个线程的线程池来下载1000多个压缩的MySQL转储文件(“xxx.sql.gz”)。下载每个文件后,脚本将创建一个数据库并调用

gzip -dc xxx.sql.gz | cat - commit.txt | mysql -D db_name
恢复转储文件

commit.txt追加
commit自动提交
已关闭,因此将代码>添加到SQL文件内容

问题是,有时所有用于恢复转储的MySQL进程都会在随机时间挂起

顺便说一下,我用的是ramdisk

我的cnf是:

[mysqld]

autocommit=0

innodb_buffer_pool_size=16G

max_allowed_packet=256M

innodb_file_per_table=1

innodb_flush_log_at_trx_commit = 2

innodb_log_file_size = 256M

innodb_flush_method = O_DIRECT

innodb_use_native_aio = 0

tmpdir=/mnt/ramdisk

datadir=/mnt/ramdisk/mysql

socket=/mnt/ramdisk/mysql/mysql.sock

symbolic-links=0

log-error=/var/log/mysqld.log

pid-file=/var/run/mysqld/mysqld.pid

您的RAM磁盘是否已满?这很容易一次影响所有线程。我不认为这是原因,因为我有超过200 GB的RAM和160GB用于ramdisk,当只有大约10GB写入ramdisk时,问题可能会发生。