恢复多个转储文件时,所有MySQL进程都挂起
我有一个Ruby程序,它使用20个线程的线程池来下载1000多个压缩的MySQL转储文件(“xxx.sql.gz”)。下载每个文件后,脚本将创建一个数据库并调用恢复多个转储文件时,所有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
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时,问题可能会发生。