Я написал скрипт для параллельного восстановления огромного файла mysqldump
https://gist.github.com/arunp0/4c34caee2432a6f11b91b99dfd2c5ef3
Можно ли разбить файл дампа на части и восстановить параллельно ?
Или Если есть предложения по улучшению, чтобы сократить время восстановления
Просто чтобы объяснить, как работает скрипт
sed -n -e '/DROP TABLE/,/--/p' "${restoreFile}" > "${tableMetaFile}"
Создает новый файл sql с DROP TABLE, CREATE TABLE Команды
затем этот файл восстанавливается (не параллельно) - все таблицы создаются до восстановления данных
# Creates new file with data only for one table (TableName)
grep -E "^INSERT INTO \`${TableName}\`" "${restoreFile}" > "tmp/${TableName}.sql"
# that file is split into as many chunks as the number of cpus
split -n l/$(nproc) --additional-suffix=.sql "tmp/${TableName}.sql" tmp/"${TableName}"/output.
# This comamnd is used to restore the file
pv -f tmp/meta/pre.sql "${item}" tmp/meta/post.sql | mysql --protocol=TCP --port "$PORT" --host "$HOST" -u "${USER}" -p"${PASSWORD}" -f "${DATABASE}" &