Восстановите данные из огромного файла mysqldump - PullRequest
0 голосов
/ 14 февраля 2020

Я написал скрипт для параллельного восстановления огромного файла 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}"  &
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...